Duda B. Posted January 11, 2021 at 01:59 AM Share Posted January 11, 2021 at 01:59 AM 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 More sharing options...
Administrators Fernando Mercês Posted January 11, 2021 at 03:22 AM Administrators Share Posted January 11, 2021 at 03:22 AM 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 More sharing options...
Duda B. Posted January 18, 2021 at 06:47 PM Author Share Posted January 18, 2021 at 06:47 PM 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.