Solicitação de algoritmo 11 – preço do combustível
A solicitação foi realizada por Heleno Rodrigues Da Silva. Eu alterei um pouco o enunciado original para focar realmente na parte importante.
Enunciado: Implemente um programa que receba como entrada os percentuais de impostos de combustível atuais do seu estado (cada estado pode implementar sua própria alíquota e isso altera o percentual de cada componente do preço final do combustível). O programa deverá imprimir o valor do combustível no seu estado. Abaixo segue uma imagem ilustrativa com a distribuição dos preços.

Assim como alterei o enunciado, também fiz uma alteração no código do Heleno, apagando algumas linhas de código, para focar realmente no problema. O código resultante é mostrado abaixo.
#include <iostream>
int main(int argc, char** argv) {
int a, b, c, d, e, soma;
printf("Digite o valor do ICMS: ");
scanf("%d", &a);
printf("Digite o valor da Distribuição e Revenda: ");
scanf("%d", &b); //recebe um inteiro e armazena na variável a
printf("Digite o valor De custo Etanol Anidro: ");
scanf("%d", &c); //recebe um inteiro e armazena na variável b
printf("Digite o valor De CideePIS/PASEPeCOFINS: ");
scanf("%d", &d);
printf("Digite o valor De Realização Petrobras: ");
scanf("%d", &e);
soma = a + b + c + d + e;
printf("O valor da Gasolina = %d\n", soma);
system ("pause");
return(0);
}
Na linha 10 é possível verificar a existência de um comentário. Embora comentários sejam importantes no código, comentários pouco significativos (como o realizado) são dispensáveis. Mas é uma opção do gosto do programador.
Falando sobre opção do gosto do programador, codificar é uma forma de arte e com isso quem codifica costuma colocar preferenciais pessoais no código. Também têm algumas coisas que são da IDE utilizada para codificação. Na minha correção inicial (mostrada abaixo), observe que mudei a biblioteca da primeira linha (como o Heleno apenas utilizou scanf e printf para entrada e saída, preferi fazer a codificação em C, ou invés de C++). A definição dos parâmetros da função main() na linha 3 são muitas vezes incluídas pela IDE. Eu prefiro uma versão mais limpa e não utilizo os parâmetros quando eles não são necessários. Até mesmo o return eu prefiro não utilizar os parênteses para ter uma versão mais limpa. Algumas IDEs adicionam a instrução system (“pause”), mas como eu uso o Codeblocks que já faz uma pausa no terminal, essa instrução eu dispenso. Veja que todas essas considerações são pequenas coisas que não alteram em nada o algoritmo em questão.
Algo que realmente impacta no código é a definição das variáveis. Veja que a distribuição é realizada em valores float e por isso é preciso utilizar esse tipo de dado para ler os valores. O Heleno definiu as variáveis como int e isso não está correto para o problema. Vale dizer que eu prefiro utilizar nomes mais significativos para o nome das variáveis, mas mantive a nomenclatura adotada pelo Heleno.
Veja também que nessa primeira versão do código não está sendo calculado o valor da gasolina, apenas aproveitei o código para garantir que na variável soma se obtém o valor de 100 para o 100% da composição do preço. Daria para utilizar essa soma para verificar se os valores inseridos não estão corretos (a soma tem que dar 100). Como o problema não pede nada disso, mais adiante eu vou retirar essa soma do algoritmo.
#include <stdio.h>
int main() {
float a, b, c, d, e, soma;
printf("Digite o valor do ICMS: ");
scanf("%f", &a);
printf("Digite o valor da Distribuição e Revenda: ");
scanf("%f", &b);
printf("Digite o valor De custo Etanol Anidro: ");
scanf("%f", &c);
printf("Digite o valor De CideePIS/PASEPeCOFINS: ");
scanf("%f", &d);
printf("Digite o valor De Realização Petrobras: ");
scanf("%f", &e);
soma = a + b + c + d + e;
printf("O valor da Gasolina = %f\n", soma);
return 0;
}
Para calcular o preço do combustível, devo confessar que o enunciado é confuso, ou pelo menos aberto demais para as possibilidades. Vou considerar que o programa deverá receber o preço cobrado pela Petrobras (item “Realização Petrobras”) para calcular o custo total.
Para o cálculo eu utilizei uma “regra de 3”, na qual o valor cobrado pela Petrobras representa o percentual lido para a “Realização Petrobras” e o valor total do preço é, logicamente, 100%. É baseado na tabela abaixo que gero o cálculo mostrado na linha 24 do código abaixo.
petro ——- 33,5% (armazenado na variável “e”) |
preco ——- 100% |
#include <stdio.h>
int main() {
float a, b, c, d, e, petro, preco;
printf("Digite o valor do ICMS: ");
scanf("%f", &a);
printf("Digite o valor da Distribuição e Revenda: ");
scanf("%f", &b);
printf("Digite o valor De custo Etanol Anidro: ");
scanf("%f", &c);
printf("Digite o valor De CideePIS/PASEPeCOFINS: ");
scanf("%f", &d);
printf("Digite o valor De Realização Petrobras: ");
scanf("%f", &e);
printf("Valor cobrado pela Petrobras: ");
scanf("%f", &petro);
preco = petro*100 / e;
printf("O valor da Gasolina = %f\n", preco);
return(0);
}
Veja que nessa minha solução eu somente utilizo a “Realização Petrobras” e o valor cobrado pelo combustível vindo dessa distribuidora. As demais distribuições de combustível não são relevantes para calcular o preço total e poderiam ser retiradas do algoritmo.
Pingback: Calcular distribuição de preços de combustível – Algoritmos e programação