Jump to content

Cadastro de Alunos em C


Duda B.

Recommended Posts

Boa noite!! Eu estou fazendo um programa em C e estou tendo dificuldade, o enunciado é este:   Cadastrar os 20 alunos e suas notas, classificar os alunos cadastrados, corrigir alunos e/ou notas que tenham sido cadastradas com erros, pesquisar alunos por nome, listar alunos aprovados (media >7), listar alunos reprovados(media<7).

O código que fiz não roda e estou duvidando que a parte sobre Aprovado e Reprovado esteja correta,  alguém poderia me dar uma ajudada. Obrigado desde já!!

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define cls system("cls");

	int i,j,x,proc,flag,alt;
	char pesq[90];float media;
	
	char nome[80];
	float n1,n2,n3,n4;

	int Cadastro();
	int Listar();
	int Corrigir();
	int Pesquisa();
	int Aprovado();
	int Reprovado();	
	
	int main(){	
	int op;	
	
	printf ("\n...Menu....\n");
	printf ("Cadastro\n");
	printf ("Listar\n");
	printf ("Corrigir\n");
	printf ("Pesquisa\n");
	printf ("Aprovados\n");
	printf ("Reprovados\n");
	printf ("Escolha uma opcao:\n");
	scanf ("%d",&op);
	
	
		switch (op){
		
		case 1: Cadastro();break;
		case 2: Listar();break;
		case 3: Corrigir();break;
		case 4: Pesquisa();break;
		case 5: Aprovado();break;
		case 6: Reprovado();break;
			
		default :
		printf ("Opcao invalida.");
		fflush(stdin);
	
		
		
		return 0;}
	
	
	
	int Cadastro();{

	for (i=0; i<5; i++){
	
	printf ("Nome do aluno(a):");
	fflush(stdin);
	fgets (nome, 80, stdin);
	
	printf ("Nota do primeiro bimestre:");
	scanf ("%f",&n1);
	printf ("Nota do segundo bimestre:");
	scanf ("%f",&n2);
	printf ("Nota do terceiro bimestre:");
	scanf ("%f",&n3);
	printf ("Nota do quarto bimestre:");
	scanf ("%f",&n4);
	}
	
		int Listar();{
		for (i=1;i<5;i++)
		{
		printf("Nome: %s\n",nome);
	}
		
		int Correcao();{
		
		char nom[30];
		float n1,n2,n3,n4;
			
	    flag=0;
	    cls
		for (i=1;i<6;i++)
	    printf("Nome: %s\n",nome);
		printf( "\nQual nome desejar editar: ");
		fflush(stdin);
		fgets(nom,29,stdin);
			   
	    for(i=1;i<6;i++)
	    if(strcmp(nom,nome) == 0 )
	    {
	    flag = 1;	
	        	
	    printf("Novo Nome:");
	    fgets(nom,29,stdin);
	    strcpy(nome,nom);
	    {
	    printf ("Nota 1:");
		scanf ("%f",&n1);	
		{
	    printf ("Nota 2:");
		scanf ("%f",&n2);
		{
	    printf ("Nota 3:");
		scanf ("%f",&n3);
		{
	    printf ("Nota 4:");
		scanf ("%f",&n4);
	    }
        printf("Edicao realizada com sucesso !\n");
        }
        if( ! flag )
        printf("nNome inesistente!\n");
		}

		int Pesquisa();{
		cls
			
		printf ("Qual aluno deseja pesquisar: \n");
		fflush(stdin);
		fgets (pesq,90,stdin);
		i=0;
		proc=0;
		while (i<5 && proc==0)
		{
		if (strcmp(nome,pesq)==0)
		proc = 1;
		else
		i=i+1;
		}
		if (proc==1)
		{
		printf ("Aluno pesquisado: %s\n",nome);
		printf ("Nota 1: %s\n",n1);
		printf ("Nota 2: %s\n",n2);
		printf ("Nota 3: %s\n",n3);
		printf ("Nota 4: %s\n",n4);
			
		}
		else
		printf ("\nNome invalido");	
		}
	
		int Aprovado();{
	
		for (i=0; i<5; i++)
		media = (n1 + n2 + n3+ n4)/4;
		if (media >=7.0)
		printf ("Aluno aprovado:Aluno %s aprovado com media %2.f",nome,media);		
		}
		int Reprovado();{
		for (i=0; i<5; i++)
		media = (n1+n2+n3+n4)/4;
		if (media <= 7.0);
		printf ("Aluno reprovado:Aluno %d reprovado com media %2.f",nome,media);
	}	
	}
	}
	}
}
}
}

 

Link to comment
Share on other sites

  • Administrators

Opa, bem vindo(a) à comunidade Mente Binária!

1 hora atrás, Duda B. disse:

O código que fiz não roda

É necessário mais detalhes aqui. Ele compila? Se não, qual o erro que aparece? Consegue copiar e colar aqui? Se compila, quando você roda, dá algum erro? Se sim, qual erro? Pode copilar e colar aqui?

Eu não olhei sua lógica, mas de cara vi que você tá declarando funções e colocando um ponto-e-vírgula no fim dessa declaração, o que está errado. Ou seja, é preciso alterar de:

int Cadastro();{

Para:

int Cadastro() {

O mesmo vale para as outras funções.

Ah, eu recomendaria você dar uma "embelezada" nesse código com uma ferramenta como o beautifier.io (é feito pra JavaScript, mas funciona bem com C) pra ficar mais fácil de ler, identar as chaves, espaços depois das vírgulas, etc.

Quando estiver tudo ok e seu programa compilando, aí você vai precisar saber como salvar estes 20 cadastros de alunos. Isso tudo vai ser em memória ou precisa escrever em disco? Vai salvar num TXT?

Abraço!

Link to comment
Share on other sites

Em 11/01/2021 em 00:22, Fernando Mercês disse:

Opa, bem vindo(a) à comunidade Mente Binária!

É necessário mais detalhes aqui. Ele compila? Se não, qual o erro que aparece? Consegue copiar e colar aqui? Se compila, quando você roda, dá algum erro? Se sim, qual erro? Pode copilar e colar aqui?

Eu não olhei sua lógica, mas de cara vi que você tá declarando funções e colocando um ponto-e-vírgula no fim dessa declaração, o que está errado. Ou seja, é preciso alterar de:


int Cadastro();{

Para:


int Cadastro() {

O mesmo vale para as outras funções.

Ah, eu recomendaria você dar uma "embelezada" nesse código com uma ferramenta como o beautifier.io (é feito pra JavaScript, mas funciona bem com C) pra ficar mais fácil de ler, identar as chaves, espaços depois das vírgulas, etc.

Quando estiver tudo ok e seu programa compilando, aí você vai precisar saber como salvar estes 20 cadastros de alunos. Isso tudo vai ser em memória ou precisa escrever em disco? Vai salvar num TXT?

Abraço!

Boa tarde, obrigado pela sua ajuda. O código não estava compilando e porem eu consegui resolver esta questão, agora eu acredito que ele não esta armazenando os nomes quando digito, por que quando eu peso, por exemplo, para 'LISTAR', apresentar somente o ultimo nome que foi digitado. 

float media,n1,n2,n3,n4; 
int  rotcadastro(void) ; 
int  rotlistar(void) ; 
int  rotcorrigir( void) ; 
int  rotpesquisa(void);
int  rotaprovado(void);
int  rotreprovado(void);
int i,j,x,proc,flag,alt;
char nome[80];	

int main(void){
	
	char tecla;
	int OPCAO=0;
	while (OPCAO!=7)
	{
		printf( "\n\nMenu Principal\n");  
		printf( "---- ---------- \n\n") ;       
		printf( "1 -  Cadastro\n") ;       
		printf( "2 -  Listagem\n");    
		printf( "3 -  Corrigir\n");   
		printf( "4 -  Pesquisar\n");      
		printf( "5 -  Aprovados\n");     
		printf( "6 -  Reprovados\n");  
		printf( "7 -  Fim  do Programa\n\n"); 
		printf( "Escolha uma opcao: "); 
		fflush(stdin); 
		scanf( "%d",  &OPCAO) ;        
	
		switch (OPCAO) 
		{          
		case 1:rotcadastro(); break; 
		case 2:rotlistar();break;           
		case 3:rotcorrigir();break;            
		case 4:rotpesquisa();break;      
		case 5:rotaprovado();break;        
		case 6:rotreprovado();break;
		default:printf("Opcao invalida");  
	}
	}
	return(0);
}

		int  rotcadastro(void)  
		{   
		char  TECLA;  
		for (i=1; i<5; i++){
		
		printf ("Nome:");
		fflush(stdin);scanf ("%s",&nome);
		
		printf("Nota do primeiro bimestre:");
		scanf ("%f",&n1);
		printf("Nota do segundo bimestre:");
		scanf ("%f",&n2);
		printf("Nota do terceiro bimestre:");
		scanf ("%f",&n3);
		printf("Nota do quarto bimestre:");
		scanf ("%f",&n4);
		printf("\n");	
		}
		printf("\n Tecle <Enter> para acessar o menu:");   
		fflush(stdin);    
		while (( TECLA  = getchar()) != '\r')   
		return(0);	
		}
		
			int  rotlistar(void)  {   
			char  TECLA; 
			for (i=1;i<6;i++)
	        {
	        printf("Nome: %s\n",nome);
			printf("\n Tecle <Enter>  para acessar o menu: ");    
			fflush(stdin);    
		
			while (( TECLA = getchar()) != '\r')   
			return(0) ;
	}  
}
				int  rotcorrigir(void)  {   
				char  TECLA;   
				
				char nom[30];
					
			    flag=0;
			    cls
			
			    printf("Nome: %s\n",nome);
				printf( "\nQual nome deseja editar: ");
				printf ("Nome:");
				fflush(stdin);fgets (nome, 80, stdin);		
					   
			    for(i=1;i<6;i++)
			    if(strcmp(nom,nome) == 0 )
			   
			    flag = 1;	
			        	
			    printf("Novo Nome:");
			    fgets(nom,29,stdin);
			    strcpy(nome,nom);
			    {
			    printf ("Nota 1:");
				scanf ("%f",&n1);	
				{
			    printf ("Nota 2:");
				scanf ("%f",&n2);
				{
			    printf ("Nota 3:");
				scanf ("%f",&n3);
				{
			    printf ("Nota 4:");
				scanf ("%f",&n4);
			    }
		        printf("Edicao realizada com sucesso !\n");
		        }
		        if( ! flag )
		        printf("nNome inesistente!\n");
				}  
				printf("\ nTecle <Ent er>  para acessar  o  menu: ");    
				fflush(stdin);    
				while (( TECLA  = getchar()) != '\r')   
				return(0) ; 
				}  
			}
	
		int  rotpesquisa ( void) { 
		
		char  TECLA;   char nome[80];
		printf ("Qual aluno deseja pesquisar: \n");
		fflush(stdin);
		fgets (nome, 80, stdin);
		i=0;
		proc=0;
		while (i<5 && proc==0){
		
		i=i+1;
		}
		if (proc==1)
		{
		printf ("Aluno pesquisado: %s\n",nome);
		printf ("Nota 1: %s\n",n1);
		printf ("Nota 2: %s\n",n2);
		printf ("Nota 3: %s\n",n3);
		printf ("Nota 4: %s\n",n4);
		}
		else
		printf ("\nNome invalido");	   
		printf ("\ nTecle <Ent er>  para acessar  o  menu: ");    
		fflush(stdin);    while (( TECLA  = getchar()) != '\r')   
		return(0) ;	
}

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...