Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Diogo alves12

C Erro ao listar os alunos

Recommended Posts

Não estou conseguindo listar os alunos que eu cadastrei,não vejo onde está o erro,alguém pode me ajudar

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#define max 50;
typedef struct
{
	char nome[50];
	float notas[4];
	int ativo;
} Aluno;

Aluno alunos[50];

void menu();
void cadastrar();
void remover();
void reprovados();
void pesquisar();
void listar();
int main(int argc, char** argv)
{
	menu();
	return 0;
}

void menu()
{
	int resp;
	do
	{
		system("cls");
		printf("1 cadastar \n2-remover aluno\n");
		printf("3-alunos reprovados\n4-pesquisa\n");
		printf("5-listar\n0 sair\n");
		scanf("%d", &resp);
		getchar();
		switch(resp)
		{
		case 1:
			cadastrar();
			break;
		case 5:

			listar();
			break;
		}
		getchar();
	}
	while(resp != 0);
}
void cadastrar()
{
	int op, i, j;
	system("cls");
	char nome[50];
	float notas[4];
	do
	{
		printf("digite um nome do aluno\n");
		fgets(nome, sizeof(nome), stdin);
		for(i = 0; i < 4; i++)
		{
			printf("%d Bimestre: ", i + 1);
			scanf("%f", &notas[i]);
		}
		for(j = 0; j < 50; j++)
		{
			if(alunos[i].ativo == 0)
			{
				alunos[i].notas[i] = notas[i];
				strcpy(alunos[i].nome, nome);
				alunos[i].ativo=1;
				break;
			}
		}
		printf("Digite 0 para sair\n");
		scanf("%d", &op);
	}
	while(op != 0);
}
void remover()
{

}
void reprovados()
{

}
void pesquisar()
{

}
void listar()
{
	int i;
	system("cls");
	printf("alunos cadastrados :\n");
	for(i = 0; i < 50; i++)
	{
		if(alunos[i].ativo == 1)
		{
			printf("Nome %s\n", alunos[i].nome);
			for(i = 0; i < 50; i++)
			{
				printf("%d Bimestre %f:\n",i+1,alunos[i].notas[i]);
			}
			printf("___________________\n");
		}
	}
	getchar();
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Diogo alves12    na hora de cadastrar você usou esse comando 

fgets(nome, sizeof(nome), stdin);

e você não clocou o typedef que você criou e seria melhor usar  o gets() assim 

fflush(stdin);
gets(alunos[contador].nome);

e as notas também, e esse contador é para saber em qual posição do vetor você está cadastrando .  ele precisa ser do tipo global para poder ser acessado de qualquer parte do programa, e a cada cadastro ele precisa ser incrementado para apontar para a próxima posição do vetor que receberá o novo cadastro .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não teria um erro de lógica do seu algoritmo? Se são 50 alunos e cada aluno tem 4 notas, creio que deveria fazer algo como o código abaixo, tanto pro cadastro como pra listagem:

            for(i = 0; i < 50; i++) //50 alunos
            {
                printf("Nome %s\n", alunos[i].nome);
                for(x = 0; x < 4; x++)//4 notas
                    printf("%d Bimestre %f:\n",i+1,alunos[i].notas[x]);
            }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×