Ir ao conteúdo
  • Cadastre-se
Roberto753

Como calcular a média de notas e mostrar a maior e menor?

Recommended Posts

Faça um programa em C que dê a media de 4 notas de 20 alunos e mostre qual aluno conseguiu a maior e menor media em ordem decrescente. Comecei a fazer e não conclui o restante.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
float main(){
    float n1, n2, n3, n4, media;
    char aluno [20];
    
    int continua;
    continua = 1;
    
    while (continua == 1){
        system("cls");
        n1 = 0;
        n2 = 0;
        n3 = 0;
        n4 = 0;
        media = 0;
        
        printf("Nome do Aluno: \n");
        scanf("%s", &aluno);
        
        printf("Nota 1: ");
        scanf("%f", &n1);
        printf("Nota 2: ");
        scanf("%f", &n2);
        printf("Nota 3: ");
        scanf("%f", &n3);
        printf("Nota 4: ");
        scanf("%f", &n4);
        
        media = (n1+n2+n3+n4) / 4;
        
        
        printf("Aluno: %s \n", aluno);
        printf("Obteve media: %.2f\n", media);
        
        
        if(media >=7){
            printf("aluno aprovado ");    
        }
        else{
            printf("aluno reprovado");
        }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

Como uma possível solução, pode se usar um vetor de médias para guarda todas médias, e duas variáveis associasse o índice correspondente no vetor as médias maior e menor. Pelos nomes das variáveis já se presume que seja a maior é a menor média de todas. Não ficou muito claro se é para exibir todas as médias, mais com certeza este método vai resolver o problema principal.

 

 

adicionado 1 minuto depois

Basta escrever o vetor dentro do laço WHLE, e boa sorte!

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, segue minha solução:

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

#define TAM 20 // Define a quantidade para cadastro;

typedef struct
{
	char Nome[32];
	float Nota[4];
	float Media;
}Aluno_t;

int main()
{
	int i, j, posMaior, posMenor;
	float Maior, Menor;
	Aluno_t Aluno[20];

	// Cadastra os alunos e suas notas na estrutura;
	for (i = 0; i < TAM; i++)
	{
		printf("[%d]Nome do Aluno: ", i+1);
		//scanf("%s", Aluno[i].Nome);
		scanf_s("%s", Aluno[i].Nome, (int)_countof(Aluno[i].Nome));

		// Insere as notas;
		for (j = 0; j < 4; j++)
		{
			printf("Nota %d: ", j+1);
			scanf_s("%f", &Aluno[i].Nota[j]);
		}

		// Calcula média do aluno[i];
		Aluno[i].Media = (Aluno[i].Nota[0] + Aluno[i].Nota[1] + Aluno[i].Nota[2] + Aluno[i].Nota[3]) / 4;

		system("cls");
	}

	// Verifica qual teve a maior e qual teve a menor média;
	Maior = 0; // inicializa Maior como zero;
	Menor = Aluno[0].Media; // inicializa Menor como primeiro elemento;
	for (i = 0; i < TAM; i++)
	{
		// Verifica maior média;
		if (Aluno[i].Media > Maior)
		{
			posMaior = i; // Posição do maior valor;
			Maior = Aluno[i].Media; // Maior passa a ser Aluno[i].Media;
		}

		// Verifica menor média;
		if (Aluno[i].Media < Menor)
		{
			posMenor = i;
			Menor = Aluno[i].Media;
		}
	}

	// Imprime na tela todos os alunos e suas medias;
	for (i = 0; i < TAM; i++)
		printf("Aluno %s, media: %0.1f\n", Aluno[i].Nome, Aluno[i].Media);

	printf("[Maior Media] Aluno: %s, media %0.1f\n", Aluno[posMaior].Nome, Aluno[posMaior].Media);
	printf("[Menor Media] Aluno: %s, media %0.1f\n", Aluno[posMenor].Nome, Aluno[posMenor].Media);

	system("PAUSE");
	//getchar();
	return 0;
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×