Variable is not displaying the expected result

Asked

Viewed 210 times

1

On reading the variable at the end to display the value, displays a trash, here is the statement along with my code.

Make a program that receives the age, height and weight of five people, calculate and show:

  • The number of persons over the age of 50;
  • The average height of people aged between 10 and 20;
  • The percentage of persons weighing less than 40 kg among 5 persons
#include <stdio.h>

int main ()

{
    int idade , cont50,md, espantalho, mdpeso, i;
    float peso, altura ;

    for (i = 1 ; i <3 ; i++)
    {



        printf ("\nDigite a sua idade :") ;
        scanf ("%d", &idade) ;

        printf ("Digite a sua altura :") ;
        scanf ("%f", &altura) ;

        printf ("Digite seu peso :") ;
        scanf ("%f", &peso) ;

        if ( idade > 50)
            cont50++ ;

        if((idade>=10) && (idade <=20))
            md +=altura/2 ;

        if(peso <40)
            espantalho++ ;

        mdpeso = (espantalho/2) *100 ;

    }

        printf ("\nO total de pessoas com idade superior a 50 e %d", cont50) ;
        printf ("\nA media das alturas de pessoas com idade entre 10 e 20 anos e %.1f", md) ;
        printf ("\nA porcentagem de pessoas com peso inferior a 40 kg e %f porcento", mdpeso) ;



return 0;

}
  • Did any of the answers solve your problem? Do you think you can accept one of them? If you haven’t already, see [tour] how to do this. You would help the community by identifying the best solution for you. You can only accept one of them, but you can vote for any question or answer you find useful on the entire site (when you have enough score).

5 answers

7

The biggest problem is that some values that apparently need to have decimal parts are being treated as integers. Another problem is the lack of initialization of variables:

#include <stdio.h>

int main() {
    int idade = 0, cont50 = 0, espantalho = 0;
    float peso = 0.0, altura = 0.0, md = 0.0, mdpeso = 0.0;
    for (int i = 1; i < 3; i++) {
        printf("\nDigite a sua idade :");
        scanf("%d", &idade);
        printf("Digite a sua altura :");
        scanf("%f", &altura);
        printf("Digite seu peso :");
        scanf("%f", &peso);
        if (idade > 50) cont50++;
        if (idade >= 10 && idade <= 20) md += altura / 2;
        if (peso < 40) espantalho++;
        mdpeso = (espantalho / 2.0) * 100; //força parte decimal necessária p/ porcentagem
    }
    printf("\nO total de pessoas com idade superior a 50 e %d", cont50);
    printf("\nA media das alturas de pessoas com idade entre 10 e 20 anos e %.1f", md);
    printf("\nA porcentagem de pessoas com peso inferior a 40 kg e %f porcento", mdpeso);
}

Behold working in the ideone. And in the repl it.. Also put on the Github for future reference.

0

You are assigning values of variables of type float in variables of type int try to cast in these situations.

  • 3

    Your answer may be right, but you can improve on it. Try to explain better what is wrong and how to fix it, this will already give another face to answer. I advise you to take a look at [Answer]

0

Good afternoon,

I believe this problem is happening because the variables are not initialized in the code. It will give problem also the variables Md, mdpeso, which should be float.

int idade = 0 , cont50 = 0, md = 0, espantalho = 0, mdpeso = 0, i = 0;
float peso = 0, altura = 0;
  • The average part of the heights, and percentage continue to zero, I switched the variables to float, and equaled zero.

0

#include <stdio.h>

int main ()

{
    int idade=0 , cont50=0, espantalho=0, i,idadevar =0;
    float peso=0.0, altura=0.0, mdpeso=0.0, md=0.0;

    for (i = 1 ; i <= 2 ; i++)
    {

        printf ("\nDigite a sua idade :") ;
        scanf ("%d", &idade) ;
        fflush(stdin);
        printf ("Digite a sua altura :") ;
        scanf ("%f", &altura) ;
        fflush(stdin);
        printf ("Digite seu peso :") ;
        scanf ("%f", &peso) ;
        fflush(stdin);
        if ( idade > 50)
            cont50++ ;

        if((idade>=10) && (idade <=20)){
           idadevar++;//Conta quantas pessoas tem idade entre 10 e 20 anos
           md += altura;
           }

        if(peso <40)
            espantalho++ ;



}
        mdpeso = (espantalho*100)/(i-1);//Número de pessoas com menos de 40kg vezes 100 dividido pelo total de pessoas
        md = md/idadevar;//Altura de todas as pessoas com 10 a 20 anos dividido pela quantidade de pessoas com 10 a 20 anos
        printf ("\nO total de pessoas com idade superior a 50 e %d", cont50) ;
        printf ("\nA media das alturas de pessoas com idade entre 10 e 20 anos e %.1f", md) ;
        printf ("\nA porcentagem de pessoas com peso inferior a 40 kg e %.1f porcento", mdpeso) ;



return 0;

}

Exercise Corrected

0

Start variables with 0. Depending on the value it may not enter one of the if’s.

  • Hello, the first condition has been solved, is showing how many people over 50 have been cited, but the average and percentage is still 0, you believe that the logic of the program is right to calculate the last 2 conditions?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.