Variable is not displaying the expected result

1

In reading the variable at the end to display the value, it displays a garbage, here is the statement along with my code.

  

Make a program that recognizes the age, height, and weight of five people, compute and show:

     
  • The number of people over the age of 50;
  •   
  • The average height of people aged 10 to 20;
  •   
  • The percentage of people weighing less than 40 kg among 5 people
  •   
#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;

}
    
asked by anonymous 11.05.2016 / 19:50

5 answers

6

The biggest problem is that some values that appear 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);
    return 0;
}

See working on ideone and CodingGround .

    
11.05.2016 / 20:21
0

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

    
11.05.2016 / 19:58
0

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

    
11.05.2016 / 21:12
0

Good afternoon,

I think this problem is happening because the variables are not initialized in the code. It will give problem also the variables md, mdpeso, that should be float.

int idade = 0 , cont50 = 0, md = 0, espantalho = 0, mdpeso = 0, i = 0;
float peso = 0, altura = 0;
    
11.05.2016 / 21:27
0

include

int main ()

{     int age = 0, cont50 = 0, scarecrow = 0, i, agevar = 0;     float weight = 0.0, height = 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 = (scarecrow * 100) / (i-1) // Number of people less than 40kg times 100 divided by the total number of people         md = md / agevar; // Height of all people with 10 to 20 years divided by the number of people with 10 to 20 years         printf ("\ nThe total number of people over 50 and% d", cont50);         printf ("\ nThe average height of people aged 10-20 years and% .1f", md);         printf ("\ nThe percentage of people weighing less than 40 kg and% .1f per cent", mdpeso);

return 0;

}

Corrected Exercise

    
13.05.2016 / 23:04