Expressões e precedência

Ver Todos os Exercícios

Teoria

E aí, aqui é o Juan do Responde Aí. E hoje vamos falar de expressões matemáticas e a precedência dos operadores no C++

Evitando confusões.

Talvez você já tenha visto por aí alguns memes de matemática tipo esse:

Geralmente quem faz esse tipo de meme escreve uma expressão matemática confusa de propósito! No exemplo acima você pode resolver a questão de duas formas

Assim: 8 ÷ 2 2 + 2 ⇒ 8 2 ( 2 + 2 ) ⇒ 8 2 4 ⇒ 8 8 ⇒ 1

Ou assim: 8 ÷ 2 2 + 2 ⇒ 8 2 2 + 2 ⇒ 8 2 4 ⇒ 4 ( 4 ) = 16

Até calculadoras ficam confusas com esse tipo de conta. Olha esse exemplo com a expressão 6 ÷ 2 ( 1 + 2 )

Existem muitas formas de escrever expressões matemáticas confusas que nos levam a erros. Pra evitar esse tipo de erros devemos sempre escrever expressões usando corretamente as regras de precedência e associatividade.

Expressões em C++

Como você escreveria a seguinte expressão no C++?

1 + 2 ⋅ ( 3 + 5 ) 3 - 2

Se eu escrever dessa forma, estaria correto?

O código acima está muito errado! Na matemática as operações ocorrem em uma ordem: primeiro parêntesis, depois multiplicação e divisão, e só depois a soma e subtração.

A melhor forma de escrever a expressão é usando os parêntesis, pra forçar a expressão a seguir a ordem que a gente quer! Se a gente escrever dessa outra forma, estará bem melhor:

Essa ordem das operações é chamada de precedência, e é isso que vamos estudar agora:

Precedência de operadores da linguagem C++

No vocabulário dos programadores, a palavra precedência se refere a ordem que as operações são executadas. Já a associatividade é a ordem que os operadores começam a ser resolvidos, que pode ser da direita pra esquerda ou da esquerda pra direita.

Ficou confuso? Então olha esse exemplo: como resolvemos 5 × 3 + 6 ? Primeiro resolvemos a multiplicação, e depois resolvemos a soma: 5 × 3 + 6 ⇒ 15 + 6 ⇒ 21 . Isso é um exemplo de precedência! A multiplicação vem primeiro porque ela tem uma precedência maior.

Agora outro exemplo. Se a gente tiver uma variável x = 4 , como o C++ resolve a expressão x = x + 5 ? Bem primeiro ele resolve a expressão na direita x + 5 ⇒ 4 + 5 ⇒ 9 , e depois ele guarda o valor na variável da esquerda. Isso é um exemplo de associatividade, onde o operador de atribuição ( = ) é resolvido da direita para a esquerda!

De maneira geral, a precedência e associatividade do C++ funcionam igual a matemática tradicional. Mas se tiver dúvida, dá uma olhada nessa tabela:

Com a maior precedência estão os parêntesis. Na sequência os operadores unários, depois aritméticos, e em seguida os de inserção, relacionais e lógicos e por último os operadores de atribuição.

Ah, só um detalhe, o símbolo - pode ser operador unário de negativo, que transforma o positivo 1 (um) no negativo - 1 (menos um), por exemplo. Mas também pode ser o operador aritmético de subtração.

Bom, e a teoria é essa. Pra fixar bem, o melhor é fazer uns exemplos.

Exemplo 1: Como o C++ resolveria a operação 5.0 / 2 + 6 * 35 ?

Pelas regras de precedência, primeiro resolve a divisão e a multiplicação, e depois resolvemos a soma:

5.0 / 2 + 6 * 35 = 2.5 + 210 = 212.5

Olha o resultado no código:

Exemplo 2: Como o C++ resolve a expressão 12 % 5 + 23 - 10 * 5 ?

Aplicando as regras de precedência primeiro resolve o parêntesis:

12 % 5 + 23 - 10 * 5 ⇒ 12 % 5 + 13 * 5

Depois a multiplicação e o módulo

12 % 5 + 13 * 5 ⇒ 2 + 65

E por fim resolvemos a soma

2 + 65 = 67

No C++ fica assim:

Exemplo 3: Como o C++ resolveria a expressão 8 / 2 * ( 2 + 2 ) ?

Essa é aquela expressão confusa lá do começo. Pra começar, vamos resolver os parêntesis

8 / 2 * ( 2 + 2 ) ⇒ 8 / 2 * 4  

Certo, mas e agora? Se a multiplicação e divisão têm a mesma precedência, qual delas deve ser resolvida primeiro? Nesse caso olhamos pra regra de associatividade, e resolvemos a expressão da esquerda pra direita.

Primeiro a divisão:

8 / 2 * 4 ⇒ 4 * 4  

Depois a multiplicação:

4 * 4 = 16  

E olha só ela no código:

Exemplo 4: Qual o resultado da expressão 5 + 3 > 0 + (   ( 54 - 1 ) - 5 ) / ( 4 + 8 + 4 * 3   )

Essa expressão é um pouco grande. Mas fazendo com calma não tem erro. Primeiro vamos resolver os parêntesis internos:

5 + 3 > 0 + 53 - 5 / ( 4 + 20   )

Agora os parêntesis externos:

5 + 3 > 0 + 48 / 24

Depois resolvemos a divisão:

5 + 3 > 0 + 2

Resolvemos as somas:

8 > 2

E por último, resolvendo a operação relacional. Sabemos que 8   é maior do que 2 . Logo o resultado da expressão relacional é verdadeiro, que no C++ é representado pelo número 1

1

Olha só essa expressão no C++

Criando boas expressões matemáticas com C++

Agora que você acabou de ver as regras talvez tenha achado um pouco confuso, ou tenha achado que é coisa demais. Mas com a prática você se acostuma.

Mas fica tranquilo, vou te dar umas dicas pra não ter risco de errar

  1. Na dúvida, usa os parêntesis. Você pode usar e abusar deles pra colocar as expressões na ordem que você quiser.
  2. Separe uma expressão grande em expressões menores
  3. Evite colocar incrementos ( + + ) e decrementos ( - - ) dentro das expressões. Eles podem deixar o código difícil de ler.

E por hoje é isso. Agora vamos ver uns exercícios de fixação.

Precedência de operadores da linguagem C++

Criando boas expressões matemáticas com C++

Exercícios Resolvidos

Exercício Resolvido #1

Um laboratório de pesquisas governamental conclui que um adoçante artificial comumente usados em refrigerantes dietéticos causa a morte de ratos de laboratório. Um amigo seu está desesperado para perder peso e não consegue deixar de tomar refrigerantes. Seu amigo quer saber quanto refrigerante dietético é possível tomar sem morrer. Escreva um programa para dar essa resposta. Os dados de entrada serão a quantidade de adoçante artificial necessária para matar um rato, o peso do rato e o peso da pessoa em dieta. Para garantir a segurança do seu amigo, faça com que o programa requisite o peso com o qual ele deseja ficar, em vez do peso atual. Assuma que o refrigerante dietético contém um décimo de 1% de adoçante artificial. Utilize uma declaração de variável com o modificador const para dar um nome a esta fração. Você pode querer expressar a porcentagem como o valor double 0.001.

Passo 1

Vamos lá galera, essa é uma questão de proporção.

Pra começo de conversa, a questão da uma informação importante o refrigerante dietético contém um décimo de 1% de adoçante, então vamos guardar essa informação em uma constante do tipo d o u b l e chamada R A Z A O _ A D O C A N T E   =   0.001

A questão nos diz quais são as entradas do programa então vamos criar variáveis para guardar cada uma: A primeira é a quantidade de adoçante capaz de matar um ratinho, criamos a variável q u a n t i a M a t a R a t o . A segunda é o peso do rato, vamos chamar de p e s o R a t o . E a terceira é o peso que o amigo quer atingir, com o nome p e s o P e s s o a F i m . O tipo dessas variáveis deve ser d o u b l e , para permitir valores reais com alta precisão.

Agora, temos que levar em consideração quais serão as saídas do programa. A primeira saída é a quantidade máxima de refrigerante dietético, vamos chamar de q u a n t i a M a x R e f r i . Porém, pra facilitar os cálculos, vamos criar também uma variável intermediária chamada q u a n t i a M a x A d o c a n t e para guardar a quantidade máxima de adoçante.

Passo 2

Show! Agora vamos usar o cin para receber os valores do usuário. Não esqueça de usar o cout para imprimir uma mensagem pro usuário.

Outro detalhe, pra facilitar nossas contas vamos pedir todos os pesos em gramas.

Passo 3

Agora é hora de calcular nossos resultados. Pra calcular a quantidade máxima de adoçante vamos usar a expressão:

q u a n t i a M a x A d o c a n t e   =   q u a n t i a M a t a R a t o * p e s o P e s s o a F i m / p e s o R a t o

E pra calcular a quantidade máxima de refrigerante vamos usar essa outra expressão:

q u a n t i a M a x R e f r i   =   q u a n t i a M a x A d o c a n t e / R A Z A O _ A D O C A N T E

Essa é a melhor forma de fazer pois com duas contas simples teremos menos chance de errar.

Vamos colocar isso no nosso código:

Passo 4

E pra finalizar a questão vamos usar o cout para imprimir duas mensagens que informem a quantidade máxima de adoçante e de refrigerante que podem ser consumidos.

E xablau! Questão resolvida!

Resposta

Exercício Resolvido #2

Calcule a quantidade dinheiro gasto por um fumante. Dados: o número de anos que ele fuma, o nº de cigarros fumados por dia e o preço de uma carteira com 20 cigarros.

Passo 1

Vamos analisar quais são as entradas e saídas deste programa, e vamos decidir o tipo e o nome pras variáveis.

Entradas:

  • Quantos anos o usuário fuma: vamos usar uma variável f l o a t chamada a n o s F u m a , possibilitando que o usuário fume “um ano e meio” por exemplo.
  • A quantidade de cigarros pode ser do tipo i n t chamada c i g a r r o s P o r D i a , pois é incomum fumar “meio cigarro”
  • O preço da carteira pode ser do tipo f l o a t chamada p r e c o C a r t e i r a , pois precisamos de apenas duas casas decimais para inserir dinheiro.

Saídas: A quantidade de dinheiro gasto, pode ser do tipo f l o a t chamada d i n h e i r o G a s t o .

Além disso, a questão informa a quantidade de cigarros em uma carteira, vamos guardar numa variável chamada c i g a r r o s C a r t e i r a   =   20 ;

Então vamos criar as variáveis e constantes:

Passo 2

Agora vamos pedir as entradas pro usuário. Pra isso a gente usa a função c o u t para enviar uma mensagem pro usuário, e com a função c i n a gente recebe os valores que o usuário digitar:

Passo 3

E agora é hora da matemática!

O preço de um cigarro é o preço da carteira, dividido pela quantidade de cigarros numa carteira: p r e c o C a r t e i r a / c i g a r r o s C a r t e i r a

A quantidade total de dias fumando, considerando anos bissextos, é: a n o s F u m a * 365.25

Então, o total gasto com cigarros é:

d i n h e i r o G a s t o = C i g a r r o s P o r D i a * p r e c o C a r t e i r a c i g a r r o s C a r t e i r a * ( a n o s F u m a * 365.25 )

Vamos colocar isso no C++:

A expressão ficou muito grande. Então basta pular pra próxima linha e continuar a conta normalmente. Lembre-se: pro C++ uma linha de código só acaba quando ele encontra o ponto e vírgula.

Passo 4

Pra finalizar a questão, é só a gente imprimir o resultado na tela, e pra isso usamos o c o u t :

Resposta

Exercício Resolvido #3

Uma equação do segundo grau é do tipo

y = a x 2   +   b x   +   c

Receba os valores de a , b , c , e um valor qualquer para x , e calcule o valor de y .

Passo 1

Vamos lá:

As entradas desse programa são os valores de a , b , c e x . Essas variáveis podem ser quaisquer valores reais, então vamos usar o tipo d o u b l e .

O resultado é y , que também pode assumir qualquer valor real, então vamos usar o tipo d o u b l e também.

Passo 2

Agora, usando o c i n vamos receber os valores do usuário. Com o c o u t imprimimos mensagem pra guiar o usuário:

Passo 3

Agora vamos fazer as contas. É só aplicar a equação descrita na questão.

Pra conseguir o valor de x 2 vamos fazer x * x . Depois é so colocar a * x * x + b * x + c . Como as multiplicações são calculadas primeiro, nem precisamos nos preocupar em usar parêntesis.

No código fica assim:

Passo 4

E pra finalizar, vamos imprimir o resultado na tela.

Usando o c o u t de uma maneira esperta, a gente pode fazer o C++ imprimir o valor de x entre parêntesis, saca só:

E questão finalizada.

Resposta

Exercício Resolvido #4

João escreveu uma expressão onde y = 2 x 2 quando x > 0 , e y = - 2 x 2 - x 15 quando x ≤ 0 . A expressão ficou dessa forma:

y = x > 0 * 2 * x * x + x < = 0 * ( - 2 * x * x - x / 15 )

Sabendo que x e y são variáveis do tipo double responda:

Demonstre a ordem que as expressões serão executadas.

Mostre que y = 2 quando x = 1 .

Mostre que y = - 1 quando x = - 3 .

Passo 1

Vamos lá. Essa é uma questão de precedência e associatividade. Então vamos tirar um tempinho pra lembrar da nossa tabela:

Passo 2

A gente sempre deve começar pelos parêntesis mais internos. Nesse caso é a expressão destacada em vermelho:

Agora temos 4 parêntesis externos. Todos tem a mesma precedência, mas pela regra de associatividade devemos analisá-los da esquerda para direita

Depois que os parêntesis estão resolvidos, temos que calcular as multiplicações. Temos duas multiplicações, então, pelas regras de associatividade, devemos analisar da esquerda pra direita.

Depois é calculada a soma:

E por fim o valor resultado é guardado na variável y :

Passo 3

Belezinha. Agora vem comigo que vamos colocar essa sequência de passos em prática

Primeiro, onde tiver x vamos substituir por 1 :

y = 1 > 0 * 2 * 1 * 1 + 1 < = 0 * ( - 2 * 1 * 1 - 1 / 15 )

Em seguida, vamos resolvemos o parêntese mais interno:

y = 1 > 0 * 2 * 1 * 1 + 1 < = 0 * ( - 3 / 15 )

Na sequência, resolvemos os parêntesis externos

y = t r u e * 2 + f a l s e * ( - 3 / 15 )

A gente sabe que t r u e = 1 e f a l s e = 0 , vamos substituir:

y = 1 * 2 + 0 * ( - 0.2 )

Agora vamos resolver as multiplicações:

y = 2 + 0

E por fim a soma:

y = 2

Passo 4

Legal né?!

Vamos fazer o mesmo passo a passo, mas para x = - 3 :

y = - 3 > 0 * 2 * - 3 * - 3 + - 3 < = 0 * ( - 2 * - 3 * - 3 - - 3 / 15 )

Primeiro resolvemos o parêntese mais interno:

y = - 3 > 0 * 2 * - 3 * - 3 + - 3 < = 0 * ( - 15 / 15 )

Agora os parêntesis externos

y = f a l s e * 18 + t r u e * ( - 15 / 15 )

Sabemos que t r u e = 1 e f a l s e = 0 , então vamos substituir:

y = 0 * 18 + 1 * ( - 15 / 15 )

Agora vamos resolver as multiplicações:

y = 0 + - 1

E por fim a soma:

y = - 1

Resposta

Ei, a resposta está no passo a passo :)

Exercício Resolvido #5

Os trabalhadores de uma empresa em particular receberam um aumento de 7,6% retroativo a seis meses. Escreva um programa que tome o salário anual anterior de um empregado como entrada e apresente como saída a quantidade de pagamento retroativo devido ao empregado, o novo salário anual e o novo salário mensal. Utilize uma declaração de variável com o modificador const para expressar o aumento de pagamento.

Passo 1

Pra começar, vamos analisar o que a questão quer e o que ela nos dá:

A entrada de dados é o salário antigo, vamos criar uma variável d o u b l e chamada s a l a r i o A n u a l A n t e r i o r

As saídas do programa são: o salário anual, o salário mensal e o pagamento retroativo. Vamos criar então três variáveis do tipo d o u b l e chamadas S a l a r i o A n u a l , S a l a r i o M e n s a l , e p a g a m e n t o R e t r o a t i v o .

A questão oferece como dado o valor percentual do aumento semestral, que vamos declarar como A U M E N T O   =   0.076 , como é um valor fixo de alta precisão será uma c o n s t   d o u b l e .

Ah, a questão tem uma pegadinha: os valores serão calculados com base no salário anual, porém, a resposta do programa é para um semestre.

Passo 2

Usando o c o u t a gente imprime uma mensagem pro usuário e com o c i n vamos receber o valor do salário antigo:

Passo 3

Agora vamos efetuar os cálculos.

O novo salário é um aumento percentual sobre o salário antigo. Então podemos dizer:

S a l a r i o A n u a l = s a l a r i o A n u a l A n t e r i o r + A U M E N T O * s a l a r i o A n u a l A n t e r i o r

Organizando essa expressão, podemos simplificar da seguinte forma:

S a l a r i o A n u a l = s a l a r i o A n u a l A n t e r i o r * ( 1 + A U M E N T O )

Escrevendo no C++:

Agora que temos o salário anual, basta dividir por 12 para ter o salário mensal:

Já sabemos o novo salário do empregado. Mas ele trabalhou 6 meses recebendo o salário antigo, então ele precisa receber a diferença que falta.

Para calcular o quanto a empresa deve, vamos subtrair o novo salário anual do salário anual antigo. Depois é só dividir por dois para ter a diferença para 6 meses.

Passo 4

Agora é so a gente imprimir as informações na tela utilizando o cout:

Resposta

Exercício Resolvido #6

Para saber a equação de uma reta precisamos ter um ponto inicial P 0 = ( x 0 , y 0 , z 0 ) e um vetor diretor v → = v x ⋅ i → + v y ⋅ j → + v z ⋅ k → . Com o ponto inicial e o vetor diretor, a equação da reta é dada por:

x = x 0 + v x ⋅ t y = y 0 + v y ⋅ t z = z 0 + v z ⋅ t

Onde t é uma variável de parametrização.

Conhecendo o ponto P 0 e o vetor v 0 é possível calcular a posição da reta para qualquer valor de t .

Receba do usuário o ponto P 0 , o vetor   v → e um valor de t , e calcule a imprima a ( x , y , z ) .

Passo 1

E aí pessoal. Aqui é o Juan do Responde Aí, e vamos lá resolver esse exercício.

A questão tem um enunciado bem grande, mas é só porque ela explica pra gente como calcular a equação de uma reta. Na prática, só o que a gente precisa fazer é receber as componentes do ponto, do vetor e o valor de t e calcular a reta usando o sistema de equações.

Mas pra começar, a gente precisa escrever o cabeçalho do programa:

Também precisamos declarar as variáveis do programa. O ponto P 0 é composto por três números (suas componentes). Então para receber esse ponto vamos precisar de três variáveis, uma pra cada componente: x 0 , y 0 e z 0 , todas do tipo d o u b l e para termos alta precisão de cálculo.

Seguindo o mesmo princípio, vamos declarar o vetor v → , que também é composto por outros três números: v x , v y e v z . Elas também serão do tipo d o u b l e

Já a variável t é um valor escalar. Então só precisamos receber o valor de t normalmente:

Certo, já temos tudo que precisamos para calcular a reta! Porém precisaremos de variáveis para guardar esses resultados. Então vamos criar as variáveis x , y e z para armazenar os resultados. Note que essas variáveis devem ser do tipo d o u b l e , pois todas as demais variáveis da equação são deste tipo também:

Passo 2

Show de bola! Temos as variáveis todas declaradas, então precisamos preencher as variáveis com os valores do usuário. Para isso vamos usar o c o u t para solicitar os valores, e o c i n para armazenar cada valor na variável adequada

Primeiro, na linha 12, vamos exibir uma mensagem informado qual item vamos receber. Eu vou querer receber primeiro o ponto P 0 . Em seguida, na linha 13, vou informar para o usuário que quero receber a componente x 0 . Note que coloquei uma tabulação \ t para facilitar a visualização. E na linha 14 usamos o comando c i n para guardar o valor digitado na variável x 0 . E vamos repetir o mesmo processo nas linhas 15 a 19 para receber as demais componentes do ponto P 0 :

Seguindo a mesma lógica, vamos receber também os valores do vetor e armazenar nas variáveis v x , v y e v z .

E também vamos receber um valor para a variável paramétrica t :

Belezinha!

Passo 3

Ok, agora que temos todos os valores, podemos calcular o valor da reta. Pra isso, vamos precisar montar as seguintes equações:

x = x 0 + v x ⋅ t y = y 0 + v y ⋅ t z = z 0 + v z ⋅ t

Vamos usar o operador de multiplicação ( * ) e o operador de adição ( + ) para escrever a equação e com o operador de atribuição ( = ) guardamos na variável adequada.

A precedência maior é do operador de multiplicação, depois do de soma e por último do operador de atribuição. Então, nesse caso não vamos precisar utilizar parêntesis:

x = x 0 + v x * t

E fazemos o mesmo para calcular y e z :

Passo 4

Agora a questão ta quase concluída. Só precisamos exibir o resultado, e pra isso vamos usar o c o u t .

Passo 5

Para testar se o programa funciona direitinho, vamos rodar ele com os seguintes valores

  • P 0 = ( 1 , - 1,4 )
  • v → = 2 ⋅ i → + 3 ⋅ j → + 2 ⋅ k →
  • t = 5

E rodou liso que nem manteiga! Deu tudo certo, questão concluída!

Resposta

Exercício Resolvido #7

Leia a razão de uma PA (Progressão Aritmética) e o seu primeiro e último termos e informe a soma dos elementos dessa PA.

Passo 1

Vamos nessa, galerinha!

Pra começo de conversa, vamos lembrar o que para calcular a soma dos elementos de uma P.A a gente precisa saber três coisas: o primeiro termo ( a 0 ) , o último termo ( a n ) , e quantidade de termos ( n ) da P.A.

S o m a P A = n ⋅ a 0 + a n 2

Mas nessa questão o usuário vai inserir a razão ( r ) da P.A. e não vai inserir a quantidade de termos, e agora? 🤷‍♂️🤷‍♀️

Sem pânico! A gente pode calcular a quantidade de termos da seguinte forma:

n = a n - a 0 r + 1

Massa né! Então vamos por

Passo 2

Pra começar o nosso programa, vamos escrever o cabeçalho do código:

E vamos determinar as nossas variáveis. De cara vamos precisar dos elementos inicial e final da progressão. Como esses elementos podem ser quaisquer valores reais, vamos declará-los como f l o a t :

Em seguida vamos declarar uma variável para armazenar a razão da P.A., que também pode assumir qualquer valor real:

Para calcular a soma, primeiro teremos que calcular a quantidade de elementos da progressão. A quantidade de termos sempre será um valor do tipo inteiro! Então vamos declarar uma variável do tipo i n t

E por fim, vamos precisar de uma variável pra armazenar o resultado da soma. Esse valor pode ser qualquer valor real, então vamos declarar mais uma variável do tipo f l o a t

Passo 3

Show! Com as variáveis declaradas já podemos receber os valores do usuário. Vamos usar o c o u t e o c i n para receber os valores de a 0 , a n e r

Com o c o u t solicitamos um valor do usuário, e logo em seguida usamos o c i n para armazenar na variável adequada. Isso é feito três vezes, para receber as três variáveis:

Passo 4

Agora é hora da MATEMÁGICA!

Primeiro vamos precisar calcular a quantidade de elementos da P.A. usando a seguinte equação:

n = a n - a 0 r + 1

Para colocar isso no C++ vamos precisar usar uma expressão. Vamos colocar a subtração entre parêntesis para garantir que ela seja a primeira coisa a acontecer! Depois vamos efetuar a divisão e a soma:

n = ( a n - a 0 ) / r + 1

Devido as regras de precedência, o parêntese será executado primeiro, seguido da divisão e por fim da soma. No código fica:

O próxima passo é calcular a soma da P.A usando a equação

S o m a P A = n ⋅ a 0 + a n 2

Convertendo isso pra C++, fica assim:

n * ( a 0 + a n ) / 2

Novamente usamos os parêntesis para garantir que a soma seja a primeira coisa a ocorrer. A multiplicação e a divisão têm a mesma precedência, mas pela regra de associatividade a multiplicação vai acontecer primeiro e por ultimo ocorre a divisão. No código fica:

Passo 5

Prontinho. Com tudo calculado só falta a gente imprimir os resultados. A questão pede pra gente imprimir só a soma da P.A., mas é uma boa ideia imprimir também a quantidade de termos da P.A., pra ter certeza que tudo ocorreu certinho!

Usando o c o u t a gente primeiro imprime a quantidade de termos presentes na variável n , e em seguida imprimimos o resultado da variável s o m a :

Passo 6

Por último, mas não menos importante, vamos testar o programa.

Vamos calcular a soma da P.A que começa em a 0 = 2 até a n = 100 com razão r = 2

Eu sei que essa P.A têm 100 termos e o resultado da soma é 10100. Se o programa estiver certinho vamos ter que ver esses dois resultados:

E aí está! A resposta do programa está correta, e o exercício está concluído!

Resposta

Exercício Resolvido #8

O preço que um consumidor paga por um carro é composto pelo custo de fábrica, valor dos impostos e o valor do lucro do distribuidor. Faça um programa que gere o custo de fábrica de um carro e os valores pagos de imposto e pelo lucro do distribuidor, sabendo preço pago pelo consumidor. Dados: 45% de imposto sobre o custo de fábrica, e o lucro do distribuidor equivale a 12% sobre o custo de fábrica.

Passo 1

E aí, pessoal! Vamos pro exercício.

Antes de mais nada vamos escrever o cabeçalho do programa;

Essa questão fica mais fácil se a gente pensar em termos de entradas e saída do programa e vamos declarando as variáveis aos poucos.

Esse programa vai receber um único valor referente ao preço pago pelo consumidor. Este é um valor monetário, que sempre são valores reais com pelo menos duas casas decimais, então devem ser do tipo f l o a t :

f l o a t   p r e c o C o n s u m i d o r

E como saídas o programa vai imprimir o custo de fabricação do carro, o valor pago de impostos, e o valor do lucro do distribuidor.

f l o a t   c u s t o F a b r i c a f l o a t   v a l o r I m p o s t o f l o a t   v a l o r L u c r o

Além disso temos alguns dados necessários para resolver a questão. o valor da taxa de imposto que é 45%, e a taxa de lucro do distribuidor que é de 12%. Esses valores devem ser constantes, pois não devem ser alterados ao longo do código

c o n s t   f l o a t   t a x a I m p o s t o = 0.45 c o n s t   f l o a t   t a x a L u c r o = 0.12

A parte mais chata foi essa em que a gente organizou o programa. Agora vamos juntos desenvolver o restante.

Passo 2

Agora a gente precisa receber o valor que o consumidor paga pelo carro, pois essa será a base dos cálculos da questão.

Usando o c o u t vamos solicitar o valor, e com o c i n vamos armazenar o valor na variável adequada:

Passo 3

Beleza. Agora vamos desenvolver a contabilidade!

A questão afirma pra gente o preço do carro é a soma do custo de fabricação com o lucro e os impostos:

p r e c o C o n s u m i d o r = c u s t o F a b r i c a + v a l o r I m p o s t o + v a l o r L u c r o

E também diz que os impostos e o lucro são calculados com base no custo de fábrica:

v a l o r I m p o s t o   =   c u s t o F a b r i c a ⋅ t a x a I m p o s t o

v a l o r L u c r o   =   c u s t o F a b r i c a ⋅ t a x a L u c r o

Porém, o programa recebe o valor do preço pago pelo consumidor. Então podemos rearranjar as equações para descobrir o valor do custo de fábrica:

c u s t o F a b r i c a   = p r e c o C o n s u m i d o r 1   +   t a x a I m p o s t o   +   t a x a L u c r o

Para escrever isso no C++ vamos precisar usar parêntesis para garantir que a soma no denominador ocorra antes da divisão:

c u s t o F a b r i c a   =   p r e c o C o n s u m i d o r / ( 1   +   t a x a I m p o s t o   +   t a x a L u c r o )

No código teremos:

E com o custo de fabricação podemos calcular o valor do lucro e dos impostos:

Massa! Agora temos tudo calculado

Passo 4

Pra terminar o código só precisamos imprimir os resultados. Vamos utilizar o c o u t para imprimir o valor contido em cada variável, juntamente com uma frase que identifica o valor.

E prontinho, o código está finalizado

Passo 5

Pra finalizar, vamos testar o código. Vamos dizer que o consumidor paga um valor de R $ 78.500,00 em um carro. O resultado é:

Se a saída do seu programa está igual a essa, então está tudo certinho! Questão concluída.

Resposta