Ir ao conteúdo

Posts recomendados

Postado

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();
}

 

Postado

@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 .

Postado

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]);
            }

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!