CI208 – Programação de Computadores
Exercícios # 04
1o semestre 2010
Estruturas de Repetição*



*Os exercícios desta lista são compilações de materiais gerados por professores do DINF/UFPR para a disciplina de CI208 - Programação de Computadores.

Nos exercícios abaixo, os nomes entre parênteses no início do enunciado são sugestões para os nomes dos programas solicitados.

1.

(fatorial)  Dado um número inteiro, calcular seu Fatorial.

  

O fatorial de um número inteiro é definido como:
n! = 1 * 2 * 3 * .... * (n - 1) * n
0! = 1

2.

(fibonacci)  Faça um programa que exiba na tela os 20 primeiros números da seqüência de Fibonnacci.

  

A seqüência de Fibonnacci é definida como:
fib(0) = 0
fib(1) = 1
fib(n) = fib(n - 1) + fib(n - 2)
ou seja, a seqüência 0,1,1,2,3,5,8,13,21,34,⋅⋅⋅

3.

(nfibonacci)  Baseado na solução do exercício anterior, faça um programa que mostre o N-ésimo elemento da seqüência de Fibonnacci. O valor de N deve ser fornecido pelo usuário.

4.

(ehprimo)  Dado um número inteiro maior que 1, verifique se este número é primo ou não, exibindo mensagens convenientes em cada caso.

  

Nas soluções abaixo, observe o número de iterações necessárias para chegar ao resultado:

  • Solução 1: Critério = divisibilidade.1
  • Solução 2: Critério = divisibilidade.2
  • Solução 3: Crivo de Eratóstenes.3
5.

(eqgrau2)  Ler um conjunto de linhas de dados contendo a definição de várias equações do segundo grau da forma

  2
Ax  + Bx + C  = 0.

Cada linha de dados contém a definição de uma equação por meio dos valores de A, B e C do conjunto dos números reais. A última linha informada ao sistema contém 3 (três) valores zero (exemplo 0 0 0).
Após a leitura de cada linha o programa deve calcular as duas raízes da equação. A listagem de saída, em cada linha, deverá conter sempre os valores de A, B e C lidos, seguidos dos valores das duas raízes reais. Caso a equação não tenha raízes reais, isto deve ser indicado na saída. Após cada resultado, o programa deve pedir que o usuário digite T para terminar o programa ou qualquer outra LETRA para continuar a calcular raízes de equações de 2o grau.

6.

(coseno)  Sabe-se que o valor do coseno de x radianos pode ser calculado pela série infinita abaixo:

        ∑N        2i     0    2    4    6    8
cos(x ) =   (- 1)i x- =  x--  x-+  x--- x--+ x--- ⋅⋅⋅
        i=0     (2i)!   0!   2!   4!   6!   8!

Faça um programa que calcule o valor do coseno de um ângulo em radianos obtido pela série acima considerando apenas os primeiros 14 termos da mesma.

7.

(coseno-for)  Resolva o exercício 6 usando o comando FOR.

8.

(calsqrt)  Faça um programa que calcule o número real que mais se aproxime da raiz quadrada de um número fornecido pelo usuário, com um erro de 1e-5.

9.

(fatgeral)  Dado um número inteiro N, tabelar N[k] para k variando de 1 até N. Considere que, por definição,

X [k] = X (X - 1)(X - 2)(X - 3)⋅⋅⋅(X  - k + 1 ),

sendo X um número real, k um natural diferente de zero e X[0] = 1. Observe que se X = N = k, então N[N] = N!.

10.

(lancheria)  O cardápio de uma lancheria é o seguinte:




Especificação Código Preço






Cachorro quente 100 1,20
Bauru simples 101 1,30
Bauru com ovo 102 1,50
Hambúrger 103 1,20
Cheeseburguer 104 1,30
Refrigerante 105 1,00



 
Escrever um programa que leia o código do item pedido, a quantidade e calcule o valor a ser pago por aquele lanche. Considere que a cada execução somente será calculado um item.

11.

(lanche)  Refaça o programa 10 de forma que seja feito o cálculo do preço do lanche até que o usuário entre com código de ítem 0 (zero), quando então o programa deve terminar.

12.

(sucessorpar)  Fazer um programa em C++ para ler do teclado uma massa de dados onde cada linha contém um número par. Para cada número lido, calcular o seu sucessor par, imprimindo-os dois a dois em listagem de saida. A última entrada de dados contém o número zero. OBSERVACAO: o zero não deve ser considerado para o cálculo do sucessor par.

13.

(calcmedia)  Fazer um programa em C++ que leia do teclado uma massa de dados onde cada linha contém um valor numérico. O programa deve calcular a média aritmética dos diversos valores lidos, imprimindo-a no final da fase de leitura. A última entrada de dados contém o unico número zero fornecido. OBSERVACAO: o zero não deve ser considerado no cálculo da média.

14.

(achamaior)  Fazer um programa em C++ que seja capaz de ler números inteiros positivos do teclado e de identificar o maior destes números lidos. Ao final, o maior número encontrado deve ser impresso. O número zero é o ultimo número fornecido como dado de entrada. OBSERVACAO: o zero não deve ser considerado na busca do maior.

15.

(somaimpares)  Fazer um programa em C++ para calcular a soma dos cinquenta primeiros números ímpares. Ao final, imprimir esta soma.

16.

(prodimpares)  Fazer um programa em C++ para calcular o produto dos números ímpares de 1 a 12. Ao final, imprimir o valor calculado.

17.

(neperiano)  Sabe-se que o número Neperiano e = 2.7182818⋅⋅⋅ (que é um número irracional) pode ser calculado pela soma dos valores de uma série infinita, como mostrado abaixo:

        1    1   1    1   1
e = 1+  1! + 2! + 3! + 4! + 5! + ⋅⋅⋅

Fazer um programa em C++ que calcule este número (e) considerando apenas as 15 (quinze) primeiras parcelas.

18.

(coseno1)  Considere a soma S das parcelas apresentadas abaixo, as quais são originadas de uma série infinita:

1- -1 + 1--  1-+ -1 - -1-+  1--- ⋅⋅⋅
   2!   4!   6!  8!   10!   12!

Esta soma corresponde ao cálculo do valor do co-seno de 1 (um) radiano. Fazer um programa em C++ que calcule o valor de S considerando apenas as 14 primeiras parcelas. Ao final, imprimir o resultado encontrado para S.

19.

(primos100)  Fazer um programa em C++ para calcular e imprimir todos os números primos entre 1 e 100.

20.

(primos30)  Fazer um programa em C++ para calcular e imprimir todos os 30 primeiros números primos.

21.

(primos300)  Fazer um programa em C++ para calcular e imprimir a soma dos números primos entre 1 e 300.

22.

(mdceuclides)  Fazer um programa em C++ para ler dois números Naturais do teclado e calcular o MDC (Máximo Divisor Comum) pelo método Euclidiano. Em seguida, imprimir o valor do MDC calculado.
OBSERVACAO: NÃO utilize nem VETORES e nem STRINGS!!!
Um exemplo do método Euclidiano aplicado aos números 720 e 520 é o seguinte:

PIC

23.

(multiplica)  Fazer um programa em C++ para simular o processo de multiplicação ensinado por uma professora do ensino fundamental aos seus alunos. O programa deve funcionar para a multiplicação de um número inteiro positivo de 3 (três) algarismos por um número inteiro positivo de apenas 1 (um) algarismo. Os dois números são fornecidos pelo teclado do computador.
OBSERVACAO: Aplique divisões sucessivas por 10, assumindo que a UCP do seu computador saiba determinar automaticamente o resto da divisão de um número inteiro por outro inteiro.

24.

(multiplica2)  Fazer um programa em C++ para simular o processo de multiplicação ensinado por uma professora do ensino fundamental aos seus alunos. O programa deve funcionar para a multiplicação de um número inteiro positivo composto de qualquer quantidade de algarismos por um número inteiro positivo de apenas 1 (um) algarismo. Os dois números são fornecidos pelo teclado do computador.
OBSERVACAO: Aplique divisões sucessivas por 10, assumindo que a UCP do seu computador saiba determinar automaticamente o resto de uma divisão de um número inteiro por outro inteiro.

25.

(palindromo)  Fazer um programa em C++ que seja capaz de ler um número inteiro positivo do teclado e de verificar se a sua sequência de dígitos é exatamente a mesma, tanto se for analisado da esquerda para a direita quanto da direita para a esquerda. Caso seja, imprimir ??ESSE NUMERO E PALÍNDROMO!!!??. Caso não seja, imprimir ??ESSE NUMERO NÃO É PALÍNDROMO.??
OBSERVACAO: utilize divisões e/ou multiplicações sucessivas por 10.