Hellsius 0 Denunciar post Postado Fevereiro 21, 2011 Pessoal, sou novato e estou tentando fazer este exercicio: "Construa um programa que calcule o peso ideal de uma pessoa. Dados de entrada: altura e sexo. Fórmulas para calculo do peso: peso ideal de homem = (72,7*altura)-58 peso ideal da mulher = (62,1*altura-44,7" Fiz só uma parte, mas não tenho ideia de como fazer o resto, segue o fonte abaixo: #include <stdio.h> #include <stdlib.h> #include <math.h> int main () { // Variaveis int altura; char sexo; // Entrada de Dados printf("Informe qual eh a sua altura: "); scanf("%d", &altura); printf("Informe o sexo" "\nM para masculino e F para feminino: "); scanf("%c", &sexo); // Processamento mpeso = (72.7*altura)-58; // mpeso = peso ideal masculino fpeso = (62.1*altura)-44.7; // fpeso = peso ideal feminino // Final do Codigo getch (); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Lugaid 0 Denunciar post Postado Fevereiro 21, 2011 Você tava no caminho certo... Eu faria da seguinte forma, criaria uma variavel para armazena o resultado, resultado. Depois de ler tudo colocaria um IF pra ver o sexo e fazer as contas, mais ou menos assim: if(sexo == 'm') resultado = (72.7*altura)-58; else resultado = (62.1*altura)-44.7; Sendo que essa variável resultado é do tipo float. Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Fevereiro 25, 2011 Fiz as alterações que me falou,mas não deram certo, como agora estou sem tempo,depois vou postar o que fiz para que veja. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Fevereiro 27, 2011 Obrigado pela ajuda. Veja como ficou o codigo: #include <stdio.h> #include <stdlib.h> #include <math.h> // Exercicio 5 "Aula4.pdf" int main () { // Variaveis float altura, resultado_m, resultado_f; char sexo; // Entrada de Dados printf("Informe qual eh a sua altura: "); scanf("%f", &altura); printf("Informe o sexo. " "\nM para masculino e F para feminino: "); scanf("%c", &sexo); // Processamento if(sexo == 'm') { resultado_m = (72.7*altura)-58; printf("\nO peso ideal eh: %f", resultado_m); } else { resultado_f = (62.1*altura)-44.7; printf("\nO peso ideal eh: %f", resultado_f); } // Final do Codigo getch (); return 0; } Mas a saída Esta desta forma: Informe qual eh a sua altura: 1,75 Informe o sexo. M para masculino e F para feminino: //Nesta parte ele nem me deixou digitar "m" ou "f" e ja me mostrou 17.400000 O peso ideal eh: 17.400000 Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Fevereiro 27, 2011 Acabei obtendo ajuda de uma pessoa que me disse para deixar esta parte do cordigo desta forma: // Entrada de Dados printf("Informe qual eh a sua altura: "); scanf("%f", &altura); fflush(stdin); //limpa o buffer printf("Informe o sexo. " "\nM para masculino e F para feminino: "); scanf("%c", &sexo); Colocando o fflush(stdio); em baixo do scanf("%f", &altura) o programa funcionou normalmente, mas ainda não sei por que tive que acrescentar a linha fflush(stdio); em baixo do scanf("%f", altura); ???? Compartilhar este post Link para o post Compartilhar em outros sites
Lugaid 0 Denunciar post Postado Fevereiro 27, 2011 Acabei obtendo ajuda de uma pessoa que me disse para deixar esta parte do cordigo desta forma: // Entrada de Dados printf("Informe qual eh a sua altura: "); scanf("%f", &altura); fflush(stdin); //limpa o buffer printf("Informe o sexo. " "\nM para masculino e F para feminino: "); scanf("%c", &sexo); Colocando o fflush(stdio); em baixo do scanf("%f", &altura) o programa funcionou normalmente, mas ainda não sei por que tive que acrescentar a linha fflush(stdio); em baixo do scanf("%f", altura); ???? é pra limpar o buffer do teclado. Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Março 5, 2011 Como Assim limpar o baffer do teclado? Poderia me explicar melhor? Compartilhar este post Link para o post Compartilhar em outros sites
b2code 0 Denunciar post Postado Março 5, 2011 Quando você digita 1 e da enter (por exemplo),o que vai pro buffer de entrada é 1\n,dai quando você le um número do buffer de entrada,ele limpa o 1 e deixa o \n no buffer.Ao pedir para ler outro número ele vai pedir por input do teclado,o que vai fazer o buffer ficar algo como \n3\n,e na hora de limpar o buffer e colocar a parte retirada nas devidas variaveis e com o devido cast ele não vai achar um número no inicio do buffer e deixar sua variavel como estava.Limpar o buffer é retirar todo esse resquicio nele,no caso o endline. O fflush não é aconselhado como explicado em vários artigos,inclusive 1 na imasters. Ao invés faça: #include <stdio.h> int main() { float resultado = 0, altura = 0; char sexo = 0; printf("Digite sua altura:"); scanf("%f%*c", &altura); printf("Digite seu sexo [F] ou [M]:"); scanf("%c%*c", &sexo); if(sexo == 'M') resultado = 72.7*altura - 58; else if(sexo == 'F') resultado = 62.1*altura - 44.7; printf("O seu peso ideal eh:%g\n", resultado); scanf("%*c"); return 0; } Um código que calculasse e exibisse os pesos ideais para os 2 sexos seria mais rápido que o acima,por ser branchless. Compartilhar este post Link para o post Compartilhar em outros sites
Hellsius 0 Denunciar post Postado Março 11, 2011 Obrigado pela otima explicação, exclareceu muita coisa mesmo e desculpe a demora de responder pois a facul e o trabalho estão consumindo muito minha vida social, kkkk. Vlw, abraços Quando você digita 1 e da enter (por exemplo),o que vai pro buffer de entrada é 1\n,dai quando você le um número do buffer de entrada,ele limpa o 1 e deixa o \n no buffer.Ao pedir para ler outro número ele vai pedir por input do teclado,o que vai fazer o buffer ficar algo como \n3\n,e na hora de limpar o buffer e colocar a parte retirada nas devidas variaveis e com o devido cast ele não vai achar um número no inicio do buffer e deixar sua variavel como estava.Limpar o buffer é retirar todo esse resquicio nele,no caso o endline. O fflush não é aconselhado como explicado em vários artigos,inclusive 1 na imasters. Ao invés faça: #include <stdio.h> int main() { float resultado = 0, altura = 0; char sexo = 0; printf("Digite sua altura:"); scanf("%f%*c", &altura); printf("Digite seu sexo [F] ou [M]:"); scanf("%c%*c", &sexo); if(sexo == 'M') resultado = 72.7*altura - 58; else if(sexo == 'F') resultado = 62.1*altura - 44.7; printf("O seu peso ideal eh:%g\n", resultado); scanf("%*c"); return 0; } Um código que calculasse e exibisse os pesos ideais para os 2 sexos seria mais rápido que o acima,por ser branchless. Compartilhar este post Link para o post Compartilhar em outros sites