Informática, perguntado por NikoBOT, 6 meses atrás

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.

Soluções para a tarefa

Respondido por gabrielstuchi22
6

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

Anexos:
Perguntas interessantes