Ir ao conteúdo

Posts recomendados

Postado

Nesse exercício não posso usar vetor e tenho que ler o nome, gênero e idade de um grupo de pessoas e imprimir a média das idades dos homens e o nome da mulher mais velha. Até a parte da média dos homens tava tudo funcionando perfeitamente, mas quando eu inseri a parte para exibir a idade da mulher mais velha começou a aparecer esse erro. Antes todas as variáveis numéricas eram float,daí mudei aquelas pra int pra tentar resolver,mas não funcionou. O mais estranho é que, como mostra a janelinha preta, só ocorre o erro depois que o programa já tinha começado a rodar.

Código.png

Postado

Mas ai ele vai dar erro por dividir por algum numero aleatório que estiver na memoria.

 

O problema não inicializar com 0, é onde a linha azul está sendo executada.

 

Ela não deveria estar junto com as outras instruções do gênero h?

 

  • Curtir 1
Postado

@Leonardo0308 Acredito que sim, mas será que não vai dar erro por ainda não ter todas as idades do gênero h? Quero dizer, ainda estaria sendo executado a coleta de dados. E onde eu colocaria? 

adicionado 4 minutos depois

@Leonardo0308 Meu código tem algum problema com o número 14 e/ou o nome Ana, toda vez que digito essa combinação de nome e idade dá esse problema.

Obs.: já coloquei fflush(stdin)

Problema 14.png

Postado
5 minutos atrás, Noemia Silva disse:

mas será que não vai dar erro por ainda não ter todas as idades do gênero h?

 

O certo era por apos o termino do while, mas como o programa "acaba" antes disso, você pode por esse calculo de media no bloco do if (nome == 's'), só não esqueça de fazer uma verificação para ver se existe homens cadastrados.

Postado
//Ler:
//Nome                          ok
//Sexo                          ok
//Idade                         ok
//Imprimir:
//Média das idades dos homens   ok
//Mulher mais velha

//Erros:
//integer divide by zero at 0x40125c

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

void main () {

char nome, gen;
int conth, contm=0, somah=0;
float idadeh, idadem, mediah=0, older=0;

while(nome!='s'){
	printf("Digite o nome do individuo, para sair digite 's': ");
	scanf("%c", &nome);
	fflush(stdin);
	if(nome=='s') {
   	if(conth!=0){
			mediah=(somah/conth);
			system("cls");
			printf("voce saiu.\nA media das idades dos homens e: %.2f.\nA mulher mais velha tem %.0f anos.\n", mediah, older);
			system("pause");
      }
	}
	else{
		printf("Digite o genero: 'm' para mulher e 'h' para homem. ");
		scanf("%c", &gen);
      if(gen=='h'){
      	conth++;
      	fflush(stdin);
			printf("Digite a idade: ");
      	scanf("%f", &idadeh);
      	if(gen=='h'){
      		somah=somah+idadeh;
      		fflush(stdin);
			}
      }
      else if(gen=='m'){
      	contm++;
         fflush(stdin);
         printf("Digite a idade: ");
         scanf("%f", &idadem);
         if(idadem>older){
         	older=idadem;
            fflush(stdin);
         }
      }
   }

}


system("pause");

}

@Leonardo0308

Postado

Pelo que entendi do seu código a mediah só deve ser calculada se o Input for H para genero. Então basta jogar essa linha para dentro do if(gen=='h').

 

if(gen=='h'){
	somah=somah+idadeh;
	fflush(stdin);
	mediah=(somah/conth);
}

 

Edit.: Considerando o código original da publicação, o do print.

 

 

Ou então faz a media só uma vez depois que terminar o loop.

  • Curtir 1
Postado
10 minutos atrás, Noemia Silva disse:

if(conth!=0){

    mediah=(somah/conth); system("cls");

    printf("voce saiu.\nA media das idades dos homens e: %.2f.\nA mulher mais velha tem %.0f anos.\n", mediah, older);          system("pause");

}

 

 

if(conth!=0){
   mediah=(somah/conth); system("cls");
}

printf("voce saiu.\nA media das idades dos homens e: %.2f.\nA mulher mais velha tem %.0f anos.\n", mediah, older);
system("pause");

 

Postado

Olá

 

O programa ainda não está bom.

 

Veja suas variáveis e seu enunciado

    char nome, gen;
    int conth, contm=0, somah=0;
    float idadeh, idadem, mediah=0, older=0;
    printf("Digite o nome do individuo, para sair digite 's': ");
	scanf("%c", &nome);
	fflush(stdin);

Você deve

  • ler o nome, gênero e idade de um grupo de pessoas
  • mostrar a média das idades dos homens
  • mostrar o nome da mulher mais velha

Mas

  • Esta lendo os nomes em uma variável char, uma única letra. É isso mesmo? 
  • Tem código duplicado. Não faz diferença na leitura se é homem ou mulher. Pelo enunciado tem que ler nome, gênero e idade de um grupo de pessoas. Não há razão para fazer isso em dois lugares.
  • Não está salvando o NOME da mulher mais velha, e assim não terá como mostrar no final.
  • Não precisa salvar idade dos homens nem contar as mulheres.  
  • Não precisa de um float para a idade
  • No tópico diz que era relacionado a C++ mas postou um programa em C

A média da idade dos homens é zero quando não tem nenhum. Quando não digitarem nenhuma mulher deve mostrar isso dizendo que não tem nenhuma mulher então não tem nome...

 

Sugiro listar a cada valor lido como está indo com a média e o nome, só para ficar mais segura.

 

  • Curtir 1
Postado

Uma dica para variáveis

char nome[255] = "";        // Entrada de dados
char nomeMulher[255] = "";  // Nome da mulher mais velha

int idade = 0;              // Entrada de dados
int idadeMulher = INT_MIN;  // Idade da mulher mais velha
int quantidadeHomens = 0;   // Quantidade de homens

double mediaIdade = 0.0;    // Média da idade dos homens

char sexo = ' ';            // Entrada de dados

A lógica do seu código fica por sua conta. 😉

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!