Ir ao conteúdo

Posts recomendados

Postado
//Ler:
//nome                                                       OK
//sexo                                                       OK
//três notas de cada aluno de uma turma                      OK
//flag nome=’f’                                              OK
//imprimir:
//média das mulheres                                         OK
//nome da mulher com a menor média
//percentual de mulheres aprovadas

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

void main (){

char nome, sexo;
float nota, notah, notam=0, media1, mediah=0, mediam=0, rh=0, rm=0, soma=0, somam=0, somah=0;

while(nome!='f'){
	printf("Digite o nome do aluno: ");
	scanf("%c", &nome);
	fflush(stdin);
   if(nome=='f'){
   	system("cls");
      printf("voce saiu.\nA media das notas das mulheres foi: %.2f\n", mediam);
      system("pause");
   }
   else{
   	printf("Se esse aluno e homem digite h, se e mulher digite m: ");
		scanf("%c", &sexo);
		fflush(stdin);
      if(sexo=='m'){
      	rm++;
      	for(int i=0; i<=2; i++){
				printf("Digite a nota desse aluno: ");
				scanf("%f", &notam);
   			fflush(stdin);
            somam=somam+notam;
			}
         media1=(somam/3);
         printf("A media desse aluno e: %.2f.\n", media1);
      }
   }
}

mediam=(somam/rm);

printf("\n\n");

system ("pause");

}

O codigo esta somando a media atual com a media anterior

  • Curtir 1
Postado

era pra o código funcionar assim ? ou é um problema ?

 

Se for um problema faz assim que as medias de cada aluno vai funcionar normalmente MAS a media geral depois vai dar problema pois você tem que usar outra variável ou usar uma struct para armazena a geral.

( Eu indentei código do meu jeito se não gostar só arrumar. )

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

int main (){
	
	char nome, sexo;
	float nota, notah, notam=0, media1, mediah=0, mediam=0, rh=0, rm=0, soma=0, somam=0, somah=0;
	while(nome!='f'){
		mediam = 0;
		somam = 0;
		printf("soman = %f\n",somam);
		printf("Digite o nome do aluno: ");
		scanf("%c", &nome);
		fflush(stdin);
	   if(nome=='f'){
	    system("cls");
	    printf("voce saiu.\nA media das notas das mulheres foi: %.2f\n", mediam);
	    system("pause");
	   }
	   else{
	   	printf("Se esse aluno e homem digite h, se e mulher digite m: ");
		scanf("%c", &sexo);
		fflush(stdin);
	      if(sexo=='m'){
	      	rm++;
	      	for(int i=0; i<=2; i++){
	      		printf("Digite a nota desse aluno: ");
				scanf("%f", &notam);
				somam= somam+notam;
	   			fflush(stdin);
			}
	        media1 = (somam/3);
	        printf("A media desse aluno e: %.2f.\n", media1);
	      }
	   }
	}
	
	mediam = (somam/rm);	
	printf("\n\n");	
	system ("pause");
}

 

  • Curtir 1
Postado

@Hotaru    como o  @wesquel  disse seu código está bom , então apenas alguma organização e modificações e seu código poderia ser assim  :

//Ler:
//nome                                                       OK
//sexo                                                       OK
//três notas de cada aluno de uma turma                      OK
//flag nome=’f’                                              OK
//imprimir:
//média das mulheres                                         OK
//nome da mulher com a menor média
//percentual de mulheres aprovadas
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#define H GetStdHandle(STD_OUTPUT_HANDLE)
void textcolor_2(int l,int f){SetConsoleTextAttribute(H,l+(f<<4));}
int main(){
    char nome[20], sexo;
    float nota,notah,notam=0,media1,mediah=0, 
        mediam=0,rh=0,rm=0,soma=0,somam, 
        somah=0;
    while(toupper(nome[0])!='F'){
        media1=0;somam=0;           
        textcolor_2(14,0);                      
        printf("Digite o nome do aluno: ");
        textcolor_2(11,0);
        fflush(stdin);
        scanf("%s",nome);
        if(toupper(nome[0])=='F'){
            break;
        }
        else{
            textcolor_2(14,0);
            printf("Se esse aluno e homem digite h, se e mulher digite m: ");
            fflush(stdin);
            textcolor_2(11,0);
            scanf("%c",&sexo);
            if(toupper(sexo)=='M'){
                rm++;
                for(int i=0; i<3; i++){
                    textcolor_2(14,0);
                    printf("Digite a %d%c nota da %s aluno: ",i+1,167,nome);
                    textcolor_2(11,0);
                    fflush(stdin);
                    scanf("%f", &notam);
                    somam += notam;
                }
                media1 = somam / 3;
                textcolor_2(10,12);
                printf("  A media desse aluno e: %.2f.  \n",media1);
            }
        }
    }
    mediam = somam / rm;
    system("cls");
    textcolor_2(12,15);
    printf("  voce saiu.  \n  A media das notas das mulheres foi: %.2f  \n",mediam);
    printf("\n\n");
    system ("pause");
    return 0;
}

 

Postado

De acordo com as informações do tópico, o código está em C++, nesse caso poderia ser feito assim:

#include <iostream>
#include <climits>

using std::string;
using std::cout;
using std::cin;
using std::getline;

typedef struct {
    string nome;
    char sexo;
    double nota1;
    double nota2;
    double nota3;
    double media;
} Aluno_t;

void cadastrar(Aluno_t *alunos, int quantidade);

double calcularMediaMulheres(Aluno_t *alunos, int quantidade);

double calcularPorcentagemMulheres(Aluno_t *alunos, int quantidade, double notaCorte);

void getMulherMenorMedia(Aluno_t *alunos, int quantidade, Aluno_t *mulherMenorMedia);

int main() {
    const int quantidade = 5;
    const double notaCorte = 7.0;

    Aluno_t alunos[quantidade];
    Aluno_t mulherMenorMedia;

    double mediaMulheres = 0.0;
    double percentualMulheres = 0.0;

    cadastrar(alunos, quantidade);
    mediaMulheres = calcularMediaMulheres(alunos, quantidade);
    percentualMulheres = calcularPorcentagemMulheres(alunos, quantidade, notaCorte);

    getMulherMenorMedia(alunos, quantidade, &mulherMenorMedia);

    cout << "-------------------------------------------- \n"
         << "              Média das mulheres: " << mediaMulheres << "\n"
         << "         Nome mulher menor média: " << mulherMenorMedia.nome << "\n"
         << "Percentual de mulheres aprovadas: " << percentualMulheres << "\n"
         << "-------------------------------------------- \n";

    return 0;
}

void cadastrar(Aluno_t *alunos, int quantidade) {
    cout << ">> Cadastro \n";

    for (int i = 0; i < quantidade; ++i) {
        cout << "---------------------------- \n";

        cout << "Nome: ";
        getline(cin, alunos[i].nome);

        cout << "Sexo: ";
        cin >> alunos[i].sexo;
        cin.ignore();

        cout << "Nota 1: ";
        cin >> alunos[i].nota1;
        cin.ignore();

        cout << "Nota 2: ";
        cin >> alunos[i].nota2;
        cin.ignore();

        cout << "Nota 3: ";
        cin >> alunos[i].nota3;
        cin.ignore();

        alunos[i].media = (alunos[i].nota1 + alunos[i].nota2 + alunos[i].nota3) / 3;

        cout << "---------------------------- \n";
    }
}

double calcularMediaMulheres(Aluno_t *alunos, int quantidade) {
    double media = 0.0;
    int qtd = 0;

    for (int i = 0; i < quantidade; ++i) {
        if (alunos[i].sexo != 'f' && alunos[i].sexo != 'F') {
            continue;
        }

        media += alunos[i].media;
        qtd += 1;
    }

    media /= qtd;
    return media;
}

double calcularPorcentagemMulheres(Aluno_t *alunos, int quantidade, double notaCorte) {
    double porcentagem = 0.0;

    int total = 0;
    int aprovadas = 0;

    for (int i = 0; i < quantidade; ++i) {
        if (alunos[i].sexo != 'f' && alunos[i].sexo != 'F') {
            continue;
        }

        if (alunos[i].media >= notaCorte) {
            aprovadas += 1;
        }

        total += 1;
    }

    porcentagem = aprovadas * 100.0 / total;
    return porcentagem;
}

void getMulherMenorMedia(Aluno_t *alunos, int quantidade, Aluno_t *mulherMenorMedia) {
    mulherMenorMedia->media = INT_MAX;

    for (int i = 0; i < quantidade; ++i) {
        if (alunos[i].sexo != 'f' && alunos[i].sexo != 'F') {
            continue;
        }

        if (alunos[i].media < mulherMenorMedia->media) {
            mulherMenorMedia->nome = alunos[i].nome;
            mulherMenorMedia->sexo = alunos[i].sexo;
            mulherMenorMedia->nota1 = alunos[i].nota1;
            mulherMenorMedia->nota2 = alunos[i].nota2;
            mulherMenorMedia->nota3 = alunos[i].nota3;
            mulherMenorMedia->media = alunos[i].media;
        }
    }
}

 

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