Ir ao conteúdo
  • Cadastre-se

Exericicio peso ideal, problema com char e do-while


Matheus Lone

Posts recomendados

"Faça um programa que receba o sexo da pessoa, digitado como um caractere 
(‘h’  e  ‘H’  para  homens, ‘m’  e  ‘M’  para  mulheres),  e  mostre  o  seu  peso  ideal,  de 
acordo com a sua altura. Utilize as fórmulas abaixo. 
  Homens: (72,7*altura) - 58 
  Mulheres: (62,1*altura) - 44,7"

Independente se coloco H ou M ou um char invalido(que deveria entrar no else final) ele calcula como se fosse H  e nao faz o do-while se estiver errado...

To quebrando a cabeca e nao consigo descobrir  

Desde ja agradeco

 

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

int main() {
    char c; float peso,altura ;
    printf("insira sua altura por favor em Metros.cm\n") ;
    scanf("%f",&altura);
    printf("\nvc e H ou M? H/M\n") ;
    c=getche();
    if (c=(('H')||('h'))) {
        peso=((72.7*altura)-58) ;
        printf("peso ideal=%f\n",peso);
        } else if(c=(('M')||('m'))){
                  peso=((62.1*altura)-44.7);
                  printf("peso ideal=%f\n",peso);
                  }
    else {
       do{printf("caractere invalido, tente novamente\n");
       printf("\ninsira sua altura em Metros.cm por favor\n") ;
    scanf("%f",&altura);
    printf("\nvc e H ou M? H/M\n") ;
    c=getche();
    if (c=(('H')||('h'))) {
        peso=((72.7*altura)-58) ;
        printf("peso ideal=%f\n",peso);
        } else if(c=(('M')||('m'))){
                  peso=((62.1*altura)-44.7);
                  printf("peso ideal=%f\n",peso);
                  }

       }
       while (c!=(('H')||('h'))||(('M')||('m'))) ;
       return(0);
    }

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Matheus Lone    ali no primeiro if você colocou c='h' então quando ele ler isso

ele vai fazer c=h e aí faz como se fosse h.  então você precisa colocar dois sinais

de igualdade para fazer as comparações assim :

if (c==(('H')||c==('h')))

e precisa colocar isso dentro de um loop. pode ser while ou do while 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Matheus Lone    aqui se código com algumas modificações :

#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(){
  char c[10];
  float peso,altura ;
  c[0]='h';
  do{
    printf("insira sua altura por favor em Metros.cm --> ") ;
    scanf("%f",&altura);
    printf("voce é Homem ou Mulher?     H / M   --> ") ;
    fflush(stdin);
    scanf("%c",&c[0]);
    if(c[0]!='h' && c[0]!='H' && c[0]!='m' && c[0]!='M'){
      printf("Caractere Invalido, Tente Novamente\n\n");
    }
    }while(c[0]!='h' && c[0]!='H' && c[0]!='m' && c[0]!='M');
    if (c[0]=='H' || c[0]=='h'){
      peso=((72.7*altura)-58);
      printf("Seu Peso Ideal é = %.2f Kg\n\n",peso);
    }
    if(c[0]=='M' || c[0]=='m'){
      peso=((62.1*altura)-44.7);
      printf("Seu Peso Ideal é = %.2f Kg\n\n",peso);
    }
    return(0);
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!