Baixe o app para aproveitar ainda mais
Prévia do material em texto
MC102 – Algoritmos e programac¸a˜o de computadores Lista de Exerc´ıcios 1 Prof. Orlando Lee Tente fazer os exerc´ıcios individualmente. Olhar a soluc¸a˜o de outro na˜o ajuda a aprender. Programar exige um tipo de racioc´ınio pouco usual e isto so´ se adquire com a pra´tica. Esboce sua soluc¸a˜o em papel e depois implemente-a no computador. Fac¸a alguns testes para ver se o programa esta´ funcionando corretamente. 1. Suponha que um programa tem duas varia´veis inteiras x e y. Escreva um trecho de co´digo em C que troca o conteu´do dessas varia´veis. Por exemplo, se x = 4 e y = 7, depois da troca ter´ıamos x = 7 e y = 4. 2. Escreva um programa que leˆ os coeficientes de uma equac¸a˜o do segundo grau e imprime a(s) ra´ız(es) desta ou imprime uma mensagem se na˜o houver ra´ızes reais. 3. Simule a execuc¸a˜o do programa abaixo (sem usar o computador) usando o nu´mero formado pelos u´ltimos dois d´ıgitos do seu RA (se forem 00, use 43): #include <stdio.h> int main() { int n,a,b,r,i; printf("Digite n: "); scanf("%d", &n); a = n; b = 0; i = 1; while (a > 0) { r = a % 2; a = a / 2; b = b + (r * i); i = i * 10; } printf("%d = (%d)\n", n, b); return 0; } O que o programa faz? 4. Escreva um programa que leˆ um nu´mero real x e um inteiro d ≥ 0 e calcula xd de duas maneiras: (a) usando o comando pow(x,d) do C e (b) atrave´s de um lac¸o como visto em sala. Compare os dois resultados em termos de precisa˜o. 5. Manuel aplicou em um fundo de renda uma certa quantia r de reais a juros de y porcentos (0 ≤ y ≤ 100) ao meˆs por t meses. Escreva um programa em C que leˆ r, y, t e imprime o lucro e a quantia total resultante obtidos por Manuel apo´s este tempo. Na˜o use a func¸a˜o de exponenciac¸a˜o pow do C. 6. Escreva um programa em C que leˆ repetidamente dois nu´meros reais do teclado ate´ que o usua´rio entre com dois nu´meros com sinais opostos. Escreva treˆs verso˜es com while, for e do-while. 7. Escreva um programa em C que leˆ um nu´mero natural n e calcula o n-e´simo nu´mero harmoˆnico Hn =∑ n k=1 1 k . Imprima com dez casas de precisa˜o apo´s a v´ırgula. Escreva treˆs verso˜es com while, for e do-while. Na˜o use vetores. 1 8. Escreva um programa em C que leˆ uma sequ¨eˆncia de nu´meros inteiros terminada com zero (zero na˜o faz parte da sequeˆncia, e´ so´ para indicar o final) e imprime o maior e o menor elemento desta. 9. Escreva um programa em C que leˆ uma sequ¨eˆncia de notas de alunos de MC102 terminada com um nu´mero negativo e imprime o nu´mero de alunos da turma e quantos alunos foram aprovados e reprovados. 10. Escreva um programa em C que leˆ uma sequ¨eˆncia de nu´meros inteiros terminada com zero e imprime a me´dia dos nu´meros pares e a me´dia dos nu´meros ı´mpares. Escreva treˆs verso˜es com while, for e do-while. 11. Fac¸a um programa que leia uma sequ¨eˆncia de nu´meros inteiros positivos e termine com um nu´mero negativo (este u´ltimo na˜o deve ser considerado, serve apenas para finalizar a sequ¨eˆncia). O programa deve verificar se os nu´meros positivos: (a) Esta˜o em ordem crescente. (b) Esta˜o em ordem decrescente. (c) Se a sequ¨eˆncia e´ uma progressa˜o aritme´tica, neste caso dizer a raza˜o. (d) Se a sequ¨eˆncia e´ uma progressa˜o geome´trica, neste caso dizer a raza˜o. 12. Escreva um programa que leˆ um nu´mero inteiro e imprime o reverso dele. Por exemplo: se a entrada for 239134 a sa´ıda deve ser 431932. Use os comandos / e % do C. 13. O valor de π tambe´m pode ser calculado usando a se´rie S = 1 13 − 1 33 + 1 53 − 1 73 + 1 93 − 1 113 + · · ·, sendo que o valor de π e´ calculado como π = 3 √ 32 · S. Fac¸a um programa para calcular o valor de π usando esta se´rie e parando quando a diferenc¸a do valor de π calculado em uma iterac¸a˜o e a iterac¸a˜o anterior for menor que 0,0001. 14. A func¸a˜o seno pode ser aproximada atrave´s da se´rie: sen(x) = x− x 3 3! + x5 5! − x 7 7! + · · · somando termo a termo ate´ que o u´ltimo termo seja menor (em valor absoluto) que um certo ǫ > 0. Escreva um programa em C que leˆ x e ǫ e calcula sen(x) usando esse me´todo. O programa tambe´m deve imprimir as aproximac¸o˜es sucessivas com dez casas de precisa˜o apo´s a v´ırgula. Eis um exemplo com x = 2.5 e ǫ = 0.0001. Entre com x: 2.5 Aproximacao 1 : sen(x) = 2.5000000000 Aproximacao 2 : sen(x) = -0.1041667461 Aproximacao 3 : sen(x) = 0.7096353769 Aproximacao 4 : sen(x) = 0.5885338783 Aproximacao 5 : sen(x) = 0.5990461707 Aproximacao 6 : sen(x) = 0.5984488726 Aproximacao 7 : sen(x) = 0.5984727740 O valor de sen(x) obtido foi 0.5984727740. O programa deve usar apenas um lac¸o. Na˜o use a func¸a˜o de exponenciac¸a˜o pow do C. Na˜o use vetores. 15. A func¸a˜o cosseno pode ser aproximada atrave´s da se´rie: cos(x) = 1− x 2 2! + x4 4! − x 6 6! + · · · somando termo a termo ate´ que o u´ltimo termo seja menor (em valor absoluto) que um certo ǫ > 0. Escreva um programa em C que leˆ x e ǫ e calcula cos(x) usando esse me´todo. O programa tambe´m deve imprimir as aproximac¸o˜es sucessivas com dez casas de precisa˜o apo´s a v´ırgula. O programa deve usar apenas um lac¸o. Na˜o use a func¸a˜o de exponenciac¸a˜o pow do C. Na˜o use vetores. 16. Um nu´mero natural e´ triangular se e´ o produto de treˆs naturais consecutivos. Por exemplo, 6 = 1 ∗ 2 ∗ 3 e 60 = 3 ∗ 4 ∗ 5. Escreva um programa em C que leˆ um natural n e imprime se ele e´ triangular ou na˜o. 17. Um nu´mero natural e´ perfeito se a soma dos seus divisores pro´prios e´ igual ao pro´prio nu´mero. Por exemplo, 6 e´ perfeito pois 1 + 2 + 3 = 6. Escreva um programa em C que leˆ um natural n e imprime se ele e´ perfeito ou na˜o. 2 18. Escreva um programa que leˆ um natural n ≥ 1 e uma sequ¨eˆncia de n inteiros e imprime o nu´mero de segmentos de nu´meros iguais consecutivos que compo˜em a sequ¨eˆncia. Por exemplo, a sequ¨eˆncia 5, 2, 2, 2, 1, 3, 3, 3, 3, 2 possui cinco segmentos de nu´meros iguais consecutivos: (a) 5, (b) 2, 2, 2, (c) 1, (d) 3, 3, 3, 3 e (e) 2. Ja´ a sequ¨eˆncia 2, 3, 2, 1 possui quatro segmentos de nu´meros iguais consecutivos. Na˜o use vetores. 19. O desvio padra˜o dp e a variaˆncia var dos nu´meros x1, . . . , xn podem ser calculados usando as seguintes fo´rmulas dp(x1, . . . , xn) = √√√√√ 1 n− 1 n∑ i=1 x2 i − 1 n ( n∑ i=1 xi )2 var (x1, . . . , xn) = (dp(x1, . . . , xn)) 2. Fac¸a um programa que leˆ o valor n e a sequ¨eˆncia dos n nu´meros reais e depois imprime a me´dia, o desvio padra˜o e a variaˆncia dos n nu´meros lidos. Obs.: O desvio padra˜o tambe´m pode ser obtido atrave´s da fo´rmula dp(x1, . . . , xn) = √ 1 n−1 ∑n i=1 (xi −X)2, ondeX e´ a me´dia dos nu´meros x1, . . . , xn. Mas note que o ca´lculo do desvio padra˜o, atrave´s desta fo´rmula, exige o ca´lculo pre´vio da me´dia e portanto os nu´meros devem estar todos dispon´ıveis ao mesmo tempo, na memo´ria do computador, para o ca´lculo do desvio padra˜o. 20. Escreva um programa em C que leˆ um natural n e imprime o seguinte triaˆngulo: 6 5 4 3 2 1 5 4 3 2 1 4 3 2 1 3 2 1 2 1 1 O exemplo acima corresponde ao caso em que n = 6. E´ poss´ıvel fazer o programa com apenas dois lac¸os encaixados. Na˜o use vetores. 21. Escreva um programa que leˆ um nu´mero inteiro n e imprime uma figura da seguinte forma: x+++++ +x++++ ++x+++ +++x++ ++++x+ +++++x No caso, a figura foi impressa com n = 6. 22. Escreva um programa que leˆ um inteiro n e imprime uma figura da seguinte forma: ....*.... ...***... ..*****.. .*******. ********* .*******. ..*****.. ...***... ....*.... No caso, a figura foi impressa com n = 5. A quantidade de linhas impressas e´ 2n− 1. 23. Um nu´mero inteiro na˜o-negativom e´ um subnu´mero de outro nu´mero inteiro na˜o-negativo n se osd´ıgitos de m aparecem na mesma ordem consecutivamente na sequeˆncia de d´ıgitos de n. Por exemplo, 201 e´ subnu´mero de 32017, mas 201 na˜o e´ subnu´mero de 24017. Escreva um programa em C que leˆ inteiros m e n e verifica se m e´ subnu´mero de n. 3
Compartilhar