Esse é o meu primeiro post no fórum, estou começando a estudar C e gostaria da ajuda dos amigos para solucionar um problema.
Estou montando um arquivo com uma calculadora de IMC onde quero que o usuário insira os dados (peso, altura) e depois da operação o sistema pergunte se o usuário quer fazer um novo calculo ou sair da aplicação.
Porém minha lógica está errada no uso de while para uma variável char.
Alguém pode me indicar onde errei?
#include <stdio.h>
char sair;
void calculaIMC ( float peso, float altura ) {
float imc = peso / (altura * altura );
//
printf("Seu IMC é: %.2f\n", imc);
//
printf("Tecla C para continuar e S para sair: \n");
scanf("%c", &sair);
}
void coletaDados () {
float peso, altura;
//
printf("Insira seu peso: ");
scanf("%f", &peso);
//
printf("Insira sua altura: ");
scanf("%f", &altura);
//
calculaIMC(peso, altura);
//
}
int main () {
while (sair != 'S' && sair != 's'){
coletaDados();
}
//
return 0;
}
Ele faz a primeira conta certinho, mas não para no scanf do continuar.... Já aparece o pedido para digitar o peso novamente.
Eu queria que após a primeira execução, o sistema perguntasse: Quer continuar? Isso muda o variável char do while e ele repete ou sai, mas errei em algum ponto.
Pergunta
Luis Goethe
Olá pessoal.
Esse é o meu primeiro post no fórum, estou começando a estudar C e gostaria da ajuda dos amigos para solucionar um problema.
Estou montando um arquivo com uma calculadora de IMC onde quero que o usuário insira os dados (peso, altura) e depois da operação o sistema pergunte se o usuário quer fazer um novo calculo ou sair da aplicação.
Porém minha lógica está errada no uso de while para uma variável char.
Alguém pode me indicar onde errei?
#include <stdio.h> char sair; void calculaIMC ( float peso, float altura ) { float imc = peso / (altura * altura ); // printf("Seu IMC é: %.2f\n", imc); // printf("Tecla C para continuar e S para sair: \n"); scanf("%c", &sair); } void coletaDados () { float peso, altura; // printf("Insira seu peso: "); scanf("%f", &peso); // printf("Insira sua altura: "); scanf("%f", &altura); // calculaIMC(peso, altura); // } int main () { while (sair != 'S' && sair != 's'){ coletaDados(); } // return 0; }Ele faz a primeira conta certinho, mas não para no scanf do continuar.... Já aparece o pedido para digitar o peso novamente.
Eu queria que após a primeira execução, o sistema perguntasse: Quer continuar? Isso muda o variável char do while e ele repete ou sai, mas errei em algum ponto.
Desde já agradeço.
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.