Programação I – Electrónica e Computadores – 2003/2004 Ficha 1 Noções de sequência e decisão em algoritmia 1. Ler uma temperatura em Celsius e converter para Fahrenheit. Elabore o algoritmo e especifique as estruturas de dados necessárias para a resolução do problema. (tempF=(tempC x 9)/5 + 32) 2. Ler um valor em escudos, converter esse valor para euros e mostrar o resultado. Elabore o algoritmo, tendo em atenção que caso seja introduzido um valor negativo, deverá ser mostrada uma mensagem de erro. Utilize a seguinte taxa de conversão: 1 euro = 200,48 escudos. 3. Um centro desportivo pratica os seguintes preços: ?? 1ª hora: 2000$ ?? 2ª hora: 1500$ ?? 3a hora: 750$/hora O tempo de permanência no centro é contabilizado em horas e minutos. Por exemplo, se um cliente permanecer 2 horas e 30 minutos no centro desportivo, pagará 2000$ (1ª hora) + 1500$ (2ª hora) + 375$5 (30 minutos a 750$/hora). Elabore um algoritmo que, lido o tempo que determinado cliente permaneceu no centro, diga a quantia que deve ser paga. 4. Ler um valor em segundos e mostrar esse valor no formato HH:MM:SS. 5. Descreva um algoritmo que, dado o raio de uma esfera, calcula o seu volume. Considere o valor de ? = 3.1415. (V = 4/3? R3 ). 6. Ler um número e calcular o seu módulo. Aulas Práticas Pag 1/1 Programação I – Electrónica e Computadores – 2003/2004 Ficha 2 Noção de repetição em algoritmia 7. Descreva um algoritmo que mostre todos os anos bissextos entre 1900 e 2000. Especifique as estruturas de dados necessárias à resolução do problema. Note-se que um ano é bissexto se for divisível por 4, mas não por 100, excepto se for divisível por 400. Por exemplo, 1900 não foi um ano bissexto (é divisível por 4 mas é divisível por 100, sem o ser por 400), mas 2000 foi (é divisível por 4 e é divisível por 100 e também por 400). 8. Ler 100 números, determinar o maior, o menor e a média dos 100 números lidos. Elabore o algoritmo. 9. Determinar o maior número de uma sequência de números lidos do teclado até ser digitado o número zero. 10. Descreva um algoritmo para mostrar a tabuada de 1 a 10: 1x1=1 1x2=2 . . . 10x9=90 10x10=100 11. Descreva um algoritmo que, dados 2 números, mostre todos os números pares do intervalo constituído pelos dois números, por ordem decrescente. Especifique as estruturas de dados necessárias à resolução do problema. 12. Determinar quantos números são maiores que 100 numa sequência de números lidos do teclado. O valor de N é definido pelo utilizador. Descreva o algoritmo. Aulas Práticas Pag 2/2 Programação I – Electrónica e Computadores – 2003/2004 Ficha 3 Programas simples em C 13. Ler 10 números e calcular a sua média. 14. Calcular ? (x+2)^2 para números compreendidos entre 5 e 10. 15. Indicar todos os números pares contidos num intervalo indicado pelo utilizador. 16. Escreva um programa que permita visualizar o código ASCII de todas as letras minúsculas. 17. Verificar se numa sequência de 10 números de tamanho 4 introduzidos pelo utilizador quantos são capicua. Aulas Práticas Pag 3/3 Programação I – Electrónica e Computadores – 2003/2004 Ficha 4 Programas simples em C 18. Elabore um programa em linguagem C que leia um número maior que 100 e imprima o número de dígitos que o compõem. 19. Elabore um programa que, dado um número inteiro, mostre a soma dos dígitos que o compõem. 20. Elabore um programa que leia um número e imprima quantos dígitos são iguais a um dado dígito definido pelo utilizador. 21. Elabore um programa que leia um número e imprima o digito de maior ordem. 22. Elabore um programa que determine a soma de numeros pares e numeros impares. A leitura devera ser feita ate ser introduzido 0. Aulas Práticas Pag 4/4 Programação I – Electrónica e Computadores – 2003/2004 Ficha 5 Decisão múltipla e repetição em C 23. Escreva um programa que permita inserir um número associado aos dias da semana (1-7) e visualizar o nome do dia da semana correspondente. 24. Escreva um programa que simule uma calculadora simples com as quatro operações aritméticas básicas (soma, subtracção, divisão e multiplicação). 25. Elabore um programa que, dado um número inteiro, mostre a soma dos dígitos que o compõem. 26. Elabore um programa em linguagem C que leia um número maior que 100 e imprima o número de dígitos que o compõem. 27. Elabore um programa que leia um número e imprima quantos dígitos são iguais a um dado dígito definido pelo utilizador. 28. Escreva um programa que permita visualizar o código ASCII de todas as letras minúsculas. 29. Elabore um programa que leia um número e imprima o digito de maior ordem. Aulas Práticas Pag 5/5 Programação I – Electrónica e Computadores – 2003/2004 Ficha 6 Funções em C 30. Escrever uma função que determine se um numero e par ou impar (os números a verificar pertencem a uma lista indeterminada de valores que terminam com o valor 0. 31. Verificar se dados 3 números eles seguem a regra n1=3+N2 e N2=(5*N3)-1. 32. Criar uma função que dado o ordenado mensal e o imposto a pagar por mês, calcule o total de impostos a pagar no fim do ano. 33. Escreva uma função que determina o tamanho (nº de digitos) de um numero. 34. Determinar os diferentes valores que a expressão 3*x + x! toma entre 1 e 10 usando uma função para determinar o factorial. Aulas Práticas Pag 6/6 Programação I – Electrónica e Computadores – 2003/2004 Ficha 7 Funções em C 35. Escreva uma função que calcule o factorial de um número. A função a construir deve receber um único parâmetro que lhe é passado por valor (o número para o qual vai calcular-se o factorial) e deve retornar um valor do tipo double, que será o factorial do número. Dever-se-á escrever um programa que teste a função acima. 36. Escreva uma função que calcula o factorial de um número e que recebe dois parámetros: um passado por valor que será o número para o qual se deseja calcular o factorial, e outro que será passado por referência que vai permitir à função devolver o valor do factorial do número. 37. Escreva uma função que imprima os n primeiros números da sequência de Fibonacci (0,1,1,2,3,5,8,13,...). Os dois primeiros elementos da sequência são o 0 e o 1, e todos os outros elementos são obtidos pela soma dos dois elementos anteriores. Teste a função. 38. Escreva uma função que determine a quantia que uma pessoa tem n anos após ter depositado uma quantia q num banco, sabendo que a taxa de juros líquida é j e que, no final de cada ano, os juros recebidos são acumulados à quantia depositada. Teste a função. 39. Escreva uma função que calcule , para um dado número inteiro N (N>0), o cubo de N, segundo o teorema de Nicomachus, que diz o seguinte: 13 =1 23 =3+5 33 =7+9+11 43 =13+15+17+19 ... Escreva um programa que teste a função. Aulas Práticas Pag 7/7 Programação I – Electrónica e Computadores – 2003/2004 40. Recentemente realizou-se uma experiência para se determinar o valor da aceleração da gravidade em determinada localidade. Deixou-se cair uma bola, a partir do repouso, do topo de vários edifícios, tendo-se registado o tempo que a bola demorou a atingir o solo em cada caso. Foram realizadas 5 medidas: Altura do prédio (m) Tempo que demorou a atingir o chão (s) 69 3.74 114 4.84 216 6.64 129 5.13 48 3.11 Elabore um programa para calcular a aceleração da gravidade g, a partir destes dados, utilizando a fórmula: y=½gt2 y=distância percorrida pela bola t=tempo gasto Deve ser considerado como valor de g, a média aritmética dos valores obtidos através das 5 medidas efectuadas. Devem ser lidas os dados referentes às 5 medidas e deve ser mostrado o valor de g calculado. Escreva uma função que calcule o valor da aceleração da gravidade e teste a função. Aulas Práticas Pag 8/8 Programação I – Electrónica e Computadores – 2003/2004 55. Ficha 8 Vectores em C 41. Calcular o somatório de um vector. 42. Determinar o elemento máximo de um vector e em que posição se encontra. 43. Ordenar de forma decrescente um vector. 44. Determinar quantos elementos de um vector são pares. 45. Converter um numero binário de tamanho 8 contido num vector para base 10. 46. Somar dois vectores de tamanho 10. Aulas Práticas Pag 9/9 Programação I – Electrónica e Computadores – 2003/2004 Ficha 9 Vectores em C (continuação) 47. Escreva um programa com: a. Uma função que faça a leitura de 10 números e guarde-os em memória RAM. Estes 10 números deverão ser conhecidos na função principal do programa. b. Uma função que, dos 10 números lidos, mostre todos os que são maiores que os seus vizinhos. c. Uma função que retorne a maior diferença absoluta entre dois números consecutivos. Também deverá retornar a posição destes dois números onde existe a maior diferença. d. Uma função que retorne a média dos 10 números. e. Uma função que retorne a mediana dos 10 números. Mediana é o valor central de uma série de números. Quando existe um número par de elementos, define-se mediana como a média dos dois números centrais. O programa deverá testar as funções escritas. Aulas Práticas Pag 10/10 Programação I – Electrónica e Computadores – 2003/2004 Ficha 10 Matrizes 49. Determinar a soma de todas as colunas de uma matriz. 50. Determinar a soma da diagonal principal de uma matriz. 51. Multiplicar duas matrizes. 52. Verificar se duas matrizes são iguais. 53. Dada uma matriz 5x10 em que as linhas correspondem a cadeiras e as colunas aos números dos alunos determinar qual o aluno com a melhor nota, a média das notas, a média dos alunos, a média de cada aluno. 54. Crie um jogo do galo. 55. Elabore um programa que: ?? preencha com números inteiros lidos do teclado as L linhas e C colunas de uma matriz M (com L+1 linhas e C+1 colunas), em que L e C são também pedidos ao utilizador: ?? coloque na coluna C+1 a soma dos valores de cada linha L e na linha L+1 a soma dos elementos de cada coluna C. ?? coloque na célula M?L+1,C+1?, o somatório dos elementos da diagonal principal da matriz. (a matriz tem de ser quadrada!!!!!) 56. Dada uma matriz NOTA cujo elemento NOTA?i??j? contém a nota obtida pelo estudante i no problema j em percentagem, e um vector peso cujo elemento PESO?j? indica o peso do problema j na nota final, pretende-se a escrita de um programa que realize as seguintes tarefas: ?? ler a matriz NOTA ?? ler vector PESO ?? calcular a nota final de cada aluno e armazenar na matriz CLASSIF com duas colunas e em que a primeira contém o número do aluno e a segunda tem a sua nota final ?? calcular a média das notas ?? calcular o n.º de alunos que obtiveram a nota X ?? determinar os alunos que obtiveram a nota X Aulas Práticas Pag 11/11 Programação I – Electrónica e Computadores – 2003/2004 Ficha 10 Manutenção de Strings 57. Ler uma linha de texto, contar os espaços em branco e substituir múltiplas ocorrências de espaços em branco por um só. 58. Ler uma linha de texto e contar as palavras que ela contém. 59. Ler uma linha de texto e volte a escrevê-la por ordem inversa. 60. Escreva um programa que leia uma palavra e uma linha e indique se a palavra está contida na linha. 61. Sugestão: usar strncmp() para compara a palavra com cada palavra da string. 62. Ler dois números binários em formato de string, e apresente o resultado da sua soma. Sugestão: Converta cada um para decimal, efectue a operação e converta novamente para binário; Comece por escrever duas funções decbin() e bindec(). 63. Escreva uma função que leia uma série de linhas de texto e escreve a linha maior. 64. Sejam NOME e SEXO dois vectores contendo os nomes e sexo de cada membro de um clube de jovens. Masculino e feminino são indicados por ‘M’ e ‘F’ respectivamente. Pretende-se um programa que cria dois novos vectores, MASCULINO e FEMININO, tais que o vector MASCULINO contenha os nomes de todos os indivíduos masculinos e FEMININO contenha os nomes de todos os elementos femininos. Escreva um programa que realize as seguintes tarefas: ?? Ler os vectores NOME e SEXO; ?? Criar os novos vectores MASCULINO e FEMININO; ?? Ordenar por ordem alfabética os vectores MASCULINO E FEMININO; ?? Escrever os vectores; ?? Pesquisar os vectores, de tal forma que, dado o nome de um jovem o programa responder se é masculino ou feminino Nota: definir funções para cada uma das tarefas. Aulas Práticas Pag 12/12 Programação I – Electrónica e Computadores – 2003/2004 Aulas Práticas Pag 13/13