Faculdade de Computação
Algoritmos e Programação de Computadores 2a Lista de Exercícios p/ Avaliação
Prof. Cláudio C. Rodrigues
Instruções:
1. Apresentar um relatório de soluções com os seguintes artefatos: codificação em linguagem C;
2. O trabalho deve possuir uma capa, com identificação da disciplina, nome do estudante, número de matrícula e e-mail.
3. O trabalho deve ser desenvolvido em grupo de 1 até 3 estudantes e qualquer identificação de plágio sofrerá penalização;
4. Entregar um CD com as soluções, impreterivelmente, no dia 17/01/2014.
Problemas:
P1) Assumindo que c e d são variáveis do tipo caractere (char) cujo valor é um dígito (’0’,. . . , 9’), e n um inteiro entre 0 e 9, escreva em linguagem C expressões cujo resultado seja:
a) o número inteiro correspondente ao caractere c;
b) o caractere correspondente ao inteiro (dígito) n;
c) o número inteiro obtido por justaposição dos caracteres c e d (exemplo: se c =’2’ e d=’5’ o resultado deverá ser o inteiro 25).
P2) Assumindo que c é uma variável do tipo caractere (char) cujo valor é uma letra minúscula, e n um inteiro entre 1 e 26, escreva em linguagem C expressões cujo resultado seja:
a) a letra maiúscula correspondente a c;
b) a n-ésima letra minúscula do alfabeto (obs: ’a’ é a primeira letra, ’b’ a segunda...);
c) a posição de c no alfabeto (obs: ’a’ está na posição 1 do alfabeto, ’b’ na posição 2...);
d) verdadeiro se c for uma consoante e falso caso contrário (consideramos vogais apenas as letras ’a’, ’e’, ’i’, ’o’ e ’u’).
P3) Escreva um programa em linguagem C que realiza a Sequência de Fibonnacci, onde dado n, calcula Fn. A sequência de Fibonnacci se define os dois primeiros termos e cada termo seguinte é igual à soma dos dois termos imediatamente anteriores. O n-ésimo número da sequência de Fibonnacci Fn é dado pela seguinte fórmula de recorrência descrita abaixo:
Os primeiros números de Fibonnacci são 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
P4) Escreva um programa em linguagem C que leia do dispositivo padrão de entrada (teclado) dois números naturais e calcula o maior divisor comum (mdc), usando o Algoritmo de Euclides. Abaixo, apresentamos a descrição do algoritmo:
Obtendo o mdc entre dois números naturais X e Y onde X > Y.
Divida X por Y e obtenha o resto R1. Se R1 for zero, o mdc entre X e Y é Y.
Se R1 não for zero, divida Y por R1 e obtenha o resto R2. Se R2 for zero, o mdc entre X e Y é R1
Se R2 não for zero, divida R1 por R2 e obtenha o resto R3. Se R3 for zero, o mdc entre X e Y é R2
...
P5) Escreva um programa em linguagem C para conversão de base numérica. O programa deverá apresentar uma tela de entrada com as seguintes opções:
< Conversao de base >
1: decimal para hexadecimal 2: hexadecimal para decimal 3: decimal para octal
4: octal para decimal 5: Encerra
Informe sua opcao:
A partir da opção escolhida, o programa deverá pedir o número na base escolhida, lê-lo e apresentá-lo na base desejada. Em seguida, o programa deve perguntar ao usuário se ele deseja retornar ao menu principal ou finalizar o programa. O problema pode ser estendido a outras bases, de acordo com o interesse do aluno.
OBS: existem duas formas de implementar o programa, uma mais simples e outra mais complicada: na mais simples, podem ser utilizados os caracteres de formatação de leitura no scanf e de escrita no printf; na mais complicada, você deverá fazer as operações matemáticas para conversão.
P6) A lei de Coulomb determina a intensidade da força exercida entre duas cargas pontuais, q1 e q2, separadas por uma distância d:
onde K (= 9×109 (Nm2/C2), no vácuo) é uma constante que depende do meio, q1 e q2 são as cargas elétricas em Coulomb (C) e F é a força em Newton (N). Se as cargas possuírem sinais contrários a força é atrativa, senão é repulsiva.
Escreva um programa em linguagem C que leia o valor das duas cargas, q1 e q2 e calcula o valor da força F e informe se esta é atrativa ou repulsiva. As cargas estão localizadas em pontos do espaço definido pelas coordenadas (x,y,z). Para determinar a distância entre as cargas utilize a fórmula: d = sqrt((x2 - x1 ) + ( y2 - y1 ) + (z2 - z1 ) .
P7) Escreva um programa em linguagem C, que imprima na tela uma moldura de ‘*’. A figura abaixo mostra um exemplo de moldura para as dimensões (4, 6) – 4 asteriscos de largura por 6 asteriscos de altura. As dimensões da moldura devem ser informadas pelo usuário e o algoritmo deve se adaptar as escolhas do usuário.
Exemplo: moldura 4 x 6
****
* *
* *
* *
* *
****
P8) Escreva um programa em linguagem C que escreva no dispositivo padrão de saída (tela) a figura de um losango, como mostrado na figura abaixo.
* * * * *
* * * * * * *
P9) Escreva um programa em linguagem C que construa uma pirâmide de números conforme ilustrado na figura abaixo. O programa deve ler do usuário a informação da altura da pirâmide h. Por exemplo, para uma altura h=5 a pirâmide deve ser construída como na figura abaixo (automatize o algoritmo):
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1
P10) Escreva um programa em linguagem C, denominado TapeteAlpha, que receba como entrada o número (inteiro) de caracteres a ser impresso no formato de moldura. A moldura de caracteres deve ter a forma do exemplo abaixo.
Exemplo:
>Numero de caracteres: 3
>Saída:
AAAAAA ABBBBA ABCCBA ABCCBA ABBBBA AAAAAA
P11) No jogo de Vinte e Um (blackjack), as cartas de 2 a 10 são contadas com seus valores nominais, independentemente do naipe. As cartas com figuras (valete, dama e rei) são contadas como 10 e o ás é contado como 1 ou como 11, dependendo da contagem total de pontos na mão do jogador. O ás é contado como 11 somente se o valor resultante total das cartas na mão do jogador não exceder 21, senão é contado como 1. Usando esta informação, escreva um programa em linguagem C para receber o valor de três cartas como entrada (1 correspondendo ao ás, 2 correspondendo ao 2, e assim por diante), calcule o valor total da mão de forma apropriada e mostre o este valor com uma mensagem impressa.
P12) Escreva um programa em linguagem C que imprima a tabela de conversão de polegadas para centímetros. Deseja-se que na tabela constem valores dede 1 polegada até 20 polegadas (lembrando que 1 polegada equivale a 2,54 centímetros).
P13) Pretende-se construir uma chaminé cilíndrica de concreto de altura h, raio do interior Ri e raio do exterior Re. O volume V de concreto necessário é dado por:
Na empresa do Sr. Joaquim o m3 do concreto custa R$ 25,00, se o total de concreto comprado for inferior a 5m3 e R$ 20,00 se o total comprado for superior ou igual a 5m3. Na empresa do Sr. Manuel o m3 do concreto custa R$ 30,00 se o total comprado for inferior a 10m3 e R$ 15,00 se o total comprado for superior ou igual a 10m3.
Escreva um programa em linguagem C que leia h, Ri e Re e que indique a qual das empresas é mais vantajoso comprar e o total a pagar.
P14) Escreva um programa em C para encontrar a soma dos 100 primeiros termos da série:
P15) Os seguintes dados foram coletados em uma recente viagem de automóvel.
Quilometragem Litros
Início da viagem: 22495 Tanque cheio
22841 36,6
23185 33,9
23400 31,5
23772 33,0
24055 36,6
24434 44,1
24804 42,9
25276 45,6
a) Escreva um programa em C que receba a quilometragem e o consumo em litros e calcule o consumo médio por quilômetro de cada segmento da viagem. O
consumo médio é obtido com a diferença de quilometragem entre dois abastecimentos, dividindo-a pelo número de litros do último abastecimento.
b) Modifique o programa do item a para também calcular e mostrar o consumo médio cumulativo ao final de cada trecho (a cada abastecimento). O consumo médio cumulativo é calculado com a diferença entre a quilometragem de um abastecimento e a quilometragem do início da viagem, dividindo-a pela soma dos litros de todos os abastecimentos até então.
P16) Imprimir uma tabela de senos e cossenos dos valores de x pertence [0 , pi/2[ com intervalos de 0.01 radianos.
Saída:
x sin(x) cos(x) 0.00 0.0000 1.0000 0.01 0.0100 1.0000 0.02 0.0200 0.9998 0.03 0.0300 0.9996 0.04 0.0400 0.9992 0.05 0.0500 0.9988 0.06 0.0600 0.9982 P17) Sabendo que
Escreva um programa em linguagem C que calcule uma aproximação a constante , somando os termos da série acima até que seu valor absoluto seja < 0.00001.
P18) Escreva um programa em linguagem C, denominado senox.c, que calcula o seno de x. A sua função apenas deverá calcular os primeiros 10 termos, isto é, até ao termo x19/19!. O seno de x pode ser calculado utilizando a expansão da série de Taylor:
O elemento x da série de Taylor deve ser em radianos. Portanto, o programa senox.c deve ler o valor do ângulo em graus e converter para radianos. Para realizar a conversão utilize a regra de três, considerando que PI radianos é igual a 180 e que a constante PI assume valor de 3.141592
P19) Escreva um programa em linguagem C, denominado cosex.c, que calcula o cosseno de x.
A sua função apenas deverá calcular os primeiros 10 termos, isto é, até ao termo x20/20!.
O cosseno de x pode ser calculado utilizando a expansão da série de Taylor:
O elemento x da série de Taylor deve ser em radianos. Portanto, o programa cosex.c deve ler o valor do ângulo em graus e converter para radianos. Para realizar a conversão utilize a regra de três, considerando que PI radianos é igual a 180 e que a constante PI assume valor de 3.141592 P20) Calcular ex por desenvolvimento em Série de Taylor desprezando termos, em grandeza,
inferiores a 10-7.
Análise Infinitesimal:
1