Ir ao conteúdo
  • Cadastre-se

C Não consigo comparar os valores dentro de um vetor


Igor Rossoni
Ir à solução Resolvido por devair1010,

Posts recomendados

Estou fazendo esse exercício aqui, consegui fazer todos os itens pedidos no menu, menos o item 2, preciso mostrar qual é o estudante com a maior média em LPI.

O enunciado: Crie um programa em C que cadastre os dados de 5 alunos. Os dados a serem
cadastrados são: nome, matrícula, endereço, sexo, os nomes das 3 disciplinas e as 3
notas de cada disciplina que ele está cursando.
Os dados devem ser cadastrados em um vetor e/ou matriz.
Após o cadastro informe:
a)Os dados dos alunos cadastrados e a sua situação ("aprovado" ou
"reprovado") em cada disciplina.
b)Os dados do aluno com maior média em "LPI".
c)A média geral dos alunos na disciplina "Algoritmo".
d)A quantidade de alunos(as) reprovados em qualquer disciplina.
OBS.:1) Usar uma estrutura switch para mostrar os resultados calculados.
2) Para o aluno ser aprovado a média das notas deve ser >= 6.

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

main(){
	setlocale(LC_ALL, "Portuguese");
	char nome[5][50], end[5][50], disc[5][50], sexo[5][20];
	int mat[5], nLPI[5][3], nAlg[5][3], nDisc[5][3], reprovado = 0;
	float totalLPI[5], mediaLPI[5], maiorLPI, totalAlg[5], mediaAlg[5], maiorAlg, totalDisc[5], mediaDisc[5], maiorDisc, totalGeralAlg, mediaGeralAlg;
	int i, j, k, l, menu;
	for(i=0;i<5;i++){
		printf("\n\nDIGITE OS DADOS DO ALUNO %d", i+1);
		printf("\nNOME: ");
		fflush(stdin);
		fgets(nome[i], 40, stdin);
		printf("MATRICULA: ");
		scanf("%d", &mat[i]);
		printf("ENDEREÇO: ");
		fflush(stdin);
		fgets(end[i], 40, stdin);
		printf("SEXO (palavra completa): ");
		fflush(stdin);
		fgets(sexo[i], 20, stdin);
		printf("\nDISCIPLINA 1: LPI\n");
		for(k=0;k<3;k++){
			l=0;
			printf("NOTA %d: ", k+1);
			scanf("%d", &nLPI[l][k]);
			totalLPI[i] += nLPI[l][k];
			l++;
		}
		mediaLPI[i] = totalLPI[i]/3;
		if(mediaLPI[i] < 6){
			reprovado++;
		}
		printf("\nDISCIPLINA 2: Algoritmo\n");
		for(k=0;k<3;k++){
			l=0;
			printf("NOTA %d: ", k+1);
			scanf("%d", &nAlg[l][k]);
			totalAlg[i] += nAlg[l][k];
			l++;
		}
		mediaAlg[i] = totalAlg[i]/3;
		if(mediaAlg[i] < 6){
			reprovado++;
		}
		printf("\nDIGITE A DISCIPLINA 3: ");
		fflush(stdin);
		fgets(disc[i], 40, stdin);
		for(k=0;k<3;k++){
			l=0;
			printf("NOTA %d: ", k+1);
			scanf("%d", &nDisc[l][k]);
			totalDisc[i] += nDisc[l][k];
			l++;
			
		}
		mediaDisc[i] = totalDisc[i]/3;
		if(mediaDisc[i] < 6){
			reprovado++;
		}
	}
	
	fflush(stdin);
	do{
		
		printf("\nESCOLHA UMA DAS OPÇÕES ABAIXO\n");
		printf("1) Os dados dos alunos cadastrados e a sua situação (\"aprovado\" ou \"reprovado\") em cada disciplina.\n");
		printf("2) Os dados do aluno com maior média em \"LPI\".\n");
		printf("3) A média geral dos alunos na disciplina \"Algoritmo\"\n");
		printf("4) A quantidade de alunos(as) reprovados em qualquer disciplina.\n");
		printf("5) FINALIZAR O PROGRAMA.\n");
		scanf("%d", &menu);
		switch(menu){
			case 1:
				for(i=0;i<5;i++){
					printf("=================================");
					printf("\n\nDADOS DO ALUNO %d\n", i+1);
					printf("NOME: %s", nome[i]);
					printf("MATRICULA: %d\n", mat[i]);
					printf("ENDEREÇO: %s", end[i]);
					printf("SEXO: %s\n", sexo[i]);
					if(mediaLPI[i] >= 6){
						printf("SITUAÇÃO EM LPI: Aprovado\n");
					} else{
						printf("SITUAÇÃO EM LPI: Reprovado\n");
					}
					if(mediaAlg[i] >= 6){
						printf("SITUAÇÃO EM ALGORITMOS: Aprovado\n");
					} else{
						printf("SITUAÇÃO EM ALGORITMOS: Reprovado\n");
					}
					if(mediaDisc[i] >= 6){
						printf("SITUAÇÃO EM %s : Aprovado\n", disc[i]);
					} else{
						printf("SITUAÇÃO EM %s : Reprovado\n", disc[i]);
					}
				}
				break;
				
			case 2:
				if(mediaLPI[0]>mediaLPI[1] && mediaLPI[0]>mediaLPI[2] && mediaLPI[0]>mediaLPI[3] && mediaLPI[0]>mediaLPI[4]){
					i=0;
					j=0;
					printf("DADOS DO ALUNO COM MAIOR MÉIA EM LPI\n");
					printf("NOME: %s\nMATRÍCULA: %d\nENDEREÇO: %s\nSEXO: %s\n", nome[i], mat[i], end[i], sexo[i]);
					printf("DISC 1: LPI\nNOTA 1: %d\tNOTA 2: %d\tNOTA 3: %d\tMÉDIA: %.2f\n", nLPI[i][j], nLPI[i][j+1], nLPI[i][j+2], mediaLPI[i]);
				}
				
				else if(mediaLPI[1]>mediaLPI[0] && mediaLPI[1]>mediaLPI[2] && mediaLPI[1]>mediaLPI[3] && mediaLPI[1]>mediaLPI[4]){
					i=1;
					j=0;
					printf("DADOS DO ALUNO COM MAIOR MÉIA EM LPI\n");
					printf("NOME: %s\nMATRÍCULA: %d\nENDEREÇO: %s\nSEXO: %s\n", nome[i], mat[i], end[i], sexo[i]);
					printf("DISC 1: LPI\nNOTA 1: %d\tNOTA 2: %d\tNOTA 3: %d\tMÉDIA: %.2f\n", nLPI[i][j], nLPI[i][j+1], nLPI[i][j+2], mediaLPI[i]);
					}
					
				else if(mediaLPI[2]>mediaLPI[0] && mediaLPI[2]>mediaLPI[1] && mediaLPI[2]>mediaLPI[3] && mediaLPI[2]>mediaLPI[4]){
					i=2;
					j=0;
					printf("DADOS DO ALUNO COM MAIOR MÉIA EM LPI\n");
					printf("NOME: %s\nMATRÍCULA: %d\nENDEREÇO: %s\nSEXO: %s\n", nome[i], mat[i], end[i], sexo[i]);
					printf("DISC 1: LPI\nNOTA 1: %d\tNOTA 2: %d\tNOTA 3: %d\tMÉDIA: %.2f\n", nLPI[i][j], nLPI[i][j+1], nLPI[i][j+2], mediaLPI[i]);
				}
				  
				else if(mediaLPI[3]>mediaLPI[0] && mediaLPI[3]>mediaLPI[1] && mediaLPI[3]>mediaLPI[2] && mediaLPI[3]>mediaLPI[4]){
					i=3;
					j=0;
					printf("DADOS DO ALUNO COM MAIOR MÉIA EM LPI\n");
					printf("NOME: %s\nMATRÍCULA: %d\nENDEREÇO: %s\nSEXO: %s\n", nome[i], mat[i], end[i], sexo[i]);
					printf("DISC 1: LPI\nNOTA 1: %d\tNOTA 2: %d\tNOTA 3: %d\tMÉDIA: %.2f\n", nLPI[i][j], nLPI[i][j+1], nLPI[i][j+2], mediaLPI[i]);
				} 
				
				else if(mediaLPI[4]>mediaLPI[0] && mediaLPI[4]>mediaLPI[1] && mediaLPI[4]>mediaLPI[2] && mediaLPI[4]>mediaLPI[3]){
					i=4;
					j=0;
					printf("DADOS DO ALUNO COM MAIOR MÉIA EM LPI\n");
					printf("NOME: %s\nMATRÍCULA: %d\nENDEREÇO: %s\nSEXO: %s\n", nome[i], mat[i], end[i], sexo[i]);
					printf("DISC 1: LPI\nNOTA 1: %d\tNOTA 2: %d\tNOTA 3: %d\tMÉDIA: %.2f\n", nLPI[i][j], nLPI[i][j+1], nLPI[i][j+2], mediaLPI[i]);
				}
				break;
				
			case 3:
				totalGeralAlg=0;
				for(i=0;i<5;i++){
					totalGeralAlg += mediaAlg[i];	
				}
				mediaGeralAlg = totalGeralAlg/5;
				printf("A MÉDIA GERAL DA DISCIPLINA ALGORISMOS: %.2f\n", mediaGeralAlg);
				break;
				
			case 4:
				printf("A QUANTIDADE DE ALUNOS REPROVADOS EM QUALQUER DISCIPLINA É: %d\n", reprovado);
				break;
		}
	}
	while(menu!=5);
	printf("FIM DO PROGRAMA");
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Igor Rossoni       creio que possa ser por que você não inicializou os dados do vetor antes de usa lo , pois o Compilador criou o vetor totalLPI   reservando um espaço na memória ,  e nesse espaço com certeza há algum valor já armazenado nele ,  e você não sabe que valor seja esse , e ao somar o valor dessa posição do vetor com a nota do Aluno ,  conterá um valor desconhecido e pouco provável de estar certo .

float totalLPI  [5] = {0};
float mediaLPI  [5] = {0};
float totalAlg  [5] = {0};
float mediaAlg  [5] = {0};
float totalDisc [5] = {0};
float mediaDisc [5] = {0}; 
float totalGeralAlg =  0 ;
float mediaGeralAlg =  0 ;
float maiorAlg      =  0 ;
float maiorDisc     =  0 ;
float maiorLPI      =  0 ;

e soma com o valor pego no scanf

for( int k=0; k<3; k++ ) /// alguns compiladores aceitam cria a varAvel dento do Loop
{
  l=0;
  printf("NOTA %d: ", k+1);
  scanf("%d", &nLPI[l][k]);
  printf("valor lpi[ %d ]= %5.2f\n" , i , totalLPI[ 0 ] );
  system("pause");
  totalLPI[i] += nLPI[l][k];
  l++;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!