LISTA DE EXERCÍCIOS 0 (GABARITO) CURSO: Bacharelado em Engenharia Elétrica MÓDULO/SEMESTRE/SÉRIE: 1º TURMA: 0. DISCIPLINA: Introdução à Programação DOCENTE: Alexandro dos Santos Silva MODALIDADE: Ensino Superior INSTRUÇÕES Para resolução das questões abaixo, será admitido o uso apenas da sintaxe adotada para escrita de programas em C/C++. 1. Segundo uma tabela médica, o peso ideal de um ser humano está relacionado com a altura e o sexo. Escreve um programa que, a partir da entrada do sexo e da altura de uma pessoa, calcule e exiba o seu peso ideal, se valendo das seguintes fórmulas: Peso ideal =, altura (para homens) Peso ideal =,1 altura, (para mulheres) Observação: para indicação do sexo da pessoa, assuma que seja admitido a entrada dos seguintes valores (caracteres): Sexo Masculino: M ; Sexo Feminino: F. observe o uso do operador lógico OU nas instruções das linhas e para prever a entrada dos caracteres M e F com ou sem caixa alta. char sexo; float altura; float peso; cout << "ALTURA (m): "; cin >> altura; 1 cout << "SEXO (M/F): "; 1 cin >> sexo; if (sexo == 'M' sexo == 'm') { peso =. * altura - ; else if (sexo == 'F' sexo == 'f') { 0 peso =.1 * altura -.; 1 3 cout << "PESO IDEAL = " << peso << " kg\n";. Readapte o programa da questão anterior de modo que, se for informado um caractere inválido, quando da entrada do sexo da pessoa (ou seja, qualquer outro caractere que são seja M ou F ), seja exibida uma mensagem apropriada, indicando que o dado informado é inválido, ao invés do valor do suposto peso ideal (nessas condições, não há porque calcular o peso ideal). char sexo; float altura; float peso; 1 1 0 1 cout << "ALTURA (m): "; cin >> altura; cout << "SEXO (M/F): "; cin >> sexo; if (sexo == 'M' sexo == 'm') { peso =. * altura - ; cout << "PESO IDEAL = " << peso << " kg\n"; else if (sexo == 'F' sexo == 'f') { peso =.1 * altura -.; cout << "PESO IDEAL = " << peso << " kg\n";
3 cout << "ENTRADA DE SEXO INVALIDA!\n"; 3. Desenvolver um programa que, após a entrada do ano de nascimento de uma pessoa (um número inteiro de dígitos), identifique e exiba a faixa etária daquela pessoa, conforme tabela abaixo: Idade Faixa Etária 0 a anos Criança/Adolescente a anos Adulto Igual ou superior a anos Idoso na implementação aqui proposta, é considerado que o ano corrente é 0. Além disso, se for informado um ano de nascimento inválido (um valor negativo ou superior a 0), é exibida uma mensagem de erro apropriada. int ano, idade; cout << "ANO DE NASCIMENTO: "; cin >> ano; if (ano <= 0 ano > 0) { 1 cout << "ANO DE NASCIMENTO INVALIDO\n"; 1 idade = 0 - ano; if (idade >= 0 && idade <= ) { cout << "SUA FAIXA ETARIA: CRIANCA/ADOLESCENTE\n"; 0 else if (idade >= && idade <= ) { 1 cout << "SUA FAIXA ETARIA: ADULTO\n"; 3 cout << "SUA FAIXA ETARIA: IDOSO\n";. Escreva um programa que, após a entrada de um número inteiro, exiba uma mensagem que indique se ele é divisível por. int n, r; r = n % ; 1 1 0 1 cout << "DIGITE UM NUMERO INTEIRO: "; if (r == 0) { cout << "O NUMERO DIGITADO EH DIVISIVEL POR \n"; cout << "O NUMERO DIGITADO NAO EH DIVISIVEL POR \n";. Escreva um programa que, após a entrada de um número inteiro, exiba uma mensagem que indique se ele é múltiplo simultaneamente de 3 e.
na implementação aqui proposta, os resultados dos restos das divisões do número fornecido por 3 e são armazenados respectivamente nas variáveis r3 e r, para identificação posterior da divisibilidade daquele número. int n, r3, r; cout << "DIGITE UM NUMERO INTEIRO: "; r3 = n % 3; 1 r = n % ; 1 if ((r3 == 0) && (r == 0)) { cout << "O NUMERO DIGITADO EH DIVISIVEL POR 3 E AO MESMO TEMPO\n"; cout << "O NUMERO DIGITADO NAO EH DIVISIVEL POR 3 E AO MESMO TEMPO\n"; 0 1. Escreva um programa que, após a entrada de um valor inteiro, identifique se, e são divisores daquele valor informado. Observação: caso, e não sejam todos divisores do valor informado, deverá ser exibido apenas, destes números, aqueles que são divisores do valor informado (lembre-se que um divisor de outro número é tal que, quando da realização da divisão inteira deste divisor pelo número em questão, é obtido resto nulo). int n; 1 1 0 1 3 cout << "\n"; 3 33 cout << "INFORME UM NUMERO INTEIRO: "; if ((n %!= 0) && (n %!= 0) && (n %!= 0)) { cout << "NUMERO INFORMADO NAO EH DIVISIVEL POR, E \n"; cout << "NUMERO INFORMADO DIVISIVEL POR:"; if (n % == 0) { cout << " "; if (n % == 0) { cout << " "; if (n % == 0) { cout << " ";. Escreva um programa que, após a entrada de um número inteiro, exiba uma mensagem que indique se o dígito da dezena deste número é par ou ímpar. para obtenção do dígito da dezena, dois cálculos são necessários. Inicialmente, procede-se com a divisão inteira de número fornecido por ; com o resultado obtido, obtém-se o resto da divisão (também conhecido como mod ou módulo) do mesmo por. Veja alguns exemplos: 3 3 = 3 (divisão inteira) 3 mod = ( é o dígito da dezena de 3); 1 1 = (divisão inteira) mod = ( é o dígito da dezena de 1).
1 1 0 1 int n, dezena; cout << "DIGITE UM NUMERO INTEIRO: "; dezena = n / % ; if (dezena % == 0) { cout << "DEZENA PAR\n"; cout << "DEZENA IMPAR\n";. Escreva um programa para entrada de (cinco) números reais, após o qual deverão ser identificados e exibidos o maior valor e o menor valor, a partir dos números informados. para resolução dessa questão, após a entrada dos (cinco) números, assume-se que o primeiro número representa o maior e o menor valor inicialmente; a partir de então, compara-se os demais números com o maior e o menor valor até então, procedendose com as atualizações do maior e menor valor, quando for o caso. 1 3 1 1 0 1 3 #include <iostream> using namespace std; float n1, n, n3, n, n; float maior, menor; cout << "INFORME NUMEROS: "; cin >> n1 >> n >> n3 >> n >> n; maior = n1; menor = n1; if (n > maior) { maior = n; if (n < menor) { menor = n; if (n3 > maior) { maior = n3; if (n3 < menor) { menor = n3; if (n > maior) { maior = n; if (n < menor) { menor = n; if (n > maior) { maior = n; if (n < menor) { menor = n; cout << "MAIOR = " << maior << "\n"; cout << "MENOR = " << menor << "\n";. A mais recente tabela de contribuição mensal estabelecida pelo INSS (Instituto Nacional do Seguro Social), vigente a partir de janeiro de 0, define as seguintes alíquotas para desconto na folha de pagamento do funcionário, para fins de recolhimento junto à instituição: Salário de Contribuição Alíquota (%) Até 1.3,1 De 1.3, até.3, De.3, até.3, Escreva um programa que, após a entrada do salário mensal bruto de um determinado funcionário, calcule e exiba o valor do desconto deduzido. É importante observar que o desconto máximo admitido é de R$,0, mesmo que o funcionário possua salários superiores à R$.3,. como o desconto máximo admitido é de R$,0 (se for o caso, proceda com o cálculo), para funcionários com salários iguais ou maiores que R$.3, será recolhido exatamente R$,0, a título de contribuição mensal para o INSS.
1 1 0 1 3 float salario, desconto; cout << "INFORME SEU SALARIO: "; cin >> salario; if (salario <=.1) { desconto = salario * 0.0; else if (salario >.1 && salario <= 3.) { desconto = salario * 0.0; else if (salario > 3. && salario <= 3.) { desconto = salario * 0.; desconto =.0; cout << "DESCONTO INSS = " << desconto << "\n";. Escreva um programa que, após a entrada da idade de uma pessoa, identifique e exiba sua classe eleitoral, conforme relação abaixo: int idade; 1 1 0 1 cout << "DIGITE SUA IDADE: "; cin >> idade; Idade (anos) Classe Eleitoral 0 a Sem direito ao exercício do voto Entre e Voto obrigatório, ou superior a Voto facultativo if (idade <= ) { cout << "VOCE NAO TEM DIREITO DE EXERCICIO DE VOTO!\n"; else if (idade >= && idade <= ) { cout << "VOCE EH UM ELEITOR COM EXERCICIO DE VOTO OBRIGATORIO!\n"; cout << "VOCE EH UM ELEITOR COM EXERCICIO DE VOTO FACULTATIVO!\n";. O IMC (índice de massa corporal) é uma medida internacional usada para determinar se uma pessoa se encontra com peso ideal. Seu valor é determinado pela divisão da massa do indivíduo pelo quadrado de sua altura, onde a massa é expressa em quilogramas e a altura expressa em metros, ou seja: peso IMC = altura altura Escreva um programa que, a partir da leitura do peso e da altura de uma pessoa, identifique e exiba o valor de seu IMC. Além disso, deverá ser exibida uma classificação em relação ao grau de obesidade do indivíduo, de acordo com a relação abaixo: IMC Inferior à, Entre, e, Entre,0 e, Entre,0 e 3, Entre 3,0 e 3, Igual ou superior a 0,0 Classificação Magreza Saudável Sobrepeso Obesidade grau I Obesidade grau II (severa) Obesidade grau III (mórbida)
1 1 0 1 3 3 33 3 3 3 3 float peso, altura, imc; cout << "PESO (kg).: "; cin >> peso; cout << "ALTURA (m): "; cin >> altura; imc = peso / (altura * altura); cout << "IMC = " << imc << "\n"; if (imc <.) { cout << "GRAU DE OBESIDADE = MAGREZA\n"; if (imc >=. && imc < ) { cout << "GRAU DE OBESIDADE = SAUDAVEL\n"; if (imc >= && imc < ) { cout << "GRAU DE OBESIDADE = SOBREPESO\n"; if (imc >= && imc < 3) { cout << "GRAU DE OBESIDADE = OBESIDADE GRAU I\n"; if (imc >= 3 && imc < 0) { cout << "GRAU DE OBESIDADE = OBESIDADE GRAU II (SEVERA)\n"; if (imc >= 0) { cout << "GRAU DE OBESIDADE = OBESIDADE GRAU III (MÓRBIDA)\n"; 1. Escreva um programa para entrada de um determinado horário em formato hh mm (horas e minutos), de acordo com o sistema horário de horas; após o término da entrada de dados, o mesmo horário deverá ser exibido, de acordo com o sistema horário de 1 horas. No sistema horário de 1 horas, são usadas duas expressões latinas, após o horário, para divisão das horas: Ante meridiem (A.M. ou am), com significado de antes do meio-dia ; Post meridiem (P.M. ou pm), com significado de após o meio-dia. Para exemplificação, no sistema horário de 1 horas, o horário h3min seria exibido como :3 pm. Cabe observar que o horário 1h00min é exibido como 1:00 pm. as principais diferenças do sistema horário de 1 horas, em relação ao sistema de horas, são o uso de um intervalo numérico menor (1 a 1) para representação das horas e o uso de uma das expressões latinas mencionadas (am ou pm). Se o horário ocorrer após meio-dia, acrescenta-se a expressão pm e subtrai-se 1 horas do horário original; caso contrário, acrescenta-se a expressão am e mantém-se o horário original. No entanto, existem duas exceções a essas regras, conforme mostrado abaixo: horários de meia-noite (00h00min à 00hmin) e meio-dia (1h00min à 1hmin). 1 3 1 1 0 1 3 #include <iostream> using namespace std; int horas, minutos; cout << "HORARIO FORMATO HORAS (HH MM): "; cin >> horas >> minutos; if (horas > 1) { horas = horas - 1; cout << "HORARIO FORMATO 1 HORAS: " << horas << ":" << minutos << " PM\n"; else if (horas == 1) { cout << "HORARIO FORMATO 1 HORAS: " << horas << ":" << minutos << " PM\n"; else if (horas == 0) { cout << "HORARIO FORMATO 1 HORAS: " << 1 << ":" << minutos << " AM\n"; cout << "HORARIO FORMATO 1 HORAS: " << horas << ":" << minutos << " AM\n";. Escreva um programa através do qual são exibidos todos os números pares entre 1 e 0. Além disso, será necessário exibir, logo à frente de cada número par, o quadrado do mesmo.
int i; for (i=; i<0; i+=) { cout << i << " " << i * i << "\n"; 1 1. Escreva um programa para entrada de um número inteiro, após o qual devem ser exibidos todos os múltiplos de 3 e, ao mesmo tempo, no intervalo fechado entre 1 (um) e o número informado inicialmente. uma contagem é realizada entre 1 e o número informado, com a verificação dos restos das divisões dos valores do contador por 3 e (vide instrução da linha 1). int i, n; cout << "INFORME UM NUMERO INTEIRO: "; cout << "MULTIPOS DE 3 E ENTRE 1 E " << n << ": "; 1 for (i=1; i<=n; i++) { 1 if ((i % 3 == 0) && (i % == 0)) { cout << i << " "; cout << "\n"; 0 1. Escreva um programa que permite identificar e exibir o enésimo termo da sequência de Fibonacci. Nesta sequência, o primeiro termo é 0, o segundo termo é 1 e os demais termos são obtidos a partir da soma dos dois termos imediatamente anteriores, com o que temos uma sequência da forma 0, 1, 1,, 3,,,, 1, 3... Observação: a posição do termo a ser calculado deverá ser informada pelo próprio usuário. duas variáveis, de nomes a e b, são usadas para armazenamento dos valores dos dois últimos termos da série; a cada iteração do bloco de repetição (instruções entre as linhas 1 e ), o termo corrente, armazenado na variável t, é gerado a partir da soma dos valores de tais variáveis (instrução da linha ), seguido da atualização daquelas variáveis (instruções das linhas 3 e ). Observe que o bloco de repetição considera o uso de uma contagem a partir de 3 (três), já que os dois primeiros termos da série são pré-determinados (vide instruções entre as linhas 1 e ). 1 1 0 int i, n; int a, b, t; cout << "POSICAO TERMO FIBONACCI: "; if (n == 1) { t = 0; else if (n == ) { t = 1; a = 0; b = 1;
1 3 3 33 3 3 3 for (i=3; i<=n; i++) { t = a + b; a = b; b = t; if (n <= 0) { cout << "POSICAO DE TERMO INVALIDA!\n"; cout << "SERIE FIBONACCI DE TERMO " << n << ": " << t << "\n";. Readapte o programa da questão anterior de modo a exibir a soma dos primeiros termos da sequência de Fibonacci, após a entrada da quantidade de termos a serem somados. em relação ao programa da questão anterior, é adicionada uma variável, de nome soma, para armazenamento cumulativo dos valores dos termos computados (vide instrução da linha 1). int i, n; int a, b, t; int soma; cout << "QUANTIDADE DE TERMOS FIBONACCI: "; 1 1 if (n == 1) { soma = 0; else if (n == ) { soma = 1; 0 a = 0; 1 b = 1; 3 soma = a + b; for (i=3; i<=n; i++) { t = a + b; a = b; b = t; soma = soma + t; 3 33 3 3 3 if (n <= 0) { cout << "QUANTIDADE DE TERMOS INVALIDA!\n"; cout << "SOMA DO(S) " << n << " PRIMEIRO(S) TERMO(S): " << soma << "\n"; 3 3 3. Escreva um programa que permita verificar se um dado número n é primo ou não. na implementação que se segue, considera-se que o número fornecido, a princípio, é um número primo até que sejam encontrados divisores entre e o próprio número. Um bloco de repetição for (vide instruções entre as linhas 1 e ) é usado para a contagem entre e o próprio número fornecido, com o cálculo do resto da divisão de cada valor de contagem por tal número (instrução da linha ); caso o resto seja nulo, o número fornecido apresenta outros divisores além de 1 (um) e do próprio número, com o que ele deixa de ser um número primo. Uma variável de nome ehprimo é usada com o propósito de indicar se o número fornecido é primo ou não. 1 3 #include <iostream> using namespace std; int ehprimo = 1; int i, n;
1 1 0 1 3 cout << "INFORME UM NUMERO INTEIRO: "; for (i=; i<n; i++) { if (n % i == 0) { ehprimo = 0; break; if (ehprimo == 1) { cout << n << " EH UM NUMERO PRIMO!\n"; cout << n << " NAO EH UM NUMERO PRIMO!\n";. Escreva um programa que, a partir da entrada dos horários de entrada e saída de n funcionários de uma determinada empresa, identifique e exiba a quantidade de horas e minutos durante o qual os mesmos permaneceram na empresa. Um funcionário que registra sua entrada às 0hmin e encerra seu expediente às hmin, por exemplo, permaneceu na empresa horas e minutos. Observação: sobre a quantidade de funcionários, para os quais serão informados os horários de entrada e saída (formato minutos e horas), será solicitado a entrada deste valor ao próprio usuário. int n; int h1, m1, h, m; int t, th, tm; int i; 1 1 0 1 3 cout << "QUANTIDADE DE FUNCIONARIOS: "; for (i=0; i<n; i++) { cout << "\nturno DE FUNCIONARIO " << i+1 << "\n"; cout << "HORARIO DE ENTRADA..: "; cin >> h1 >> m1; cout << "HORARIO DE SAIDA...: "; cin >> h >> m; t = (h * 0 + m) - (h1 * 0 + m1); th = t / 0; tm = t % 0; cout << "TEMPO DE PERMANENCIA: " << th << "h" << tm << "min\n";. Readapte o programa da questão anterior, de modo que seja informado, ao término da entrada de dados, o quantitativo de horasextras trabalhadas por todos os funcionários, em conjunto. Considere que qualquer quantitativo de horas superior a horas será computado como horário extra. Para um funcionário que registra sua entrada às 0hmin e encerra seu expediente às hmin, por exemplo, serão considerados min de horário-extra (neste caso, o funcionário permaneceu na empresa horas e minutos). em relação ao programa da questão anterior, é usada uma variável de nome extrat, para armazenamento cumulativo de quantitativo de minutos extras; apenas para tempos de permanência superiores a 0 minutos, tempos extras são adicionados àquela variável (vide instrução da linha ). Nas instruções das linhas 3 e 3, o tempo total extra em minutos é convertido em horas e minutos. 1 3 #include <iostream> using namespace std; int n; int h1, m1, h, m; int t, th, tm;
1 1 0 1 3 3 33 3 3 3 3 3 3 0 1 int extrat = 0; int extrah, extram; int i; cout << "QUANTIDADE DE FUNCIONARIOS: "; for (i=0; i<n; i++) { cout << "\nturno DE FUNCIONARIO " << i+1 << "\n"; cout << "HORARIO DE ENTRADA..: "; cin >> h1 >> m1; cout << "HORARIO DE SAIDA...: "; cin >> h >> m; t = (h * 0 + m) - (h1 * 0 + m1); th = t / 0; tm = t % 0; if (t > 0) { extrat = extrat + (t - 0); cout << "TEMPO DE PERMANENCIA: " << th << "h" << tm << "min\n"; extrah = extrat / 0; extram = extrat % 0; cout << "\nquantitativo DE HORAS EXTRAS: " << extrah << "h" << extram << "min\n"; 0. Escreva um programa que identifique, a partir de uma sequência de números informados pelo usuário, a média aritmética dos mesmos. Sobre a entrada desta sequência de números, ela será finalizada quando for informado pelo usuário o número 0 (zero). Observação: o número 0 (zero) não deverá constar do cálculo da média aritmética. float n; int qtd = 0; float soma = 0; 1 while (n!= 0) { 1 soma = soma + n; qtd++; 0 1 3 cout << "INFORME PRIMEIRO NUMERO: "; cout << "INFORME PROXIMO NUMERO (OU 0 PARA ENCERRAR): "; cout << "MEDIA = " << soma/qtd << "\n"; 1. Readapte o programa da questão anterior, de modo que, além da identificação da média aritmética, sejam exibidos o maior e o menor número. a princípio, é considerado que o primeiro número fornecido é, de forma concomitante, o menor e o maior número fornecido (vide instruções das linhas e 1). Para os próximos números fornecidos não nulos, são realizadas verificações sobre o maior e o menor número, conforme exposto nas instruções entre as linhas 3 e. 1 3 #include <iostream> using namespace std; float n, maior, menor; int qtd = 0;
1 1 0 1 3 3 33 3 3 3 3 3 float soma = 0; cout << "INFORME PRIMEIRO NUMERO: "; maior = n; menor = n; while (n!= 0) { soma = soma + n; qtd++; cout << "INFORME PROXIMO NUMERO (OU 0 PARA ENCERRAR): "; if (n!= 0) { if (n > maior) { maior = n; if (n < menor) { menor = n; cout << "MEDIA = " << soma/qtd << "\n"; cout << "MAIOR = " << maior << "\n"; cout << "MENOR = " << menor << "\n";. Escreva um programa que, a partir da entrada de uma sequência de números inteiros finalizada por 0 (zero), exiba a média aritmética dos números ímpares e a soma dos números pares. int n; int qtdimpar = 0; float somaimpar = 0; int somapar = 0; 1 1 0 1 3 cout << "INFORME PRIMEIRO NUMERO: "; while (n!= 0) { if (n % == 1) { somaimpar = somaimpar + n; qtdimpar++; somapar = somapar + n; cout << "INFORME PROXIMO NUMERO (OU 0 PARA ENCERRAR): "; cout << "MEDIA NUMEROS IMPARES: " << somaimpar/qtdimpar << "\n"; cout << "SOMA NUMEROS PARES...: " << somapar << "\n";