The code below has the expected behavior in case the values are entered correctly. But, when I am reporting, for example, in the following order: preco
equal to 1 , quantidade
equal to -1 , then quantidade
equal to 3 , the value of the variable preco
becomes 0 .
#include <stdio.h>
#include <string.h>
int main() {
float preco = -1, totalAPagar;
int quantidade = -1, jaPediuEntrada = 0;
char mensagem[20];
do {
(jaPediuEntrada == 1) ? strcpy(mensagem, "Erro! ") : strcpy(mensagem, "");
strcat(mensagem, "Insira um preco: ");
printf(mensagem);
scanf("%f", &preco);
jaPediuEntrada = 1;
} while (preco <= 0);
jaPediuEntrada = 0;
do {
(jaPediuEntrada == 1) ? strcpy(mensagem, "Erro! ") : strcpy(mensagem, "");
strcat(mensagem, "Insira uma quantidade: ");
printf(mensagem);
scanf("%d", &quantidade);
jaPediuEntrada = 1;
} while(quantidade <= 0);
/*Debug*/
printf("\nO preco e igual a %.2f.", preco);
printf("\nA quantidade e igual a %d.\n", quantidade);
totalAPagar = preco * quantidade;
printf("O total a pagar e igual a %.2f.", totalAPagar);
return(0);
}
Does anyone know why this program behaves?