Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Livia D'Lacourt

Exercício em C

Recommended Posts

Olá!

Estou com um probleminha no seguinte exercício:

 

Escreva um programa em c que leia informações sobre um grupo de 250 pessoas e calcule alguns dados estatísticos. Para cada pessoas do grupo deve ler o nome da pessoa, a altura, o peso e o sexo (“F” para feminino e “M” para o masculino).

Calcular e escrever:

  • A quantidade total de homens e mulheres e o percentual de cada.
  • A média de peso das pessoas (somatório dos pesos de todas as pessoas pela quantidade de pessoas)
  • O nome da pessoa mais alta.

 

Quando vou testar o programa, o valor da média de peso vem este valor estranho "-1.#R" :huh: ... Alguém sabe me explicar o que há de errado em meu código? >.<

 

 

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

int main()
{
   system("color c");
   char nome[20],sexo,nomealto[20];
   float altura,peso,somapeso,mediapeso,maioraltura=0,menoraltura=20,perf,perm,contf=0,contm=0;
   int pessoas;

   for(pessoas=0;pessoas<2;pessoas++){
       printf("Nome: ");
       scanf("%s",&nome);
       printf("Altura: ");
       scanf("%f", &altura);
       printf("Peso: ");
       scanf("%f", &peso);
       fflush(stdin);        
         for(;;){
           printf("Sexo (F ou M): ");
           scanf("%c", &sexo);
           fflush(stdin);
           if((sexo=='f')||(sexo=='F')) {contf++; break;}
              else if((sexo=='m')||(sexo=='M')) {contm++; break;}
              else puts("\n---Sexo invalido, Digite F ou M---\n");
         }
           somapeso=somapeso+peso; //Aqui faço a somatória dos pesos
           if(altura>maioraltura){
                    maioraltura=altura;
                    strcpy(nomealto,nome);
           }
       system("cls");
   }
       perm=(contm/pessoas)*100;
       perf=(contf/pessoas)*100;
       mediapeso=somapeso/(float)pessoas; //E aqui eu calculo a média

       printf("Quantidade de mulheres:   %.2f\n",contf);
       printf("Quantidade de homens:     %.2f\n",contm);
       printf("Percentual de mulheres:   %.2f\n",perf);
       printf("Percentual de homens:     %.2f\n",perm);
       printf("Media de peso :           %.2f\n",mediapeso);
       printf("Pessoa mais alta:         %s\n",nomealto);

 system("PAUSE");	
 return 0;
}

 

Obrigada pela atenção ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Estou com um probleminha no seguinte exercício:

 

Escreva um programa em c que leia informações sobre um grupo de 250 pessoas e calcule alguns dados estatísticos. Para cada pessoas do grupo deve ler o nome da pessoa, a altura, o peso e o sexo (“F” para feminino e “M” para o masculino).

Calcular e escrever:

  • A quantidade total de homens e mulheres e o percentual de cada.
  • A média de peso das pessoas (somatório dos pesos de todas as pessoas pela quantidade de pessoas)
  • O nome da pessoa mais alta.

 

Quando vou testar o programa, o valor da média de peso vem este valor estranho "-1.#R" :huh: ... Alguém sabe me explicar o que há de errado em meu código? >.<

 

 

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

int main()
{
   system("color c");
   char nome[20],sexo,nomealto[20];
   float altura,peso,somapeso,mediapeso,maioraltura=0,menoraltura=20,perf,perm,contf=0,contm=0;
   int pessoas;

   for(pessoas=0;pessoas<2;pessoas++){
       printf("Nome: ");
       scanf("%s",&nome);
       printf("Altura: ");
       scanf("%f", &altura);
       printf("Peso: ");
       scanf("%f", &peso);
       fflush(stdin);        
         for(;;){
           printf("Sexo (F ou M): ");
           scanf("%c", &sexo);
           fflush(stdin);
           if((sexo=='f')||(sexo=='F')) {contf++; break;}
              else if((sexo=='m')||(sexo=='M')) {contm++; break;}
              else puts("\n---Sexo invalido, Digite F ou M---\n");
         }
           somapeso=somapeso+peso; //Aqui faço a somatória dos pesos
           if(altura>maioraltura){
                    maioraltura=altura;
                    strcpy(nomealto,nome);
           }
       system("cls");
   }
       perm=(contm/pessoas)*100;
       perf=(contf/pessoas)*100;
       mediapeso=somapeso/(float)pessoas; //E aqui eu calculo a média

       printf("Quantidade de mulheres:   %.2f\n",contf);
       printf("Quantidade de homens:     %.2f\n",contm);
       printf("Percentual de mulheres:   %.2f\n",perf);
       printf("Percentual de homens:     %.2f\n",perm);
       printf("Media de peso :           %.2f\n",mediapeso);
       printf("Pessoa mais alta:         %s\n",nomealto);

 system("PAUSE");	
 return 0;
}

 

Obrigada pela atenção ^_^

 

Olá =)

 

Tente zerar suas variáveis :rolleyes:

 

float altura=0,peso=0,somapeso=0,mediapeso=0,maioraltura=0,menoraltura=20,perf,perm,contf=0,contm=0;

 

Teste ae para ver se funciona...

 

valeuu :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho quase certeza que é o seguinte, aqui no meu nem compilou pq bloqueei alguns erros...

na linha 14(na minha ide deu linha 14 mas é no scanf que tu le o nome) tu tem

scanf("%s",&nome)

porém a variavel 'nome' ja é um ponteiro (toda variavel de vetor é um ponteiro para o primeiro elemento) se tu colocar assim

scanf("%s",nome)

sem o '&', vai funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho quase certeza que é o seguinte, aqui no meu nem compilou pq bloqueei alguns erros...

na linha 14(na minha ide deu linha 14 mas é no scanf que tu le o nome) tu tem

scanf("%s",&nome)

porém a variavel 'nome' ja é um ponteiro (toda variavel de vetor é um ponteiro para o primeiro elemento) se tu colocar assim

scanf("%s",nome)

sem o '&', vai funcionar

 

O objeto nome não é um ponteiro. É um array. Seu valor é um ponteiro para seu primeiro elemento.

 

À criadora do tópico:

 

Já vi esse código por aqui. Pra começar:

 

1. Remova a variável menoraltura, que não está sendo utilizada;

2. Remova todas as ocorrências de fflush(stdin);;

3. Entenda o motivo para o item acima;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal ^.^

Bem, logo quando eu zerei as variáveis (Como o Marcelo Garbin disse) já resolveu..

Essa parte de vetor estou começando há pouco tempo rjchaves93 e guidjos ... Mas acho que entendi...

Ah! e usei o fflush(stdin) porque aqui deu muito aquele erro de guardar o 'enter' (que na verdade é \n) no buffer (bem, foi isso que me explicaram quando disseram que eu deveria usar o 'fflush(stdin)' para limpar o buffer)

 

 

Agradeço a todos! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal ^.^

Bem, logo quando eu zerei as variáveis (Como o Marcelo Garbin disse) já resolveu..

Essa parte de vetor estou começando há pouco tempo rjchaves93 e guidjos ... Mas acho que entendi...

Ah! e usei o fflush(stdin) porque aqui deu muito aquele erro de guardar o 'enter' (que na verdade é \n) no buffer (bem, foi isso que me explicaram quando disseram que eu deveria usar o 'fflush(stdin)' para limpar o buffer)

 

 

Agradeço a todos! :D

 

Isso mesmo Livia, valeuu tópico Resolvido então. Qualquer coisa prende o grito. abç :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.