Ir ao conteúdo

Posts recomendados

Postado

Crie uma estrutura representando um aluno de uma disciplina. Essa estrutura deve conter o número de matrícula do aluno, seu nome e as notas de três provas. Agora, escreva um programa que leia os dados de cinco alunos e os armazena nessa estrutura. Em seguida, exiba o nome e as notas do aluno que possui a maior média geral dentre os cinco.

 

Esse é o enunciado da questão que estou em dúvida, consigo preencher a estrutura normalmente, porém na hora de exibir o nome e as notas do aluno que possui a maior média eu dou uma travada, pois ele exibe o último dado a ser digitado (no caso, os dados do 5º aluno que digito), e não o que tem as maiores notas/média. Alguém saberia me ajudar? 

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct DadosAluno{
	int matricula;
	float nota1,nota2,nota3;
	char nome[30];
};
int main(){
	struct DadosAluno aluno;
	float somamedia=0,media=0,maiormedia=0;
	setlocale(LC_ALL,"Portuguese");
	printf("\t\tCALCULANDO A MAIOR MÉDIA ENTRE 5 ALUNOS\n\n");
	for (int i=0;i<5;i++){
		printf("Olá!\nPor favor, digite seu nome: ");
		scanf("%s",&aluno.nome);
		printf("%s, digite o número de sua matrícula: ",aluno.nome);
		scanf("%d",&aluno.matricula);
		printf("Digite a primeira nota: ");
		scanf("%f",&aluno.nota1);
		printf("Digite a segunda nota: ");
		scanf("%f",&aluno.nota2);
		printf("Digite a terceira nota: ");
		scanf("%f",&aluno.nota3); printf("\n\n");
		somamedia=aluno.nota1+aluno.nota2+aluno.nota3;
		media=somamedia/3;
	}if(maiormedia>media){
			maiormedia==media;
			printf("A maior média é de %.2f, do aluno %s, matrícula de número %d.\n",maiormedia,aluno.nome,aluno.matricula);
		}
}

 

  • Obrigado 1
Postado

@Leucosia    sua variável maiormedia foi criada e inicializada com o valor zero , e não foi modificada em nenhum momento ,  então por que você colocou esse "if" para comparar o valor dela  ?  ,    e quando detectar a maior média armazene o valor nela e também marque a posição no vetor da struct , que precisa ter pelo menos três posições ,  para saber o nome e a matrícula , e seu código poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
struct DadosAluno
{
	int   matricula;
	float nota1,nota2,nota3;
	char  nome[30];
};
int main()
{
  struct DadosAluno aluno[3];
  float somamedia=0,
        media=0,
        maiormedia=0;
  int a = 0;
  setlocale(LC_ALL,"Portuguese");
  printf("\t\tCALCULANDO A MAIOR MÉDIA ENTRE 5 ALUNOS\n\n");
  for (int i=0; i<5; i++)
  {
    printf("Olá!\nPor favor, digite seu nome: ");
    scanf ("%s", aluno[i].nome);
    printf("%s, digite o número de sua matrícula: ",
                 aluno[i].nome);
    scanf ("%d",&aluno[i].matricula);
    printf("Digite a primeira nota: ");
    scanf ("%f",&aluno[i].nota1);
    printf("Digite a segunda nota: ");
    scanf ("%f",&aluno[i].nota2);
    printf("Digite a terceira nota: ");
    scanf ("%f",&aluno[i].nota3); printf("\n\n");
    somamedia = aluno[i].nota1 + aluno[i].nota2
		                       + aluno[i].nota3;
    media = somamedia/3;
    if(maiormedia < media)
    {
      maiormedia = media;
      a = i;
    }
  }
  printf("A maior média é de %.2f, do aluno %s, matrícula de número %d.\n",
              maiormedia,aluno[a].nome,aluno[a].matricula);
  return 0;
}

 

  • Curtir 1
  • Obrigado 1

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