list as

5
 1. Faça um algoritmo recursivo para mostrar na tela números de n a 1, sendo n um número inteiro maior que 1. 2. Faça o algoritmo e implemente em linguagem C a Sequencia de Fibonacci de forma recursiva e outro não recursivo. Posteriormente, compare os tempos de execução para séries grandes. 3. Implemente uma função recursiva soma(n) que calcula o somatório dos n primeiros números inteiros. 4. Faça o algoritmo e implemente uma função recursiva que recebe como parâmetros um número real X e um inteiro N e retorna o valor de X  N . 5.  No exercício anterior, acrescente para N podendo ser neg ativo. 6. Dada a função X: function X(n,m: integer): integer;  begin if (n=m) or (m=0) then x:=1; else x:= x(n-1,m)+x(n-1,m +1) end; a) qual o v alor de x( 5,3) ?  b) quantas chamadas serão feitas na avaliação acima ? 7. Faça um algoritmo e implemente a Somar os elementos de um vetor. 8. Implementar em C um algoritmo para preencher recursivamente um vetor de inteiros de n posições com o valor 1. 9. Implementar em C um algoritmo para imprimir recursivamente o vetor de inteiros de n  posições. 10. Considere a função abaixo: int X(int a) { if ( a <= 0 ) return 0; else return a + X(a-1); } a. O que essa função faz?  b. Escreva uma função não-recurs iva que resolve o mesm o problema. 11. Verique o que as funções dos algoritmos abaixo imprimem e r etornam:  (i) func (int n) { if (n == 0)  printf(“fim”);  else {  printf(n); func(n-1); } }

Upload: jose-carlos-campos

Post on 21-Jul-2015

156 views

Category:

Documents


0 download

TRANSCRIPT

1. Faa um algoritmo recursivo para mostrar na tela nmeros de n a 1, sendo n um nmero inteiro maior que 1. 2. Faa o algoritmo e implemente em linguagem C a Sequencia de Fibonacci de forma recursiva e outro no recursivo. Posteriormente, compare os tempos de execuo para sries grandes. 3. Implemente uma funo recursiva soma(n) que calcula o somatrio dos n primeiros nmeros inteiros. 4. Faa o algoritmo e implemente uma funo recursiva que recebe como parmetros um nmero real X e um inteiro N e retorna o valor de XN. 5. No exerccio anterior, acrescente para N podendo ser negativo. 6. Dada a funo X: function X(n,m: integer): integer; begin if (n=m) or (m=0) then x:=1; else x:= x(n-1,m)+x(n-1,m+1) end; a) qual o valor de x(5,3) ? b) quantas chamadas sero feitas na avaliao acima ? 7. Faa um algoritmo e implemente a Somar os elementos de um vetor. 8. Implementar em C um algoritmo para preencher recursivamente um vetor de inteiros de n posies com o valor 1. 9. Implementar em C um algoritmo para imprimir recursivamente o vetor de inteiros de n posies. 10. Considere a funo abaixo: int X(int a) { if ( a 1 then f := i + f(i-1) else f := 1 end; b) Function f ( i: integer) : integer; begin if i=0 then f := 0 else if i=1 then i:=1 else f := f(i-1)+f(i-2) end;

15. Implemente o mtodo de ordenao de insero, seleo e bubblesort. 16. Faa um programa em C que ordene um vetor do tipo Reg (sendo Reg a estrutura definida abaixo) utilizando o mtodo de troca (Insero), adotar como campo chave o NOME ou CPF. O usurio ir informar qual campo deve ser escolhido para ser ordenado. typedef struct Reg{ int CPF; char nome[25]; int idade; char sexo; }Reg; 17. Faa um programa em C que ordene uma Lista Dinmica Duplamente Encadeada definida pela estrutura abaixo, utilizando-se do mtodo de BUBBLE SORT. O campo chave CPF. typedef struct Lista { int dados; Lista *anterior; Lista *proximo; }Tipo_Lista; typedef struct Reg{ int CPF; char nome[25]; int idade; char sexo; }Reg; 18. Faa um programa em C que ordene uma Lista Dinmica Duplamente Encadeada definida pela estrutura abaixo, utilizando-se do mtodo de SELEO. O campo chave nome. typedef struct Lista { int dados; Lista *anterior; Lista *proximo; }Tipo_Lista; typedef struct Reg{ int CPF; char nome[25]; int idade; char sexo; }Reg; 19. Modifique os mtodos de ordenao do exerccio anterior de forma que eles realizem a ordenao de forma decrescente. 20. Modifique o cdigo do mtodo de ordenao por bolha para que ele transforme-se no mtodo de ordenao por pedra, ou seja, o elemento desce ao invs de subir no vetor ordenado. Ordem Crescente. 21. A funo em C implementa o algoritmo de ordenao por insero:

void ordena_insercao(int v[], int tam) { int j, k, aux; for(k=1; k=0 && v[j]>aux; j--) v[j+1] = v[j]; v[j+1] = aux ; } } Modifique o cdigo de forma a que a ordenao seja realizada por ordem decrescente. 22. Escreva uma verso recursiva do algoritmo de ordenao por seleo. 23. Escreva um algoritmo que l dois conjuntos de valores, com n e m elementos, respectivamente, e armazena cada conjunto em um vetor (vetores A e B). Aps, o algoritmo deve ordenar cada um dos vetores (em ordem crescente). Finalmente, o algoritmo deve construir um terceiro vetor R, formado pela unio dos dois vetores. Este vetor resultante tambm deve ser ordenado e no deve conter valores duplicados. Use subalgoritmos onde for conveniente. Para ordenao de vetores, use um dos mtodos vistos em aula. Identifique o mtodo usado!

24. Crie uma lista de contactos que dever conter um ndice de registro, o nome da pessoa, o nmero de telefone e o e-mail. Para tal, utilize a seguinte definio de estrutura: typedef struct { unsigned int id_registo; char nome[255]; unsigned long telefone; char email[255]; } TCONTACTO; Poder utilizar a seguinte inicializao, ou outra que entenda: TCONTACTO ListaContactos[] = { {9, "Murilo Santana", 912661234, "[email protected]"}, {6, "Eudes Silva", 919871234, "[email protected] "}, {5, "Alex Ferreira", 919726409, "[email protected] "}, {7, "Claudia Ribeiro", 918741854, "[email protected] "}, {1, "Valeria Rosa", 914289844, " [email protected] "}, {6, "Agnaldo Lovato", 916429646, "[email protected] "} {3, "Thales DQE", 88775594, "[email protected] "} {8, "Marcelo Ea", 87563781, "[email protected] "} {4, "Antonio Vega", 88567893, "[email protected] "} {2, "Carlos Assis", 92739182, "[email protected] "} }; Crie subprogramas que sejam capazes de ordenar a lista, utilizando os algoritmos de Insero, seleo, bubblesort. O usurio ir definir se a ordenao por cdigo, nome, telefone ou e-mail. Imprima a ordenao definida pelo usurio.

25. Faa um teste de mesa com cada mtodo de ordenao (seleo, insero, booble), utilizando as seguintes sequncia de dados de entrada: (i) S1 = {5; 4; 6; 8; 3; 1} (ii) S2 = {11; 9; 7; 5; 3; 1} (iii) S2 = {43;12;8;0;44;7;3} 26. Crie e implemente em linguagem de programao C um algoritmo chamado find, este retorna o k-simo menor elemento dessa seqncia. Por exemplo: Suponha que os elementos S = {7; 1; 3; 10; 17; 2; 21; 9} estejam armazenados nessa ordem em um vetor e que desejamos obter o quinto maior elemento dessa seqncia. Ento, uma chamada como find(S,0,7,5), dever retornar o nmero 9, onde S o nome do vetor, 0 e 7 so, respectivamente, a menor e a maior posio do vetor e 5 indica que desejamos o quinto menor elemento. Obs.: Voc no deve ordenar a seqncia e depois tomar o k-simo elemento. 27. A mediana de um conjunto com um nmero mpar de elementos o valor central que se obtm aps ordenar o conjunto. A mediana de um conjunto com um nmero par de elementos a mdia aritmtica dos dois valores centrais que se obtm aps ordenar o conjunto. Por exemplo, para obter a mediana do conjunto de valores {1, 3, 4, 5, 4, 2}, considera-se o conjunto ordenado {1, 2, 3, 4, 4, 5}; os dois valores centrais so 3 e 4, pelo que a mediana 3.5. Escreva um programa para achar e imprimir a mediana de um conjunto de valores inteiros introduzidos pelo utilizador, at um mximo de 100 valores, possivelmente com valores repetidos, a. usando o mtodo de ordenao seleo; b. usando o mtodo de ordenao por insero; c. usando o mtodo de ordenao bubblesort; 28. Faa um programa que implemente o algoritmo de SELEO decrescente para o vetor = {4,8,2,3,7};