Você está na página 1de 3

Algoritmos e Estruturas de Dados I 1o semestre de 2012 Professora: Virg nia Fernandes Mota Lista Preparatria para a segunda prova

(Data de entrega: 17/05) o

DCC/ICEx/UFMG

Parte I - Estruturas de Repetio ca Desenvolver os respectivos programas em C para resolver os problemas abaixo: 1. Escrever um algoritmo que l 10 valores e conte quantos destes valores so negativos. Imprima e a esta informao. ca 2. Escreva um algoritmo que leia 6 valores e encontre o maior e o menor deles. Mostre o resultado. 3. Faa um algoritmo que l um valor N inteiro e positivo e que calcula e escreve o fatorial de N (N!). c e 4. A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salrio a e nmero de lhos. A prefeitura deseja saber: u a) mdia do salrio da populao; e a ca b) mdia do nmero de lhos; e u c) maior salrio; a d) percentual de pessoas com salrio at R$100,00; a e O nal da leitura de dados se dar com a entrada de um salrio negativo. a a 5. Chico tem 1,50 metro e cresce 2 cent metros por ano, enquanto Z tem 1,30 metro e cresce 3 e cent metros por ano. Construa um algoritmo que calcule e imprima quantos anos sero necessrios para a a que Z seja maior que Chico. e 6. Escrever um algoritmo que leia uma varivel n e calcule a tabuada de 1 at n. Mostre a tabuada a e na forma: 1xn=n 2 x n = 2n ... n x n = n2 7. Escrever um algoritmo que leia um nmero no determinado de valores e calcule a mdia aritmtica u a e e dos valores lidos, a quantidade de valores positivos, a quantidade de valores negativos e o percentual de valores negativos e positivos. Mostre os resultados. O nmero que encerrar a leitura ser zero. u a a 8. Faa um algoritmo que leia uma quantidade no determinada de nmeros positivos. Calcule a c a u quantidade de nmeros pares e u mpares, a mdia de valores pares e a mdia geral dos nmeros lidos. O e e u nmero que encerrar a leitura ser zero. u a a 9. Uma empresa deseja aumentar seus preos em 20%. Faa um algoritmo que leia o cdigo e o c c o preo de custo de cada produto e calcule o preo novo. Calcule tambm, a mdia dos preos com e sem c c e e c aumento. Mostre o cdigo e o preo novo de cada produto e, no nal, as mdias. A entrada de dados o c e deve terminar quando for lido um cdigo de produto negativo. o 10. Escrever um algoritmo que l 10 valores, um de cada vez, e conte quantos deles esto no intervalo e a [10,20] e quantos deles esto fora do intervalo, escrevendo estas informaes. a co 11. Escrever um algoritmo que gere e escreva os 5 primeiros nmeros perfeitos. Um nmero perfeito u u aquele que igual a soma dos seus divisores exceto o prprio nmero. (Ex.: 6 = 1 + 2 + 3; 28 = e e o u 1+2+4+7+14 etc). 12. Escrever um algoritmo que leia um valor N inteiro e positivo e que calcula o valor de E. Imprime o resultado de E ao nal. E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + 1 / N! Parte II - Funes co Desenvolver os respectivos programas em C para resolver os problemas abaixo: 13. Faa uma funo que recebe a idade de uma pessoa em anos, meses e dias e retorna essa idade c ca expressa em dias.

14. Faa uma funo que recebe a mdia nal de um aluno por parmetro e retorna o seu conceito, c ca e a conforme a tabela abaixo: Nota De 0 a 49 De 50 a 69 De 70 a 89 De 90 a 100 Conceito D C B A

15. Faca uma funo que recebe por parmetro o raio de uma esfera e calcula o seu volume (v = ca a 4/3..R3 ). 16. Escrever uma funo int contaimpar(int n1, int n2) que retorna o nmero de inteiros impares que ca u existem entre n1 e n2 (inclusive ambos, se for o caso). A funo deve funcionar inclusive se o valor de n2 ca for menor que n1. Ex: n = contaimpar(10,19); /* n recebe 5 (11,13,15,17,19) */ n = contaimpar(5,1); /* n recebe 3 (1,3,5) */ 17. Escrever um procedimento void estacao(int dia, int mes), que exibe no v deo qual a estao do ca ano da data passada por parmetro. Lembrando que a primavera comea no dia 23 de setembro, o vero a c a em 21 de dezembro, o outono em 21 de maro e o inverno em 21 de junho. c Ex: estacao(25,10); /* 25/10 primavera. */ e estacao(29,12); /* 29/12 vero. */ e a 18. Escrever uma funo int divisao(int dividendo, int divisor, int *resto), que retorna a diviso inteira ca a (sem casas decimais) de dividendo por divisor e armazena no parmetro resto, passado por referncia, o e resto da diviso. a Ex: int r, d; d = divisao(5, 2, &r); printf(Resultado:%d Resto:%d, d, r); /* Resultado:2 Resto:1 */ 19. Escrever uma funo int somaintervalo(int n1, int n2) que retorna a soma dos nmeros inteiros ca u que existem no intervalo fechado entre n1 e n2. A funo deve funcionar inclusive se o valor de n2 for ca menor que n1. Ex: n=somaintervalo(3, 6); /* n recebe 18 (3 + 4 + 5 + 6) */ n=somaintervalo(5,5); /* n recebe 5 (5) */ n=somaintervalo(-2,3); /* n recebe 3 (-2 + -1 + 0 + 1 + 2 + 3) */ n=somaintervalo(4, 0); /* n recebe 10 (4 + 3 + 2 + 1 + 0) */ 20. Escreva uma funo que receba como parmetro um valor n inteiro e positivo e que calcule a ca a seguinte soma: S = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n. A funo dever retornar o valor de S. ca a Parte III - Vetores Desenvolver os respectivos programas em C para resolver os problemas abaixo: 21. Escrever uma funo que receba um vetor com 10 valores e retorne quantos destes valores so ca a negativos. 22. Implemente uma funo que retorne o maior elemento de um vetor de inteiros de tamanho 10. ca 23. Implemente uma funo que retorne o menor elemento de um vetor de inteiros de tamanho 10. ca 24. Implemente um procedimento que ordene um vetor de inteiros de tamanho 10. 25. Escrever uma funo int somavet(int vetor[], int tamanho), que recebe por parmetro um vetor ca a de inteiros e o seu tamanho e retorna a soma de seus elementos. Ex: int lista[4]={100, 20, 10, 5}; int total; total = somavet(lista, 4); /* total recebe 135 */ 26. Implemente uma fun ao que, dado um valor, retorne se esse valor pertence ou no a um vetor de c a inteiros de tamanho 10. 27. Implemente uma funo que retorne a mdia dos valores armazenados em um vetor de inteiros de ca e tamanho 10.

28. Escrever uma funo int so positivo(int vetor[], int tamanho), que substitui por zero todos os ca nmeros negativos do vetor passado por parmetro, sendo que o nmero de elementos do vetor passado u a u e para a funo no parmetro tamanho. A funo deve retornar o nmero de valores que foram substitu ca a ca u dos. Ex: int v[5] = {3, -5, 2, -1, 4}; tr = so positivo(v,5); printf(%d, tr); /* 2 */ Parte IV - Vetores de caracteres Desenvolver os respectivos programas em C para resolver os problemas abaixo: 29. Escreva uma funo int contc(char str[], char c) que retorna o nmero de vezes que o caracter c ca u aparece na string str, ambos passados como parmetros. a Ex: char texto[]=EXEMPLO; x=contc(texto,E); /* x recebe 2 */ x=contc(texto,L); /* x recebe 1 */ x=contc(texto,W); /* x recebe 0 */ 30. Escrever um procedimento void stringup(char destino[], char origem[]), que copia todos os caracteres da string origem para destino, convertendo-os para maiscula. u Ex: char s1[20], s2[20]=aula de c; stringup(s1, s2); printf(%s, s1); /* AULA DE C */ 31. Escrever uma funo int ultima(char string[], char c) que retorna qual a ultima posio na string ca ca em que aparece o caracter c. Se o caracter no estiver na string, retornar -1. a Ex: char str[]=teste; int q; q=ultima(str, t); /* q recebe 3 */ q=ultima(str, x); /* q recebe -1 */ 32. Escrever uma funo int contabranco(char string[]), que retorna o nmero de espaos em branco ca u c contidos na string passada como parmetro. a Ex: n = contabrancos(a b c); /* n recebe 3 */ n = contabrancos(abc ); /* n recebe 2 */ n = contabrancos(abc); /* n recebe 0 */ 33. Escrever um procedimento void ninvert(char destino[], char origem[], int num), que copia invertido para a string destino, os num primeiros caracteres da string origem. Se num for maior que o tamanho da string, copiar todos os caracteres. EX: char s1[80] = ABCDE; char s2[80]; ninvert(s2, s1, 3); /* s2 = CBA*/ ninvert(s2, s1, 10); /* s2 = EDCBA*/ 34. Escrever um procedimento void copiaate(char destino[], char origem[], char parar) que copia para a string destino os caracteres da string origem que esto antes da primeira ocorrncia do caracter parar a e ou at o nal de origem, se parar no for encontrado. e a Ex: char str[80]; copiaate(str, testando a funcao, a); /* str recebe test*/ copiaate(str, testando a funcao, n); /* str recebe testa*/ copiaate(str, testando a funcao, o); /* str recebe testand*/

Você também pode gostar