• Nenhum resultado encontrado

LISTA DE EXERCÍCIOS 06 (GABARITO)

N/A
N/A
Protected

Academic year: 2021

Share "LISTA DE EXERCÍCIOS 06 (GABARITO)"

Copied!
7
0
0

Texto

(1)

LISTA DE EXERCÍCIOS 06 (GABARITO)

CURSO: Bacharelado em Engenharia Elétrica MODALIDADE: Ensino Superior MÓDULO/SEMESTRE/SÉRIE: 1º TURMA: 2016.2

DISCIPLINA: Introdução à Programação DOCENTE: Alexandro dos Santos Silva

INSTRUÇÕES

• Para resolução das questões abaixo, será admitido o uso apenas da sintaxe adotada para escrita de programas em C/C++;

• As imagens exibidas após o enunciado de algumas questões contêm simulações de execução dos programas propostos. Não é necessário que o layout de exibição de mensagens seja seguido rigorosamente da forma como é mostrado nas imagens.

1. Segundo o IBGE (Instituto Brasileiro de Geografia e Estatística), desde 20111, a expectativa de vida ao nascer do brasileiro superou

os 74 anos. A partir da entrada dos anos de nascimento de um determinado casal (marido e esposa), escreva um programa para identificação e exibição de qual, dentre eles (marido ou esposa), será o primeiro a falecer, com base na expectativa de vida (74 anos) apurada pelo IBGE em 2011 (ou seja, desconsidere a expectativa de vida do país, quando do nascimento do casal), além do próprio ano de falecimento de tal. É exigido que o programa exiba mensagens apropriadas, quando da solicitação dos anos de nascimento do marido e da esposa.

Resp.: a identificação do primeiro conjugue a falecer se baseia na comparação dos anos de nascimento de ambos: se o ano de nascimento do marido for anterior ao ano de nascimento da esposa, o marido será o primeiro conjugue a falecer; caso contrário, será a esposa (com exceção do caso em que ambos nascem no mesmo ano, conforme instruções das linhas 13 a 16). O ano de falecimento é computado pelo acréscimo de 74 anos ao ano de nascimento do primeiro conjugue a falecer (vide instruções das linhas 14, 18 e 22). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <iostream> using namespace std; int main() {

int anomar, anoesp, anofalecimento; cout << "Ano Nascimento Marido: "; cin >> anomar;

cout << "Ano Nascimento Esposa: "; cin >> anoesp;

if (anomar == anoesp) {

anofalecimento = anomar + 74;

cout << "PRIMEIRO A FALACER: AMBOS, EM " << anofalecimento << "\n"; }

else if (anomar < anoesp) { anofalecimento = anomar + 74;

cout << "PRIMEIRO A FALACER: MARIDO, EM " << anofalecimento << "\n"; }

else {

anofalecimento = anoesp + 74;

cout << "PRIMEIRO A FALACER: ESPOSA, EM " << anofalecimento << "\n"; }

}

2. Considere que um litro de tinta, de determinado fabricante, é suficiente para a pintura de 3 m2. Suponha ainda que o proprietário

de um imóvel adquira uma determinada quantidade de galões da tinta em questão, para proceder com a pintura de uma parede de um cômodo do imóvel. Escreva um programa para determinar se a quantidade de galões adquiridos é suficiente (ou não) para a pintura completa de tal parede, com a exibição de uma mensagem apropriada, a partir da entrada das dimensões da parede em questão (altura e largura), em metros, além da própria quantidade de galões adquiridos. Quando da escrita do programa, deverão ser observados os seguintes aspectos:

• Cada galão possui 3,24 litros de tinta; • A parede será pintada em ambos os lados.

(2)

ela será pintada em ambos os lados. Após isso, calcula-se a quantidade de litros de tinta com a quantidade de galões adquiridos (vide instrução da linha 20) e a área possível a ser pintada com base no rendimento de cada litro de tinta (vide instrução da linha 21). Finalmente, são realizadas comparações entre a área a ser pintada e a área possível a ser pintada para determinar se a quantidade de galões adquiridos é suficiente.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <iostream> using namespace std; int main() { int galoes;

float litros; // quantidade de litros de tinta; float altura, largura; // dimensões da parede

float area; // área da parede a ser pintada float areapossivel; // área que pode ser pintada cout << "QUANTIDADE GALOES:...: ";

cin >> galoes;

cout << "ALTURA PAREDE (EM METROS).: "; cin >> altura;

cout << "LARGURA PAREDE (EM METROS): "; cin >> largura;

area = (altura * largura) * 2; litros = galoes * 3.24;

areapossivel = litros * 3; if (areapossivel < area) {

cout << "QUANTIDADE DE GALOES INSUFICIENTE!\n"; }

else {

cout << "QUANTIDADE DE GALOES SUFICIENTE!\n"; }

}

3. Escreva um programa em que identifique e exiba a soma dos quadrados dos primeiros números naturais não nulos, além da média destes quadrados. Sobre a quantidade de números naturais, tal informação deve ser fornecida pelo usuário através de uma operação de entrada de dados.

Resp.: aqui cabe uma observação em relação à instrução de declaração da variável de soma dos quadrados dos números naturais na linha 7; usa-se um tipo de ponto flutuante para evitar que o resultado da operação de cálculo da média localizada na linha 17 seja um número inteiro. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <iostream> using namespace std; int main() { int n, i; double soma = 0; double media;

cout << "INDIQUE A QUANTIDADE: "; cin >> n;

for (i=1; i<=n; i++) { soma = soma + (i * i); }

media = soma / n;

cout << "SOMA QUADRADOS NUMEROS.: " << soma << "\n"; cout << "MEDIA QUADRADOS NUMEROS: " << media << "\n"; }

4. Escreve um programa em que, após a entrada de um horário no formato hh mm (horas e minutos), seja exibido o horário imediatamente anterior a este horário. Se for informado, por exemplo, o horário 11h50min, o horário anterior a este horário será 11h49min; caso o horário informado, no entanto, seja 23h00min, o horário anterior ao mesmo será 22h59min. Certifique-se de que os dados informados sejam validados; caso estejam incorretos, uma mensagem apropriada deverá ser exibida.

(3)

Resp.: o horário anterior padrão em relação a um horário qualquer é obtido pela subtração de 1 (uma) unidade em relação à quantidade de minutos, acompanhado da manutenção da quantidade de horas decorridas desde o início do dia (vide instruções das linhas 23 a 25). Há duas exceções à esta regra: o horário de meia-noite (00h00min), conforme mostrado nas instruções das linhas 15 a 18, e demais horários com quantidade nula de minutos, conforme mostrado nas instruções das linhas 19 a 22).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <iostream> using namespace std; int main() { int hh, mm;

cout << "INFORME O HORARIO (FORMATO HH MM): "; cin >> hh >> mm;

if (hh < 0 || hh > 23 || mm < 0 || mm > 59) { cout << "HORARIO INFORMADO INVALIDO!\n"; } else { if (hh == 00 && mm == 00) { hh = 23; mm = 59; } else if (mm == 00) { hh = hh - 1; mm = 59; } else { mm = mm - 1; }

cout << "HORARIO ANTERIOR: " << hh << ":" << mm << "\n"; }

}

5. Uma determinada concessionária de energia elétrica adota um sistema de tarifação em que o valor da tarifa cobrada por quilowatt/hora (KWh) é determinado a partir da classe consumidora na qual se encontra enquadrada a unidade consumidora. Além disso, quando do fechamento da fatura mensal, é acrescido ao valor cobrado pelo consumo mensal em quilowatts/hora (aqui denominado de valor de fornecimento) uma taxa de ICMS (Imposto sobre Circulação de Mercadorias e Serviços), deduzida a partir da aplicação de uma alíquota de 30% sobre o valor de fornecimento. Sobre a relação de classes consumidoras, com seus respectivos valores de tarifa por quilowatt/hora, segue-se abaixo:

Classe Consumidora Tarifa por Quilowatt/hora (R$)

Classe 1 0,50

Classe 2 0,80

Classe 3 1,00

Escreva um programa em que é permitido ao usuário fornecer o consumo (em quilowatts/hora) e a classe de consumidora de diversas unidades (um número inteiro entre 1 e 3), para exibição dos valores das faturas mensais de consumo. O encerramento do programa se dará quando for informado 0 (zero), quando da entrada do consumo em quilowatts/hora da próxima unidade.

Resp.: o cálculo do valor de consumo mensal é realizado com as instruções das linhas 18 a 26; o acréscimo de 30% sobre o próprio valor do consumo mensal é obtido com a instrução da linha 28, por uma multiplicação por 1,3.

(4)

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 using namespace std; int main() { float kWh; int classe; float fatura; do {

cout << "CONSUMO (QUILOWATTS/HORA).: "; cin >> kWh;

if (kWh != 0) {

cout << "CLASSE CONSUMO (1, 2 OU 3): "; cin >> classe; if (classe == 1) { fatura = kWh * 0.5; } else if (classe == 1) { fatura = kWh * 0.8; } else { fatura = kWh * 1.0; } fatura = fatura * 1.3;

cout << "FATURA MENSAL = " << fatura << "\n\n"; }

} while (kWh != 0); }

6. Escreva um programa de apuração do saldo bancário de uma determinada conta corrente. Inicialmente, deverá ser informado, pelo usuário, o saldo anterior da referida conta, antes da realização das 3 (três) últimas operações de movimentação. Em seguida, caberá também ao usuário informar estas 3 (três) operações realizadas. Para cada operação, deverá ser informado seu código (um caractere) e o montante (valor) envolvido na operação. Sobre o código, adote a tabela abaixo:

Operação Código

Saque S

Depósito D

Após a entrada dos dados das 3 (três) últimas operações de movimentação, caberá ao programa calcular e exibir o saldo final. Se for constatado que ele é negativo, uma mensagem apropriada deverá ser exibida.

Resp.: além do uso de um bloco de repetição para a entrada das operações de movimentação (instruções entre as linhas 17 e 30), cabe destacar tratamento aqui incluído para a entrada de caracteres tanto em caixa alta (maiúsculos) como em caixa baixa (minúsculos). 1 2 3 4 5 6 7 8 #include <iostream> using namespace std; int main() { int i;

float saldo, movimento; char operacao;

(5)

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

cout << "<-- MOVIMENTACAO CONTA BANCARIA -->\n\n"; cout << "Saldo Inicial: ";

cin >> saldo;

cout << "\n<--- ULTIMAS OPERACOES --->\n"; for (i=1; i<=3; i++) {

cout << "\nOperacao 1 (S-Saque, D-Deposito): "; cin >> operacao;

cout << "Valor Movimento...: "; cin >> movimento;

if (operacao == 's' || operacao == 'S') { saldo = saldo - movimento;

}

else if (operacao == 'd' || operacao == 'D') { saldo = saldo + movimento;

} }

cout << "\nSALDO FINAL: " << saldo << "\n"; if (saldo < 0) {

cout << "SALDO NEGATIVO APOS MOVIMENTACOES!\n"; }

}

7. Um palíndromo é uma sequência de caracteres que é lida da esquerda para a direita ou da direita para a esquerda. Por exemplo, cada um dos seguintes números inteiros de cinco dígitos é um palíndromo: 12321, 55555, 45554 e 11611. Escreva um programa que, a partir da entrada de número inteiro de 5 dígitos, determina se ele é ou não um palíndromo. Se o número não for de cinco dígitos, permita ao usuário inserir um novo valor.

Observação: é obrigatório o uso de uma variável inteira para o armazenamento do número de 5 dígitos.

Resp.: a extração dos dígitos do número informado é realizada a partir de operações de divisão inteiro e módulo, conforme posto em instruções entre as linhas 17 e 21. Para que o número informado seja um palíndromo, é suficiente que o 1º dígito seja idêntico ao 5º dígito e que o 2º dígito seja idêntico ao 4º dígito (aqui adotou-se uma numeração de dígitos da esquerda para a direita).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <iostream> using namespace std; int main() { int n; int d1, d2, d3, d4, d5;

cout << "INFORME UM NUMERO INTEIRO DE 5 DIGITOS: "; cin >> n;

while (n < 10000 || n > 99999) { cout << "INFORME-O NOVAMENTE!"; cin >> n; } d1 = n / 10000; d2 = n / 1000 % 10; d3 = n / 100 % 10; d4 = n / 10 % 10; d5 = n % 10; if (d1 == d5 && d2 == d4) {

cout << "O NUMERO INFORMADO EH UM PALINDROMO\n"; }

else {

cout << "O NUMERO INFORMADO NAO EH UM PALINDROMO\n"; }

(6)

cada um dos alunos, sua média final na disciplina. Após o término da entrada de dados, deverá ser calculado e exibido o índice de aprovação da disciplina. Considere como aprovado cada aluno que obtiver média final igual ou superior a 6,00. Para proceder com o cálculo do índice de aprovação da disciplina, adote a fórmula abaixo:

Í𝑛𝑑𝑖𝑐𝑒 𝐴𝑝𝑟𝑜𝑣𝑎çã𝑜 =Quantidade de Alunos Aprovados

Quantidade de Alunos ×100.0

Resp.: de forma análoga ao observado na resolução da questão 03, é declarada uma variável de ponto flutuante para armazenamento do quantitativo de aprovações, de modo a evitar que o resultado da operação de cálculo do índice de aprovação localizada na linha 24 seja um número inteiro.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include <iostream> using namespace std; int main() { int i, qtd; float aprovacoes = 0; float indice, media;

cout << "QUANTIDADE DE ALUNO(A)S: "; cin >> qtd;

cout << "\n";

for (i=1; i<=qtd; i++) {

cout << "MEDIA FINAL ALUNO(A) " << i << ": "; cin >> media; if (media >= 6) { aprovacoes++; } } indice = aprovacoes / qtd * 100;

cout << "\nINDICE APROVACAO: " << indice << "%\n"; }

9. Uma determinada empresa deseja fazer uma pesquisa de mercado para identificar quais pessoas gostam ou não de um novo produto lançado recentemente no mercado. Para tal, deverá ser fornecida, por cada entrevistado, uma resposta, da seguinte forma: “s”, se aquela pessoa gostar do produto, ou “n”, caso contrário. Sabe-se que serão entrevistadas 12 (doze) pessoas. Desenvolva um programa para leituras das respostas destes entrevistados, seguido do cálculo e da exibição do índice de aceitação do produto. Para proceder com o cálculo do índice de aceitação dos produtos, adote a fórmula abaixo:

Í𝑛𝑑𝑖𝑐𝑒 𝐴𝑐𝑒𝑖𝑡𝑎çã𝑜 =Quantidade de Entrevistados que gostam do Produto

12 ×100.0

Resp.: 1 2 3 4 5 6 7 8 9 10 11 #include <iostream> using namespace std; int main() { int i; float aceitacoes = 0; float indice; char resp;

(7)

12 13 14 15 16 17 18 19 20 21 22 23

cout << "RESPOSTA PESSOA " << i << "(S/N): "; cin >> resp; if (resp == 's' || resp == 'S') { aceitacoes++; } } indice = aceitacoes / 12 * 100;

cout << "\nINDICE ACEITACAO: " << indice << "%\n"; }

Referências

Documentos relacionados

- Remover as pastilhas usadas e retornar todo o parafuso de regulagem em seguida montar uma pastilha nova do lado da roda, empurrando com a mão a pinça no sentido do cilindro de

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Após a realização de todas as atividades teóricas e práticas de campo, pode-se concluir que não há grande erosão do conhecimento popular e tradicional de plantas medicinais, que

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

Diagnóstico uma das atividades mais importantes no diálogo entre o ensino e aprendizagem. O diagnóstico tem como objetivo construir uma visão detalhada de cada aluno ,e,

É nosso objetivo prestar o Serviço de Apoio Domiciliário, de acordo com a legislação aplicável e as orientações da Segurança Social: fornecimento e apoio nas