Exercicios Logica Algoritmos Duas Pags Por Folha

download Exercicios Logica Algoritmos Duas Pags Por Folha

of 17

Transcript of Exercicios Logica Algoritmos Duas Pags Por Folha

Algoritmos e Lgica de Programao

Algoritmos e Lgica de Programao

Operaes Aritmticas:1) Crie um programa que permita fazer a converso cambial entre Reais e Dlares. Considere como taxa de cmbio US$1,00 = R$2,40. Leia um valor em Reais pelo teclado e mostre o correspondente em Dlares. 2) Crie um programa que permita fazer a converso cambial entre Dlares e Reais. Considere como taxa de cmbio US$1,00 = R$2,40. Leia um valor em Dlares pelo teclado e mostre o correspondente em Reais.

Algoritmos e Lgica de Programao

3) Calcule quantos azulejos so necessrios para azulejar uma parede. necessrio conhecer a altura da parede (AP), a sua largura (LP), e a altura do azulejo (AA) e sua largura (LA). Leia os dados atravs do teclado. 4) Faa um programa que, a partir das medidas dos lados de um retngulo, lidos via teclado, calcule a rea e o permetro deste retngulo. b a A b a A = a.b P = 2.a + 2.b

Lista de Exerccios

5) A condio fsica de uma pessoa pode ser medida com base no clculo do IMC, ndice de Massa Corporal, o qual calculado dividindo-se a massa da pessoa (m em kg) pela altura da mesma (h em m) elevada ao quadrado (IMC= m/h). Escreva um programa que leia a massa e a altura de uma pessoa, calcule e mostre o IMC. 6) Dado o valor do raio (r) de uma circunferncia, elaborar um programa para calcular e imprimir sua rea (A) e o seu comprimento (C). A frmula da rea do crculo A= r2 e do comprimento C=2 r. 7) Elaborar um programa para calcular e imprimir o volume (V) de uma esfera e a rea (A) de sua superfcie, dado o valor de seu raio (R). A frmula do volume da esfera V=4/3 R3 e da rea A=4 R2. 8) Faa um programa para calcular a mdia final de um aluno, supondo-se que h quatro notas bimestrais durante o ano e que esta calculada atravs de uma mdia aritmtica simples (todos os bimestres tm o mesmo peso).

Prof. Francisco Verssimo Luciano

1/33

Prof. Francisco Verssimo Luciano

2/33

Algoritmos e Lgica de Programao9) O critrio de avaliao semestral de determinada escola segue a regra: P1 primeira avaliao do semestre. P2 segunda avaliao do semestre. Ativ nota atribuda pelas atividades realizadas no semestre. Mdia = P1 x 4 + P2 x 4 + Ativ x 2 10

Algoritmos e Lgica de Programao15) Descreva um programa em Linguagem C++ que leia o valor de um RA (nmero composto por 9 dgitos) e gere um novo RA pela inverso dos 4 dgitos menos significativos do RA inicial. Exemplificando, se RA inicial for 972845236 ento o RA novo deve ser 972846325. Se RA inicial for 984475211 ento o RA novo deve ser 984471125. O algoritmo deve ler RA inicial e apresentar o RA novo. 16) Descreva um programa em C que leia o valor de um RA (nmero composto por 9 dgitos) e gere um novo RA pela inverso dos 2 dgitos mais significativos e pela inverso dos 2 dgitos menos significativos do RA inicial. Exemplificando, se RA inicial for 972845236 ento o RA novo deve ser 792845263. Se RA inicial for 984475213 ento o RA novo deve ser 894475231. O algoritmo deve ler RA inicial e imprimir o RA novo. 17) O preo dos produtos de uma empresa armazenado de forma codificada e todos eles so lidos por uma mquina semelhante (mas no igual) a um cdigo de barras. O cdigo tem o formato C=c1 c2 c3 c4 c5 (c1, c2, c3, c4, c5 so dgitos entre 0 e 9). Para determinarmos o preo P=p1 p2 p3 p4 de um determinado produto cujo cdigo C, a mquina deve ler C e calcular o preo fazendo as seguintes contas: p3p4 = C div 1000 p2 = (c1*c2*c3*c4*c5) mod 10 p1 = (c2c3) div 10 (repare que esta operao no c2*c3 testando o exemplo abaixo) Exemplificando, se C = 47238 ento P=7447 pois as contas feitas foram: p3p4 = 47238 div 1000 = 47 p2 = (4*7*2*3*8) mod 10 = 4 p1 = 72 div 10 = 7 Descreva um programa na Linguagem C++ que leia C e imprima P com 4 casas. 18) Faa um programa em Linguagem C++ que leia um nmero X = d1 d2 d3 onde (sendo d1, d2 e d3 dgitos entre 1 e 9) e o transforme em Y = f1 f2 f3 a partir da seguinte regra: fi = (di mod 2) para I=1, 2, 3. Prof. Francisco Verssimo Luciano 4/33

Escreva um programa que leia as notas das provas (P1 e P2) e da atividade (Ativ), calcule e mostre a mdia, seguindo o clculo acima. 10) Elaborar um programa para receber valores, via teclado, nas variveis "a" e "b". Aps isto, o programa, utilizando-se de uma 3a. varivel "c", dever trocar o contedo das variveis "a" e "b". 11) (DESAFIO) Idem o programa anterior, sem utilizar-se de uma 3a. varivel. 12) Elaborar um programa que receba, via teclado, os valores do espao percorrido e do tempo gasto por um veculo em movimento, para calcular e apresentar em tela sua velocidade mdia. 13) Num laboratrio de fsica, em uma experincia de Movimento Uniformemente Variado, foram encontrados os seguintes valores: s0=2m, v0=3m/s, a=10m/s2. Digitado o valor de t (segundos), apresentar em tela o valor de s (metros). Dada a frmula: s = s0 + v0 . t + . a . t2 14) Suponha que um simples vrus tenha infectado o sistema de banco de dados da universidade e que, como nico estrago, ele tenha alterado os RAs dos alunos. Aps algum tempo, descobriu-se que dado o RA gerado pelo vrus RAV = x1 x2 x3 x4 x5 x6 x7 x8 x9, o RA correto RAC = y1 y2 y3 y4 y5 y6 y7 y8 y9 poderia ser obtido atravs das seguintes operaes: y1 = x1, y2 = x2, y3 = x8, y4 = x7, y5 = x5, y6 = x6, y7 = x3, y8 = x4, y9 = x9 Exemplificando, se RAV=197845602 ento RAC=190645782. Elabore um programa em C que leia RAV e gere RAC com 9 dgitos.Prof. Francisco Verssimo Luciano

3/33

Algoritmos e Lgica de ProgramaoExemplificando, se X=817 ento Y=011, se X=715 ento Y=111. O programa deve ler X e imprimir Y. 19) Para garantirmos segurana na transmisso de dados, podemos codific-los antes de transmitir. Suponha um nmero X qualquer de 4 dgitos na forma d1 d2 d3 d4 (por exemplo, 2371 onde d1=2, d2=3, d3 =7 e d4=1 ou 0476 ). Escreva um programa em Linguagem C++ que transforme o nmero X = d1 d2 d3 d4 em um nmero Y = f1 f2 f3 f4 , que corresponde a X codificado usando a seguinte regra: fi = ((di + 7) mod 10) para i=1, 2,3,4. Exemplificando. Se X=7149 ento Y=4816 pois : d1=7 ento f1=(( 7 + 7) mod 10) = 4 d2=1 ento f2=(( 1 + 7) mod 10) = 8 d3 =4 ento f3=(( 4 + 7) mod 10) = 1 d4=9 ento f4=(( 9 + 7) mod 10) = 6 Deve ser lido X e impresso Y. 20) O acesso a uma das salas de um laboratrio de pesquisas biomdicas controlado a partir de uma porta automtica. Para abrir a porta desta sala necessrio o uso de uma senha. A senha formada de um nmero Y composto de 4 dgitos. Este nmero tem o formato Y = d1 d2 d3 C onde C o dgito de controle da senha. Por exemplo, se d1=7, d2=2 d3=0 e C=7 ento Y=7207. O dgito C da senha uma forma de segurana que impede que pessoas no autorizadas entrem na sala do laboratrio. Caso uma pessoa no autorizada consiga digitar uma senha, ela testada para verificar se vlida. O setor de segurana compe a senha gerando aleatoriamente os dgitos d1, d2, d3 e d4 e o dgito C calculado da seguinte forma:3

Algoritmos e Lgica de ProgramaoSe for digitado X=7206 a senha no vlida e a porta permanece fechada. Escreva o algoritmo que leia o nmero X = d1 d2 d3 e gere o nmero Y conforme a regra acima. 21) Dados dois nmeros inteiros positivos X = x1 x2 x3 e Y = y1 y2 y3 para os quais cada dgito est entre 0 e 9, chamamos de produto dgito a dgito entre X e Y de nmero Z, onde Z = z1 z2 z3 em que: z1 = (x1 * y1) mod 10 z2 = (x2 * y2) mod 10 z3 = (x3 * y3) mod 10 Elabore um programa em Linguagem C++, que leia X e Y e imprima Z. Exemplificando, se X=317 e Y=461 ento Z=267. Novamente exemplificando, se X=684 e Y=597 ento Z=028. 22) Dado um nmero inteiro positivo binrio X = x1 x2 x3 x4 de 4 dgitos (com x1, x2, x3 e x4 valendo 0 ou 1), chamamos de diviso binria ao nmero Y = y1 y2 y3 y4 para o qual: y1=0, y2=x1, y3=x2 e y4=x3. Exemplificando, se X=1011 ento Y=0101. Dado esse mesmo nmero X = x1 x2 x3 x4 de 4 dgitos, chamamos de multiplicao binria ao nmero Z = z1 z2 z3 z4 z5 para o qual: z1=x1, z2=x2, z3=x3, z4=x4 e z5=0. Exemplificando, se X=1011 ento Z=10110. Faa um programa em C que leia X e imprima Y (com 4 dgitos) e Z (com 5 dgitos). 23) Escreva um programa em Linguagem C++ que leia um nmero natural X de 3 dgitos na forma X = d1 d2 d3 escrito na base B (B um nmero inteiro maior que 1 e menor que 10) e o converta para a base 10. Exemplificando, se X=314 e B=7 isto significa que o nmero X est na base 7. Para converter X para a base 10 basta executar a conta 3 * 72 + 1* 71 + 4 * 70 = 158. Exemplificando novamente, se X=516 e B=9 isto significa que o nmero X est na base 9. Para converter X para a base 10 basta executar a conta 5 * 92 + 1* 91 + 6 * 90 = 420. Devem ser lidos X e B e deve ser impresso o valor de X na base 10.Prof. Francisco Verssimo Luciano

C = 9 - ( [ (7 - K) *d k ] mod 10)K=1

Assim, se d1=7, d2=2 d3=0 ento X=720 e C=7. Ento, a senha vlida Y=7207; Prof. Francisco Verssimo Luciano 5/33

6/33

Algoritmos e Lgica de Programao24) Dado um nmero inteiro positivo X = x1 x2 escrito na base 4, isto , com os valores de x1 e x2 valendo 0, 1, 2 ou 3, podemos transformar este nmero no nmero inteiro Y = y1 y2 y3 y4 escrito na base 2, de igual valor, a partir da descrio a seguir: Separe X nos dgitos x1 e x2 Divida x1 por 2 chamando o quociente de y1 e o resto y2 Divida x2 por 2 chamando o quociente de y3 e o resto y4 Escreva Y = 1000 * y1 + 100 * y2 + 10 * y3 + y4 Faa um programa em Linguagem C++ que leia X e imprima Y com 4 dgitos. Exemplificando, se X=32 ento Y=1110. 25) Dado um nmero X = x1 x2 x3 x4, dizemos que X sofre uma rotao esquerda quando gerado o nmero Y = x2 x3 x4 x1 e que X sofreu uma rotao direita quando gerado um nmero Z = x4 x1 x2 x3. Exemplificando, se X=9162 ento Y=1629 e Z=2916. Escreva um programa em Linguagem C++ que leia X e imprima os valores de Y (rotao esquerda de X) e Z (rotao direita de X). 26) Um caixa eletrnico opera com notas de 50, 10, 5 e 1. Como medida de segurana, a cada vez que o cliente deseja sacar dinheiro, o valor dado de forma a fornecer um pequeno volume de notas (supondo que o cliente sempre esteja dentro do seu limite). Esta medida feita para que a quantidade sacada no faa muito volume quando guardada pelo cliente. Por exemplo, se o cliente quiser sacar 166 no so dadas 166 notas de 1; no so dadas 33 notas de 5 e 1 nota de 1; so dadas 3 notas de 50, 1 nota de 10, 1 nota de 5 e 1 nota de 1. Assim, a resposta a ser impressa 3 1 1 1. Faa um programa em C que leia a quantia (valor inteiro positivo) a ser sacada e imprima as quantidades de notas de 50, 10, 5 e 1 a serem fornecidas aos clientes. O algoritmo (idia) a ser seguido est exemplificado abaixo:

Algoritmos e Lgica de Programao27) Para garantirmos segurana na transmisso de dados, podemos codific-los antes de transmiti-los. Suponha um nmero X qualquer de 3 dgitos na forma d1 d2 d3 (por exemplo 237 onde d1=2, d2=3, d3 =7 ). Faa um programa em Linguagem C++ que transforme o nmero X=d1d2d3 em um nmero Y=f1f2f3 que corresponde a X codificado em Y usando a seguinte regra: f1 = ((d3 + 7) mod 10) f2 = ((d1 + 6) mod 9) f3 = (9 mod (d2 + 1)) Exemplificando. Se X=714 ento Y= 141 pois : f1=((d3 + 7) mod 10) = ((4+7) mod 10 ) = 1 f2=((d1 + 6) mod 9) = ((7+6) mod 9 ) = 4 f3=(9 mod (d2 + 1)) = ( 9 mod (1+1)) = 1 O algoritmo e programa em C devem ler X e imprimir Y. 28) Suponha que devido problemas de formatao, um programa de computador escrito no Brasil fornece datas (dia/ms/ano) como se fosse um nmero s com 8 dgitos na forma X=d1d2m1m2a1a2a3a4. Isto significa, exemplificando, que se for lido o nmero X=11031980 ento a data dia 11 do ms 03 de 1980. Por outro lado, este mesmo programa escrito nos EUA fornece datas (ms/dia/ano) como se fosse um nmero tambm s de 8 dgitos na forma Y=m1m2d1d2a1a2a3a4. Isto significa que Y=11031980 significa ms 11, dia 03 de 1980. Escreva um programa em C que leia X correspondendo data descrita no formato do Brasil ( 8 dgitos) e gere Y que corresponde mesma data descrita no formato dos EUA com 8 dgitos. Exemplificando, se X=25111981 ento Y=11251981. OBS1: O nmero X de 8 dgitos deve ser lido em uma nica vez e no dgito a dgito e o nmero Y de 8 dgitos deve ser impresso em uma nica vez, no dgito a dgito!

166 16

50 3

16 6

10 1

6 1

5 1

1 0

1 1

notas de 50

notas de 10

notas de 5

notas de 1

Prof. Francisco Verssimo Luciano

7/33

Prof. Francisco Verssimo Luciano

8/33

Algoritmos e Lgica de ProgramaoExemplo:

Algoritmos e Lgica de Programao

Testes Condicionais:29) Elaborar um programa em Linguagem C++ que informe se o nmero digitado pelo usurio par ou impar. 30) Digitado um nmero inteiro entre 0 e 100, informar o quanto ele est distante de um determinado nmero chave, carregado no prprio programa. Ex.: Nmero chave=20, nmero digitado=15, resposta=5. Nmero chave=17, nmero digitado=20, resposta=3 (Obs.: a resposta dever ser sempre um nmero positivo). 31) Uma Universidade tem problemas com arredondamento das mdias dos alunos, pois cada professor estipula um critrio de arredondamento. Devemos elaborar um programa, em Linguagem C++, para a secretaria da Universidade, resolvendo esse problema. O programa deve solicitar uma nota e fazer o devido arredondamento. Regras: Notas que ultrapassem 0,5 de resto sero arredondas para CIMA. Ex: 4,6 >5,0 Notas que abaixo ou igual a 0,5 de resto sero arredondas para BAIXO. Ex: 4,5 > 4,0 32) Faa um programa em Linguagem que leia 3 nmeros e imprima: a) O maior nmero; b) O menor nmero; c) O nmero do meio. 33) Um pediatra elaborou uma lista com pesos provveis para meninos e meninas entre 1 e 3 anos e, freqentemente, precisa consultar a lista. Escreva um programa em Linguagem C++ que, dada a idade de uma criana de 1 a 3 anos, mostre na tela os pesos provveis para meninos e meninas da mesma idade, seguindo a tabela: 1 ano 2 anos 3 anos Meninos: 8.5 kg a 12.5kg Meninas: 7.5kg a 11.5kg Meninos: 10.1 kg a 15.2kg Meninas: 9.8kg a 14.5kg Meninos: 11.7 kg a 18 kg Meninas: 11.4kg a 17.950kg 9/33

Escolha uma idade de 1 a 3 anos: Pesos Provveis Meninos de 10.1 kg a 15.2kg

2

Meninas de 9.8kg a 14.5kg

34) Determinada instituio de ensino adotou como critrio de clculo de mdias a frmula: Nota do 1o. semestre x 3+Nota do 2o. semestre x 7 10 Se a mdia for menor que 7.0, o aluno ser automaticamente inscrito na prova substitutiva e somente ser aprovado se a nota da prova substitutiva for maior ou igual a 7.0. Se a mdia for maior ou igual a 7.0, o aluno estar aprovado. Escreva um programa em Linguagem C++ que leia as notas necessrias para verificar se o aluno foi aprovado ou reprovado, calcule a mdia, e mostre a mdia avisando se o aluno foi reprovado ou aprovado, segundo o critrio apresentado acima. Exemplo: Digite a Nota do 1o. semestre: 5.5 Digite a Nota do 2o. semestre: 4.0 Mdia: 4.6 O aluno foi inscrito na prova substitutiva Nota da Prova: 8.0 O aluno foi APROVADO

Prof. Francisco Verssimo Luciano

Prof. Francisco Verssimo Luciano

10/33

Algoritmos e Lgica de Programao35) Criar um algoritmo que calcule e classifique os clientes de uma companhia de seguros a partir de seus dados pessoais e histricos de utilizao deste servio com esta ou com outras companhias. Importante lembrar que os parmetros aqui utilizados so falsos, exclusivos para o exerccio. A classificao seguir estes intervalos:Idade Abaixo de 18 anos no h cobertura 18 - 23 -> 4 24 -ptos 3 29 -> 30 -ptos 2 45 -> ptos 46 -> 1 ptos Gnero F -> 2 ptos M -> 3 ptos Utilizao Passeio -> 1 pto Trabalho -> 2 ptos Ambos -> 3 ptos Garagem Classificao sem garagem -> 6 at 7 pontos -> Baixo / ptos desc 10% Diurna -> 4 ptos -> 2 Noturna ptos Ambas pto -> 1 8 - 10 -> mdio / -11 - 14 -> Alto / acresc. 10% 15 - 16 -> Altssimo / acresc. 40%

Algoritmos e Lgica de Programao37) Faa o programa em Linguagem C++ que calcule o salrio lquido dos funcionrios de uma empresa. O salrio lquido composto por descontos e adicionais, seguindo as seguintes regras: Descontos: Salrio bruto < 800,00 no realizar nenhum desconto; 800,00 resto igual a zero (na verdade isto no precisa ser testado) 29/2 => resto diferente de zero 29/3 => resto diferente de zero => 29 nmero primo 29/4 => resto diferente de zero 29/5 => resto diferente de zero Isto porque a raiz quadrada de 29 5.39. Modifique ento o algoritmo anterior para implementar esta pequena mudana, que melhora em muito a desempenho do mesmo.Prof. Francisco Verssimo Luciano

Algoritmos e Lgica de Programao54) Elaborar um programa em Linguagem C++ que calcule a mdia das notas dos alunos de uma sala de aula qualquer, sendo que em primeiro lugar dever ser solicitada a digitao da quantidade de alunos existentes nessa sala e, posteriormente, a digitao de todas as notas dos alunos da mesma. Mdia = ( N1 + N2 + N3 + N4 + N5 + ... + Nm ) / m Exemplo: Digite a quantidade de alunos da sala (m): 5 Digite N1: Digite N2: Digite N3: Digite N4: Digite N5: 5.5 4.5 3.0 5.0 7.0

Mdia da sala: 5.0 55) Escreva um programa em Linguagem C++ para mostrar na tela os resultados de uma tabuada de um nmero qualquer fornecido via teclado. Exemplo: Digite o nmero para a tabuada: 5 Tabuada do 5: 5x0 =0 5x1 =5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 5 x 6 = 30 5 x 7 = 35 5 x 8 = 40 5 x 9 = 45 5 x 10 = 50 56) Escreva um programa em Linguagem C++ para ler dois nmeros inteiros, via teclado, e mostrar na tela o produto entre eles, sendo que este clculo deve ser Prof. Francisco Verssimo Luciano 16/33

15/33

Algoritmos e Lgica de Programaorealizado atravs de somas sucessivas. Sendo: Exemplo: Digite N1: 3 Digite N2: 5 O produto entre 3 e 5 15 57) Escreva um programa em Linguagem C++ para ler dois nmeros inteiros, via teclado, e mostrar na tela o quociente e o resto da diviso do primeiro pelo segundo, sendo que este clculo deve ser realizado atravs de subtraes sucessivas. Sendo: 7 5 3 1 9 2 9 2 = 7 (q=1) 7 2 = 5 (q=2) 5 2 = 3 (q=3) 3 2 = 1 (q=4) 1 2 = -1 que menor ou igual a zero, ento quociente (q) = 4 e 3 x 5 = 3 + 3 + 3 + 3 + 3 = 15 ou = 5 + 5 + 5 = 15.

Algoritmos e Lgica de Programao59) Simule e digite cada um dos programas-fonte em C, comparando o resultado da simulao e da execuo passo-a-passo: a) Programa-Fonte em C #include int main() { float a,n; int c; clrscr(); c=0; a=0; while(c= y, que verdadeira para o nosso exemplo. A tabela direita deve ser preenchida com os valores das variveis x, y e z, uma vez para cada passo da repetio. A primeira linha, como pode ser notado, contm os valores que estas variveis tinham antes do incio da mesma. Apenas dois comandos so repetidos: x = x y, que subtrai o valor y do que h em x, colocando o resultado em x mesmo, e z = z + 1, que incrementa o valor de z. O efeito destes comandos pode ser visto nas outras linhas da tabela. O valor de y permanece inalterado, j que nenhum comando o altera. A repetio encerrada quando x chega ao valor 6, visto que 6 no maior ou igual a y (8). O comando printf mostrar na tela os valores finais de z e x: 6 8Prof. Francisco Verssimo Luciano

Os mltiplos de 3, entre 3 e 13 so: 3, 6, 9, 12 69) Faa um programa em Linguagem C++ que leia nmeros do teclado e mostre na tela o menor dos nmeros mpares positivos digitados. Os nmeros pares devem ser simplesmente ignorados e a digitao de um nmero negativo indica que a entrada dos nmeros est encerrada (Esse mtodo de encerrar um lao chama-se Sentinela). Exemplo: Digite os nmeros inteiros positivos (um negativo ser o Sentinela): 2 5 4 9 -1 Fim. O menor dos mpares digitados 5 70) Faa um programa em Linguagem C++ para ler uma quantidade ilimitada de nmeros do teclado (ou seja, no faa um programa que leia apenas dois ou trs nmeros, mas que leia tantos nmeros quanto for necessrio), parando apenas quando for digitado zero (0) (Sentinela), e que calcule e mostre na tela o resultado da soma dos valores absolutos dos nmeros digitados (valor absoluto de um nmero o prprio nmero sem o sinal, ou seja, sempre positivo). Segue abaixo um exemplo do funcionamento que se espera do referido programa:

25/33

Prof. Francisco Verssimo Luciano

26/33

Algoritmos e Lgica de ProgramaoDigite nmeros: (o sentinela o zero) 4 -3 -6 7 -5 -10 0 Programa encerrado. O resultado 35.

Algoritmos e Lgica de ProgramaoObs.: A seqncia de Fibonacci ocorre na natureza. A razo entre dois nmeros sucessivos nesta seqncia converge para uma constante, 1.618, que chamada razo urea. Os seres humanos tendem a achar agradveis as formas que contm esta razo entre suas dimenses. Os arquitetos geralmente projetam janelas, quartos, edifcios, etc. cujas medidas comprimento e largura esto nas propores da razo urea. Os cartes postais costumam apresentar a relao entre largura e altura respeitando a razo urea (fonte: Como programar em C, Deitel & Deitel, 2a. ed., editora LTC, pg. 144). Como no existe uma frmula geral para os elementos da seqncia de Fibonacci, existindo somente uma frmula de recorrncia conhecida (aquela que diz que qualquer elemento pode ser calculado pela soma dos dois anteriores, exceto os dois primeiros, que so 1 e 1), no resta outra soluo, a no ser gerar a seqncia e compar-la com os trs nmeros digitados. 76) Elaborar um programa em Linguagem C++ que calcule e imprima o valor de PI atravs da srie abaixo. Calcule o valor com preciso de 0,0000000001. PI = 4 * (1 - 1/3 + 1/5 - 1/7 + 1/9 -...) Quem tiver curiosidade sobre a histria de como o nmero PI tem sido calculado durante toda a histria, veja: http://www-groups.dcs.standrews.ac.uk/~history/HistTopics/Pi_through_the_ages.html Note que esta expresso poderia ser escrita assim: PI = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 -... 77) Faa um programa em Linguagem C++ que calcule a raiz quadrada de um nmero real qualquer N sem o uso da funo sqrt da Linguagem C++. Sugerimos o uso de uma frmula iterativa que foi deduzida com o uso do mtodo de Newton-Rapson: XNOVO = (XANTERIOR / 2) + (N / (2 * XANTERIOR) ) Onde N valor cuja raiz ser calculada; a partir de um valor XANTERIOR calculado um valor XNOVO Este XNOVO passar a ser o XANTERIOR e,Prof. Francisco Verssimo Luciano

A resposta 35 porque: 4 + 3 + 6 + 7 + 5 + 10 = 35

71) Faa um programa em Linguagem C++ para ler uma quantidade ilimitada de nmeros do teclado (ou seja, no faa um programa que leia apenas dois ou trs nmeros, mas que leia tantos nmeros quanto for necessrio), parando apenas quando for digitado um nmero negativo, e que calcule e mostre na tela a diviso da soma dos nmeros pares pela soma dos nmeros mpares digitados. Lembre-se que para descobrir se um nmero par ou mpar basta calcular o resto da diviso deste por dois. 72) Faa um programa em Linguagem C++ para entrevistar um nmero indeterminado de pessoas perguntando idade, sexo (1 para Masculino e 2 para Feminino), grau de escolaridade (0 para analfabeto, 1 para curso fundamental, 2 para curso mdio ou 3 para curso superior). O programa deve informar a quantidade de pessoas entrevistadas, a mdia das idades, a porcentagem de mulheres que tm nvel universitrio e a porcentagem de adultos homens analfabetos. 73) Faa um programa em Linguagem C++ que converta um nmero decimal (inteiro e positivo) qualquer para a base binria. Para compreender melhor este algoritmo, sugerimos a leitura do apndice D do livro Como programar em C, de Deitel & Deitel, editora LTC, que explica sistemas de numerao e converso entre bases. 74) Faa um programa em Linguagem C++ que converta um nmero binrio qualquer para a base decimal. 75) Faa um programa em Linguagem C++ que leia trs nmeros e diga se eles constituem trs elementos seguidos da seqncia de Fibonacci. 27/33

Prof. Francisco Verssimo Luciano

28/33

Algoritmos e Lgica de Programaoento, ser calculado atravs da mesma frmula, o novo valor de XNOVO . Estes valores de XNOVO convergiro para a raiz quadrada de N. Sugerimos que adote como XANTERIOR inicial o valor N/2 e que interrompa os clculos quando o mdulo de (XNOVO - XANTERIOR ) / XANTERIOR for menor que 0.001 (isto uma medida de preciso). Ex.: raiz quadrada de 9. XNOVO 3,25 3,01 3 ..... XANTERIOR 4,5 3,25 3,01 .....

Algoritmos e Lgica de Programao80) Escreva um programa em Linguagem C++ que leia digito a dgito de um nmero real com a finalidade de formatar a entrada. O nmero real possuir at 7 dgitos, incluindo a o ponto, o qual ser visualizado como vrgula. Exemplo: 1) Quando o usurio digitar o nmero: 5678,98 Aparecer na tela:

5

6

7

8

,

9

8

78) Uma empresa distribuidora de energia eltrica adotou normas de economia de energia. Para cada imvel, a meta de economia deve ser uma reduo de 20% da mdia de consumo dos meses maio, junho e julho do ano de 2006. Escreva um programa em Linguagem C++, que leia o consumo dos meses (maio, junho e julho) de 2006, e o consumo do ms atual para vrias residncias. O programa deve calcular a meta de economia, e informar se o consumidor est dentro da meta ou ultrapassou. No final do clculo da meta de economia de cada imvel, o programa exibir uma mensagem perguntando se o usurio deseja calcular mais uma meta; caso a resposta seja negativa, ser informada ao usurio a porcentagem de imveis que atingiram a meta e a porcentagem que no atingiram. 79) Escreva um programa em Linguagem C++ que leia dgito a dgito de um nmero inteiro com a finalidade de formatar a entrada. O nmero inteiro possuir at 7 dgitos. Observaes: Caso o usurio, antes de pressionar ENTER para finalizar a entrada dos dgitos, tente digitar algum caractere, o programa vai ignorar este caractere sem acarretar erro para o nmero. O objetivo deste exerccio desenvolver a lgica de programao para uma espcie de mscara de leitura para a digitao de nmeros inteiros. Sugesto: para a leitura use uma funo na linguagem C existe o getch( ) e verifique se cada caractere lido um dgito de 0 a 9. Sendo um dgito vlido, mostre na tela.Prof. Francisco Verssimo Luciano

2) Quando o usurio digitar o nmero: 847238 Aparecer na tela:

8

4

7

2

,

3

8

3) Quando o usurio digitar o nmero: 573,65 Aparecer na tela:

5Observaes:

7

3

,

6

5

Caso o usurio, antes de pressionar ENTER para finalizar a entrada, tente digitar algum caractere diferente de vrgula ou ponto, o programa vai ignorar este caractere sem acarretar erro para o nmero. Caso seja digitada mais de uma vrgula ou ponto, a segunda ocorrncia em diante ser ignorada; Caso o quinto elemento digitado seja um nmero, o mesmo ser posicionado aps a vrgula; O objetivo deste exerccio desenvolver a lgica de programao para uma espcie de mscara de leitura para a digitao de nmeros reais;Prof. Francisco Verssimo Luciano

29/33

30/33

Algoritmos e Lgica de Programao Sugesto: para a leitura use a funo getch e verifique se cada caractere lido um dgito de 0 a 9. Para exibir cada elemento, use uma funo para posicionar os valores na tela - como as funes gotoxy e cprintf da linguagem C procure equivalentes em C++.

Algoritmos e Lgica de Programao

Funes:81) Elaborar um programa em Linguagem C++ que se utilize de funes com passagem de parmetros. O programa dever receber um nmero inteiro, via teclado, e passar esse nmero, como parmetro, para uma funo. Essa funo dever ser capaz de analisar esse nmero e retornar, a quem a chamou, uma informao de 0 (zero) para o caso do nmero passado como parmetro ser PAR e de 1 (um) para o caso de o nmero passado como parmetro ser MPAR. De posse dessa informao, o programa que chamou essa funo dever apresentar em tela o valor do nmero digitado e se ele PAR ou MPAR. 82) Elaborar um programa em Linguagem C++ que se utilize de funes com passagem de parmetros. O programa dever receber um nmero inteiro, via teclado, e passar esse nmero, como parmetro, para uma funo. Essa funo dever ser capaz de analisar esse nmero e retornar, a quem a chamou, uma informao de 0 (zero) para o caso do nmero passado como parmetro ser PRIMO e de 1 (um) para o caso de o nmero passado como parmetro NO ser PRIMO. De posse dessa informao, o programa que chamou essa funo dever apresentar em tela o valor do nmero digitado e se ele PAR ou MPAR. 84) Elaborar um programa em Linguagem C++ que se utilize de funes com passagem de parmetros. O programa dever receber dois nmeros quaisquer, via teclado, e passar esses nmeros, como parmetros, para uma funo. Essa funo dever ser capaz de calcular a MDIA ARITMTICA entre esses dois nmeros e retornar, a quem a chamou, o resultado dessa operao. De posse dessa informao, o programa que chamou essa funo dever apresentar em tela o valor dos dois nmeros digitados e o clculo da MDIA ARITMTICA entre eles. 85) Elaborar um programa em Linguagem C++ que se utilize de funes com passagem de parmetros. O programa dever receber dois nmeros inteiros, via teclado, e passar esses nmeros, como parmetros, para uma funo. Essa funo dever ser capaz de calcular o valor do primeiro nmero ELEVADO ao segundo nmero e retornar, a quem a chamou, o resultado dessa operao. De posse dessa informao, o programa que chamou essa funo dever apresentar em tela o valor dos dois nmeros digitados e o clculo da POTNCIA entre eles. OBS.: No ser permitido o uso da funo pow( ) ou qualquer outra equivalente da Linguagem C++ que calcule a potncia entre dois nmeros.

Prof. Francisco Verssimo Luciano

31/33

Prof. Francisco Verssimo Luciano

32/33

Algoritmos e Lgica de ProgramaoDICA: O aluno dever desenvolver sua prpria funo, se utilizando de laos. 86) Elaborar um programa em Linguagem C++ que se utilize de funes com passagem de parmetros. O programa dever receber dois nmeros inteiros (dividendo e divisor respectivamente), via teclado, e passar esses nmeros, como parmetros, para uma funo. Essa funo dever ser capaz de calcular o valor da o primeiro nmero ELEVADO ao segundo nmero e retornar, a quem a chamou, o resultado dessa operao. De posse dessa informao, o programa que chamou essa funo dever apresentar em tela o valor dos dois nmeros digitados e o clculo da POTNCIA entre eles. OBS.: No ser permitido o uso da funo pow( ) ou qualquer outra equivalente da Linguagem C++ que calcule a potncia entre dois nmeros. DICA: O aluno dever desenvolver sua prpria funo, se utilizando de laos.

Agradecimentos especiais ao Prof. Robson Calvetti Julho/2007

Prof. Francisco Verssimo Luciano

33/33