Preciso em C pls :v
Uma empresa vende o mesmo produto para quatro diferentes estados. Cada estado possui uma taxa diferente de imposto sobre o produto (MG 7%; SP 12%; RJ 15%; MS 8%). Faça um programa em que o usuário entre com o valor e o estado destino do produto e, o programa retorne o preço final do produto acrescido do imposto do estado em que ele será vendido, se o estado digitado não for válido, mostrar uma mensagem de erro e ler novamente (usar comando de repetição). Fazer a leitura dos dados até o usuário não desejar mais.
Respostas
Resposta:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
Uma empresa vende o mesmo produto para quatro diferentes estados.
Cada estado possui uma taxa diferente de imposto sobre o produto (MG 7%; SP 12%; RJ 15%; MS 8%).
Faça um programa em que o usuário entre com o valor e o estado destino do produto e,
o programa retorne o preço final do produto acrescido do imposto do estado em que ele será vendido,
se o estado digitado não for válido, mostrar uma mensagem de erro e ler novamente
(usar comando de repetição). Fazer a leitura dos dados até o usuário não desejar mais.
**/
int main(){
float preco, preco_final;
char destino[3], resposta[3];
do {
printf("Informe o valor do produto em R$: ");
scanf("%f", &preco);
printf("Informe o estado para destino (MG, SP, RJ ou MS): ");
scanf("%s", &destino);
//função strcmp(string1, string2) da biblioteca string.h compara duas strings
//strcmp(s1, s2) == 0, se as strings forem iguais
//strcmp(s1, s2) == 1, se as strings forem diferentes
//Neste caso estamos comparando a variavel destino com a resposta do usuario
//Duas comparações por estado pois letras minusculas e maiusculas diferem
if(strcmp(destino, "sp") == 0 || strcmp(destino, "SP") == 0){
preco_final = preco + (preco*0.12);
printf("Valor total para o estado de SP R$%.2f\n", preco_final);
}else if(strcmp(destino, "mg") == 0 || strcmp(destino, "MG") == 0){
preco_final = preco + (preco*0.07);
printf("Valor total para o estado de MG R$%.2f\n", preco_final);
}else if(strcmp(destino, "rj") == 0 || strcmp(destino, "RJ") == 0){
preco_final = preco + (preco*0.15);
printf("Valor total para o estado do RJ R$%.2f\n", preco_final);
}else if(strcmp(destino, "ms") == 0 || strcmp(destino, "MS") == 0 ){
preco_final = preco + (preco*0.08);
printf("Valor total para o estado de MS R$%.2f\n", preco_final);
}else{
printf("Opcao invalida!\n");
}
printf("\nDeseja continuar? <sim/nao>\n");
scanf("%s", &resposta);
printf("\n");
}while(strcmp(resposta, "sim") == 0 || strcmp(resposta, "SIM") == 0);
return 0;
}
Explicação:
Manipulação de strings em C é uma coisa meio chata mas é essencial saber, então optei por fazer dessa forma pra você já ir se acostumando. Tentei deixar como comentário no código uma explicação BEM resumida da função strcmp.
É possivel fazer o programa por meio de um Switch-CASE também. Se você preferir posso fazer dessa maneira e colocar aqui pra você ver como seria.
Caso tenha alguma dúvida com linguagem C, sinta-se a vontade para me mandar um e-mail: gabrielstuchi22@gmail com