Ir para conteúdo

Arquivado

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

Marcela Dutra

Estrutura e Registro

Recommended Posts

Não estou conseguindo retornar os valores corretos


#include <stdio.h>

#include <stdlib.h>


struct {

char sexo,olhos;

float altura;

int idade;


}hab[2];


float mediaIdadeOlhos (){

int i, somaIdade=0;

float media;

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

if (hab.olhos=='c' && hab.altura>1.60){

somaIdade= somaIdade+hab.idade;

}

media=somaIdade/2;


return media;

}


}



int main ()

{

int i;

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


printf ("\nDigite seu sexo (M)asculino (F)eminino: ");

hab.sexo=getche();

printf ("\nDigite sua altura: ");

scanf ("%f", &hab.altura);

printf ("Digite sua idade: ");

scanf ("%d", &hab.idade);

printf ("Digite a cor dos olhos A - Azuis, V - Verdes ou C - Castanhos: ");

hab.olhos=getche();

printf ("\n");

}


printf ("\nA media idade das pessoas com olhos castanhos e altura superior a 1,60m: %f\n", mediaIdadeOlhos());









return 0;

}


Compartilhar este post


Link para o post
Compartilhar em outros sites

@@Marcela Dutra

 

Tente isso...

 

Funcao mediaIdadeOlhos()

float mediaIdadeOlhos (){

    int i, somaIdade=0, cont=0; // contador
    float media;

    for (i=0; i<2; i++)
    {
        if ((hab[i].olhos =='c') && (hab[i].altura > 1.60))
        {
            somaIdade += hab[i].idade;
            cont++; //numeros de pessoas para media
        }
    }


  if (cont > 0) //condicao para retorna media
  {
      media = somaIdade/cont;
      return media;
  }
  else
    return 0;

 }

 

Função main()

...

float m;
m = mediaIdadeOlhos();

    if (m > 0)
    {
        printf ("\nA media idade das pessoas com olhos castanhos e altura superior a 1,60m: %f\n",m);
    }

...

 

brHUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro da função mediaIdadeOlhos, o return media tá no lugar errado, coloca ele fora do for:

 

Tá assim:

 

float mediaIdadeOlhos (void){
    int i, somaIdade=0;
    float media;

    for (i=0;i<2;i++){
        if (hab[i].olhos=='c' && hab[i].altura>1.60){
            somaIdade= somaIdade+hab[i].idade;
        }

        media=somaIdade/2; 
        return media;
   }
 
 }

 

Tem que ser assim:

float mediaIdadeOlhos(void) {
    int i, somaIdade=0;
    float media;

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

        if (hab[i].olhos=='c' && hab[i].altura>1.60){
            somaIdade= somaIdade+hab[i].idade;
        }

        media=somaIdade/2; 
     }
     return media; 
 }

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.