• Nenhum resultado encontrado

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA

N/A
N/A
Protected

Academic year: 2019

Share "INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE PROF°.: ALEXANDRO DOS SANTOS SILVA"

Copied!
6
0
0

Texto

(1)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E EDUCAÇÃO DA BAHIA CAMPUS JEQUIÉ

CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE

PROF°.: ALEXANDRO DOS SANTOS SILVA

LINGUAGEM DE PROGRAMAÇÃO I

LISTA DE EXERCÍCIOS 02

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.

Desenvolver um programa que calcule o valor a ser pago a uma concessionária de energia elétrica por uma

determinada

classe consumidora

, da forma que se segue:

a)

Como entrada de dados, para efeito de cálculo, deverão ser fornecidos o tipo da classe consumidora (conforme

definido na tabela 1) e o consumo em quilowatts/hora (KWh);

b)

O cálculo do

Valor de Fornecimento

(VF), expresso em reais (R$), é definido pela seguinte fórmula:

VF = Consumo x Tarifa,

onde a tarifa é definida na tabela 1, conforme a classe consumidora;

c)

O valor a ser pago (VP) é definido pela seguinte fórmula:

VP = VF + ICMS,

onde a taxa de ICMS (Imposto sobre Circulação de Mercadorias e Serviços) é calculada com a aplicação de uma

alíquota de 30% ao valor do fornecimento.

Classe Consumidora

Tarifa (R$)

A

0,5

B

0,8

C

1,0

Tabela 1

Resp.:

#include <iostream.h>

int main() { char classe;

double consumo, vf, vp, tarifa, icms; // Entrada de dados

cout << "Classe Consumidora (A, B ou C): "; cin >> classe;

cout << "Consumo KWh...: "; cin >> consumo;

// validação de entrada de dados ref. à classe consumidora if (classe != 'A' && classe != 'B' && classe != 'C') { cout << "Classe consumidora informada invalida!\n"; }

else {

// identificação de valor da tarifa por quilowatt/hora if (classe == 'A') // se classe consumidora for A... tarifa = 0.5;

else if (classe == 'B') // se classe consumidora for B... tarifa = 0.8;

else // se classe consumidora não for nem A nem B... tarifa = 1.0;

vf = consumo * tarifa; // cálculo do valor de fornecimento

icms = vf * 0.3; // cálculo de ICMS (30% sobre valor de fornecimento) vp = vf + icms; // cálculo de valor a ser pago

cout << "Valor a Pagar: " << vp << "\n"; // impressão de valor a pagar }

system("pause"); }

2.

O acesso a um determinado laboratório é controlado a partir de uma porta automática. Para abrir a porta do referido

laboratório, é necessário o uso de uma senha, composta por 4 dígitos, no formato

Y = d

1

d

2

d

3

C

, em que

C

é o dígito de

controle da senha (e.g, se Y = 5329, então d

1

= 5,

d

2

= 3

d

3

= 2 e C = 9). O dígito

C

da senha é uma forma de segurança

(2)

                  

 3 mod d 10 mod )] d * (2 * 3) K * (2 [ = C 3 1 k k 3 1 = K k

Assim, se d

1

= 5,

d

2

= 3,

d

3

= 2 e C =

9

, a senha é válida e a porta será aberta. Se a senha digitada for Y = 7206, por sua

vez, a senha é inválida e a porta permanece fechada. Desenvolva um programa que, após a entrada de um número

Y =

d

1

d

2

d

3

C

(digitado de uma única vez), informe se a senha é válida ou não.

Resp.:

#include <iostream.h>

int main() {

int senha, d1, d2, d3, d, c, soma1, soma2, k, ctemp;

// entrada de senha

cout << "Informe sua senha de 4 digitos: "; cin >> senha;

// extração de dígitos

d1 = senha / 1000 % 10; // extração de primeiro dígito d2 = senha / 100 % 10; // extração de segundo dígito d3 = senha / 10 % 10; // extração de terceiro dígito c = senha % 10; // extração de dígito verificador C

// cálculo do somatório (2 * k + 3) * (2 * d), de k = 1 a k = 3 for (k=1; k<=3; k++) {

// seleção de dígito a ser usado no cálculo if (k == 1) // se for o primeiro dígito d = d1;

else if (k == 2) // se for o segundo dígito d = d2;

else // se não for nem o primeiro dígito, nem o segundo... d = 3;

soma1 = soma1 + (2 * k + 3) * (2 * d); }

// cálculo do somatório dk, de k = 1 a k = 3 soma2 = d1 + d2 + d3;

// cálculo de dígito correto (última posição da senha) ctemp = (soma1 % 10) + (soma2 % 3);

// verificação de dígito informado com dígito correto if (c == ctemp) { // se forem idênticos, senha válida cout << "SENHA VALIDA!\n";

}

else { // caso contrário, senha inválida cout << "SENHA INVALIDA!\n";

}

system("pause"); }

3.

Desenvolver um programa para impressão de todos os números pares entre 1 e 100. Além disso, será necessário

exibir, logo à frente de cada número par, o quadrado do mesmo.

Resp.:

#include <iostream.h>

int main() {

int i; // declaração de contador

for (i=2; i<100; i++) { // contagem entre 2 e 99 (99 < 100) if (i % 2 == 0) { // se contador for par...

cout << i << "\t" << i * i << "\n"; // impressão de número par e seu quadrado }

}

(3)

4.

Desenvolver um programa para entra de um número

n

, após o qual devem ser exibidos todos os múltiplos de 3 e 5, ao

mesmo tempo, no intervalo fechado entre 1 e

n

.

Resp.:

#include <iostream.h>

int main() {

int i; // declaração de contador

int n; // declaração de variável para entrada de um número n cout << "Informe um numero: ";

cin >> n; // entrada de número

// contagem entre 1 e o próprio número informado (intervalo fechado) for (i=1; i<=n; i++) {

int r3 = i % 3; // resto da divisão entre contador e 3; int r5 = i % 5; // resto da divisão entre contador e 5;

// se restos iguais a 0 (zero), contador é múltiplo de 3 e 5 if (r3==0 && r5==0) {

cout << i << "\n"; // impressão de contador }

}

system("pause"); }

5.

Desenvolver um programa para encontrar o

enésimo

termo da sequência de Fibonacci. Nesta sequência, o primeiro

termo é 0, o segundo termo é 1 e, a partir do terceiro, cada termo é obtido a partir da soma dos dois termos anteriores.

Os primeiros 10 números da sequência são, portanto, 0, 1, 1, 2, 3, 5, 8, 13, 21 e 34. A posição do enésimo termo (

n

)

deverá ser informada pelo próprio usuário.

Resp.:

#include <iostream.h>

int main() {

// declaração de variáveis para armazenamento dos dois últimos termos da série int n1 = 0, n2 = 1;

int pos; // declaração de variável para entrada de posição do termo

cout << "Informe a posicao do termo desejado (a partir de 1): "; cin >> pos; // entrada de posição do enésimo termo

if (pos < 1) { // se posição for inferior a 1, inválida cout << "ENESIMO TERMO INVALIDO!\n";

}

else { // caso contrário, prossegue com o cálculo

int termo; // declaração de variável para valor do enésimo termo if (pos == 1) // se for primeiro termo, valor é 0 (n1)

termo = n1;

else if (pos == 2) // se for segundo termo, valor é 1 (n2) termo = n2;

else {

// a partir do terceiro termo, procede-se com o cálculo dos termos // intermediários até alcançar o termo da posição informada

for (int i=3; i<=pos; i++) {

termo = n1 + n2; // cálculo do próximo termo n

n1 = n2; // substituição do termo n-2 (n1) por n-1 (n2) n2 = termo; // substituição do termo n-1 (n2) pelo próximo termo n }

}

// impressão de enésimo termo

cout << "TERMO NR " << pos << " = " << termo << "\n"; }

system("pause"); }

6.

Desenvolver um programa para exibir a soma dos

n

primeiros termos da sequência de Fibonacci, após a entrada da

(4)

Resp.:

#include <iostream.h>

int main() {

// declaração de variáveis para armazenamento dos dois últimos termos da série int n1 = 0, n2 = 1;

int soma = 0; // declaração de variável para soma dos termos

int qtd; // declaração de variável para entrada da quantidade de termos

cout << "Informe a quantidade de termos a somar (a partir de 1): "; cin >> qtd; // entrada da quantidade de termos

if (qtd < 1) { // se quantidade for inferir a 1, inválida cout << "QUANTIDADE INVALIDA!\n";

}

else { // caso contrário, prossegue com a soma

int termo; // declaração de variável para valor do enésimo termo if (qtd == 1) // se quantidade for apenas 1, soma é 0

soma = n1;

else if (qtd == 2) // se quantidade for 2, soma é 1 (0 + 1) soma = n2;

else { // para quantidades maiores que 2... soma = n1 + n2; // soma dos dois primeiros termos

// procede-se com o cálculo dos termos intermediários até alcançar // o termo da posição final (todos serão adicionados à soma)

for (int i=3; i<=qtd; i++) {

termo = n1 + n2; // cálculo do próximo termo n

n1 = n2; // substituição do termo n-2 (n1) por n-1 (n2) n2 = termo; // substituição do termo n-1 (n2) pelo próximo termo n soma = soma + termo; // acréscimo de termo calculado à soma

} }

// impressão de soma de termos

cout << "SOMA DE " << qtd << " TERMO(S) = " << soma << "\n"; }

system("pause"); }

7.

Desenvolver um programa para verificar se um dado número n é primo.

Resp.:

#include <iostream.h>

int main() {

int n; // número a ser testado

int primo = 1; // assume-se que inicialmente o número a ser informado é primo

cout << "Informe um numero: ";

cin >> n; // entrada de número a ser testado

// cálculo de restos das divisões entre o número informado e todos os números // entre 2 e o imediato antecessor do número informado (n-1)

for (int i=2; i<=n-1; i++) {

int resto = n % i; // cálculo do resto entre o número (n) e contador (i)

// se resto igual a 0 (zero), número é divisível e, portanto, não é primo if (resto == 0) {

primo = 0; // atualização da variável de controle com 0 (zero) break; // interrupção da execução do laço de repetição }

}

// teste da variável de controle PRIMO; se for 0 (zero), indicativo de que // o número não é primo, já que foi encontrado um divisor

if (primo == 0)

cout << n << " NAO EH PRIMO!\n";

(5)

cout << n << " EH PRIMO!\n"; system("pause");

}

8.

Desenvolver um programa que implemente um jogo de senhas (para duas pessoas), da forma que se segue:

a)

O jogador 1 digitará uma senha (valor inteiro entre 0 e 30) sem o conhecimento do jogador 2;

b)

O jogador 2 terá 5 chances para descobrir a senha digitada pelo jogador 1;

c)

A cada tentativa do jogador 2, deverá ser informado pelo programa se o valor digitado é maior, menor ou igual à

senha;

d)

Se o jogador 2 acertar a senha, o programa não deve permitir a realização de mais nenhuma tentativa e o mesmo

será declarado como vencedor.

e)

Caso o jogador 2 não acerte a senha, ao término das 5 tentativas, o mesmo será declarado como perdedor.

Sugestão

: para que o jogador 2 não tenha conhecimento da senha digitada pelo jogador 1, use uma das seguintes

instruções, após a entrada da senha

, para “limpeza da tela”

:

system("cls"); system("clear");

Resp.:

#include <iostream.h>

int main() {

int senha1; // senha do jogador 1

int senha2; // senha do jogador 2, para efeito de tentativa int tentativa = 1; // contador de tentativas

cout << "JOGADOR 1 - ENTRE COM SUA SENHA: "; cin >> senha1; // entrada da senha do jogador 1

system("cls"); // apaga ("limpa a tela") todos os caracteres exibidos até então

// execução de 5 tentativas para acerto da senha

cout << "JOGADOR 2: VOCE TEM 5 TENTATIVAS PARA ACERTAR A SENHA DO JOGADOR 1\n"; do {

cout << "\nTentativa " << tentativa << " de 5 -> ENTRE COM SUA SENHA: "; cin >> senha2; // entada da senha do jogador 2

if (senha1 == senha2)

cout << "\nSENHAS CONFEREM! JOGADOR 2 VENCEDOR!\n"; else if (senha2 < senha1)

cout << "JOGADOR 2, SUA SENHA EH MENOR QUE A SENHA DO JOGADOR 1!\n"; else

cout << "JOGADOR 2, SUA SENHA EH MAIOR QUE A SENHA DO JOGADOR 1!\n";

tentativa++; // incremento do contador de tentativas } while (tentativa <= 5 && senha1 != senha2);

if (tentativa>5) { // se número de tentativas for superior a 5... cout << "\nJOGADOR 2, INFELIZMENTE VOCE EH O PERDEDOR!\n";

}

system("pause"); }

9.

Readapte o programa da questão anterior de modo que haja uma validação sobre a senha digitada pelo jogador 1 (caso

seja informado, pelo mesmo, algum valor que não esteja entre 0 e 30, será solicitado novamente a entrada de outro

valor).

Resp.:

#include <iostream.h>

int main() {

int senha1; // senha do jogador 1

int senha2; // senha do jogador 2, para efeito de tentativa int tentativa = 1; // contador de tentativas

(6)

// verificação da senha

while (senha1 < 0 || senha1 > 30) {

cout << "JOGADOR 1, SENHA INVALIDA! DIGITE NOVAMENTE (ENTRE 1 E 30): "; cin >> senha1; // entrada da senha do jogador 1

}

system("cls"); // apaga ("limpa a tela") todos os caracteres exibidos até então

// execução de 5 tentativas para acerto da senha

cout << "JOGADOR 2: VOCE TEM 5 TENTATIVAS PARA ACERTAR A SENHA DO JOGADOR 1\n"; do {

cout << "\nTentativa " << tentativa << " de 5 -> ENTRE COM SUA SENHA: "; cin >> senha2; // entada da senha do jogador 2

if (senha1 == senha2)

cout << "\nSENHAS CONFEREM! JOGADOR 2 VENCEDOR!\n"; else if (senha2 < senha1)

cout << "JOGADOR 2, SUA SENHA EH MENOR QUE A SENHA DO JOGADOR 1!\n"; else

cout << "JOGADOR 2, SUA SENHA EH MAIOR QUE A SENHA DO JOGADOR 1!\n";

tentativa++; // incremento do contador de tentativas } while (tentativa <= 5 && senha1 != senha2);

if (tentativa>5) { // se número de tentativas for superior a 5... cout << "\nJOGADOR 2, INFELIZMENTE VOCE EH O PERDEDOR!\n";

}

Referências

Documentos relacionados

A unidade de controlo de temperatura ambiente pode ser utilizada para aquecimento e arrefecimento com unidades de válvulas KNX infinitamente ajustáveis ou para acionar os

To demonstrate that SeLFIES can cater to even the lowest income and least financially trained individuals in Brazil, consider the following SeLFIES design as first articulated

No entanto, esse aprisionamento conduz a um cenário fictício e ilusório, típico dos sistemas paternalistas, em que o Estado mitiga a participação dos sujeitos na perspectiva de

No código abaixo, foi atribuída a string “power” à variável do tipo string my_probe, que será usada como sonda para busca na string atribuída à variável my_string.. O

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Janaína Oliveira, que esteve presente em Ouagadougou nas últimas três edições do FESPACO (2011, 2013, 2015) e participou de todos os fóruns de debate promovidos

Com base nestes dados o SEMASA implementou um projeto piloto para a coleta de pilhas e baterias e destinação final adequada, que estabelecerá os parâmetros para um

Dispõe sobre o Projeto Pedagógico do Curso Técnico em Finanças Subsequente ao Ensino Médio – Modalidade a Distância, do Instituto Federal de Educação,