Ir ao conteúdo
  • Cadastre-se

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


Roberto753

Posts recomendados

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");
        }
}

 

Link para o comentário
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
Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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