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.

Fonte da imagem: https://www.webposto.com.br/blog/economia/icms-como-ele-afeta-o-preco-dos-combustiveis/

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%
Regra de três para a cálculo do preço total do combustível
#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.

Share

Uma opinião sobre “Solicitação de algoritmo 11 – preço do combustível

  1. Pingback: Calcular distribuição de preços de combustível – Algoritmos e programação

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.