Boa tarde!
Estou a algum tempo tentando polir esse código. No caso em questão, preciso que o programa receba como entrada o código e o valor dos produtos. O problema é que eu criei uma condição para que o programa informe se o código foi digitado incorretamente, porém, independente da entrada, a condição é ignorada e o printf sempre é executado. Outro problema é a repetição da mensagem inicial (anexo na imagem). Não estou conseguindo identificar o que causa isso e minhas tentativas de corrigir não funcionaram, e agora está parecendo uma gambiarra. Obs: tenho que usar obrigatoriamente o do while. Obrigado.
#include <stdio.h>
int main(){
float valor = 0;
float dinheiro = 0;
float cheque = 0;
float total = 0;
char cod = ' ';
int cont = 1;
printf("MENU \n");
printf("Codigo D = Compras em dinheiro. \n");
printf("Codigo C = Compras em cheque. \n");
printf("Codigo S = Sair \n\n");
do{
printf("Codigo: ");
scanf("%c", &cod);
if(cod == 's' || cod == 'S'){
total = dinheiro + cheque;
printf("Total de compras em Dinheiro: %.2f\n", dinheiro);
printf("Total de compras em Cheque: %.2f\n", cheque);
printf("Total de compras: %.2f\n\n", total);
return 0;
}else if(cod == 'd' || cod == 'D'){
printf("Valor: ");
scanf("%f", &valor);
dinheiro = dinheiro + valor;
cod = ' ';
}else if(cod == 'c' || cod == 'C'){
printf("Valor: ");
scanf("%f", &valor);
cheque = cheque + valor;
cod = ' ';
}else if(cod != 'd' && cod != 'D' && cod != 'c' && cod != 'C' && cod != ' '){
printf("Codigo ou valor invalido, digite novamente.\n");
cod = ' ';
}
}while(1);
return 0;
}