Galera...estou com um problema aqui, o código executa direto não ta fazendo os cálculos corretamente, é uma dúvida simples, é que entrei em C a 2 dias e não to entendendo oque ta acontecendo.
Quote
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char m;
float altura,pesoideal;
system("cls");
printf("Escreva o sexo da pessoa (masculino ou feminino): ");
scanf("%c",&m);
printf("Entre com a altura da pessoa: ");
scanf("%f",&altura);
if( m == "masculino") {
pesoideal = (72.7*altura)-58;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
else
{
pesoideal = (62.1*altura)-44.7;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
system("pause");
return 0;
}
???
Especifique melhor seu problema, por favor.
o erro é simples, a variavel M foi declarada como um unico char e vc esta tentando usa-la como string...
A linguagem C não possui nenhum tipo primitivo que permite a manipulação de Strings, porem podemos implementar uma string através do uso de um vetor de caracteres terminado pelo caracter nulo.
assim sendo seu codigo pode ser implementado de 2 maneiras
usando apenas M ou F como paramentro de entrada
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char m;
float altura,pesoideal;
system("cls");
printf("Escreva o sexo da pessoa (m ou f): "); //Usar apenas um caracter como parametro de entrada
scanf("%c",&m);
printf("Entre com a altura da pessoa: ");
scanf("%f",&altura);
if( m == 'm') { // fazer a comparação com apenas um caracter
pesoideal = (72.7*altura)-58;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
else
{
pesoideal = (62.1*altura)-44.7;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
system("pause");
return 0;
}
else
{
pesoideal = (62.1*altura)-44.7;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
system("pause");
return 0;
}
Utilizando String (Vetor de char)
#include <stdio.h>
#include <stdlib.h>
#include <string.h> //Adicionar a biblioteca string.h para manipular strings
int main (void)
{
char m[10];
float altura,pesoideal;
system("cls");
printf("Escreva o sexo da pessoa (masculino ou feminino): ");
gets (m); // função usada para ler uma string
printf("Entre com a altura da pessoa: ");
scanf("%f",&altura);
if ((strcmp(m,"masculino")) == 0) { //a função strcmp compara 2 strings e retorna 0 se forem iguais
pesoideal = (72.7*altura)-58;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
else
{
pesoideal = (62.1*altura)-44.7;
printf("O peso ideal para esta pessoa e: %.2f\n",pesoideal);
}
system("pause");
return 0;
}
considero mais eficiente usar:
scanf("%9[^\n]", m);
Para ler as strings do que usar o gets.
[]'s
eu sei pra que serve o scanf.
scanf("%9[^\n]", m);
não entendi o sentido de %9[^\n]
se puder explicar, agradeço;
edit:
ja entendi como funciona:
pega nove caracteres menos o newline
te mais.
Vai pegar 9 caracteres até o new line(enter), e excelente para capturar strings compostas, sem ter usar o lixo do gets.
[]'s
Opa vlw NetKiler, funcionou perfeitamente, ainda não conhecia bem a biblioteca de caracteres, thx