Ir para conteúdo
Fórum Script Brasil
  • 0

Struct


Isabella

Pergunta

Gente estou com uma problema com struct, enunciado do trabalho é o seguinte:

Fazer um programa que cria uma estrutura cad-aluno contendo: matrícula(8dígitos), nome (40), idade(2). Listar todos os alunos e destacar o mais velho e o mais novo:

o, q eu consegui fazer foi isso, eu queria saber como eu faço para colocar para um numero infinito tipo usando um while, mas não to conseguindo, perguntou se o usuario quer inserir mais alguma coisa e dpois ir imprimindo

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

struct aluno{
char nome [30];
char sexo;
int idade;
float n1,n2,n3,n4;
};

int main()
{

struct aluno a[30];
int i;


for(i=0;i<2;i++)
{
printf("Digite o nome do aluno:");
fflush(stdin);
gets(a[i].nome);
scanf("%c",&a[i].sexo);
printf("Digite a idade:");
fflush(stdin);
scanf("%d",&a[i].idade);
printf("Digite a matricula:");
fflush(stdin);
scanf("%d",&a[i].n1);
printf("Deseja continuar ?");
fflush(stdin);
getchar();
}


for(i=0;i<2;i++)
{
printf("Nome:%s\n",a[i].nome);
printf("idade:%d\n",a[i].sexo);
printf("matricula:%d\n",a[i].idade);
}
system("pause");
}

Editado por Isabella
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Gente alguma ajuda, tentei de novo e o q eu consegui foi isso:

so que tah imprimindo umas coisas muito loucas, e eu gostaria também de saber como q eu faço pra imprimir por exemplo se o usuario colocou somente 10 registro, imprimir somente os 10, porque senao sempre vai imprimir 15.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct cadaluno
{
char nome[40];
char matricula[8];
char idade[2];
}pessoa[15];

int main()
{
char k=0,num;
char op;
int cont;


printf("Registro de Alunos\n\n");

while(op!= 'n')
{
printf("Digite seu nome:");
gets(pessoa[k].nome);

printf("Digite sua Matricula:");
gets(pessoa[k].matricula);

printf("Digite sua idade:");
gets(pessoa[k].idade);

printf("\n\nDeseja inserir outro aluno? [s/n]: ");
scanf("%c%*c", &op);
k++;

}

system("pause");

printf("Relação dos Alunos");

for(k=0; k<15; k++)
{

printf("Nome: %c", pessoa[k].nome);
printf("Matricula: %d",pessoa[k].matricula);
printf("Idade %d",pessoa[k].idade);
printf("\n\n");
}
system("pause");
}

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Isabella, não olhei direito ainda seu código, mas ví duas coisa que podem atrapalhar seu programa além do que o Beraldo já disse tb:

.
.
.
} pessoa[15];
.
.
.
while (op != 'n')
.
.
.
printf("\n\nDeseja inserir outro aluno? [s/n]: ");
scanf("%c%*c", &op);
k++;[/CODEBOX]

...sua variável pessoa só pode guardar o cadastro de 15 pessoas, e do jeito que está fazendo, se o usuário teclar sim no final várias vezes ele vai cadastrar mais de 15 pessoas, sendo que sua variável só suporta o máximo de 15, e também, do jeito que está fazendo, por exemplo no gets(pessoa[k].nome), você está tentando guardar mais de um caracter em um único índice, vamos supor que k seje 1, logo índice 1 no vetor, é um único "espaço" e você quer guardar o nome Isabella por exemplo, seria impossível porque cada letra ocuparia um índice, e desse jeito você está tentando guardar vários caracteres em um único índice. O mesmo acontece para idade e matrícula. Bom, o que percebi a primeira vista foi isso, vou dar uma olhada no seu código com mais calma e ver se tem mais algum erro. T+ falou, depois posta aí se conseguiu fazer :D

Editado por Risadão
Link para o comentário
Compartilhar em outros sites

  • 0

E aí pessoal,

Você está certo Beraldo, é que olhei o código muito rapidamente e acabei vacilando nessa aí, achei que tivesse colocado gets(pessoa.nome[k]), ainda bem que você viu meu erro, e foi mal aí! Sinceras desculpas... :P

Editado por Risadão
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...