Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Departamento de Estatística e Informática (DEINFO) Disciplina: Introdução à Programação I Prof: Lucas Albertins Lista de Exercícios 3 Recursividade, Ponteiros e Vetores 1 – Implemente uma função recursiva soma(n) que calcula o somatório dos n primeiros números inteiros. 2 -‐ O Máximo Divisor Comum (MDC) de um número pode ser definido da seguinte forma: MDC(x, y) = MDC(x − y, y se ), x > y MDC(x, y) = MDC(y, x), x <=y MDC(x, x) = x Exemplo: MDC(9, 6) = MDC (3, 6) = MDC (6, 3) = MDC (3, 3) = 3 Dado isto, escreva uma função recursiva para o cálculo do MDC de dois números inteiros. 3 -‐ Escreva uma função recursiva que retorna o maior elemento de um vetor entre duas posições passadas como parâmetro. Exemplo de assinatura da função: int max(int vet[], int inicio, int fim) 4 – Escreva uma função recursiva que deve buscar se um número inteiro n existe dentro de um vetor de inteiros vet. Utilize mais dois parâmetros na sua função um de início e outro de fim dos índices do vetor. A função deve retornar 1 caso o número exista e 0 caso contrário. 5 – Escreva uma função recursiva que dado um vetor de números reais e a quantidade de seus elementos retorna o maior elemento do vetor. 6 – O problema da torre de Hanói tem uma solução recursiva. Dado um procedimento void torreHanoi(int nDiscos, char origem, char auxiliar, char destino), onde nDiscos é a quantidade de discos, origem, auxiliar e destino são as três torres, podemos ter uma solução da seguinte forma: IF nDiscos > 0 torreHanoi(nDiscos-‐1, origem, destino, auxiliar) moveDisco(origem,destino) torreHanoi(nDiscos-‐1, auxiliar, origem, destino) Implemente a função recursiva para o jogo de Hanói. 7 -‐ Escreva um subprograma em C que recebe um vetor de 40 valores reais, imprimi os valores lidos e devolve o menor valor existente entre os 20 primeiros e o maior valor existente entre os 20 últimos. Observe que o método deve retornar ao local da chamada os dois valores (não imprimir ao usuário). Portanto, você precisará usar passagem de parâmetro por referência, já que os métodos só podem retornar um único valor. 8 -‐ Escreva um programa em C que leia dois vetores A e B de 10 componentes inteiros cada um, escreva os vetores lidos e substitua A e B pelos vetores A + B e A -‐ B, respectivamente. O programa deve utilizar apenas dois vetores e imprimir os valores calculados para A e B. UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Departamento de Estatística e Informática (DEINFO) Disciplina: Introdução à Programação I Prof: Lucas Albertins 9 -‐ Escreva um programa em C para ler dois vetores de 15 componentes inteiros cada e determinar o conjunto união, o conjunto interseção e o conjunto diferença para os vetores lidos. 10 – Escreva um subprograma que recebe um ponteiro para um vetor de inteiros e a quantidade de elementos do vetor, e retorna o vetor de forma que o mesmo fique com os valores ordenados na ordem crescente. 11 -‐ Escreva um programa em C para ler uma matriz 3 x 3 de números reais, imprimir a matriz lida e determinar a soma e a média aritmética dos componentes da matriz. 12 -‐ Escreva um programa em C para ler um vetor com 16 componentes reais e transferir estes componentes para uma matriz 4 x 4 onde a i-‐ésima linha é formada pelos elementos cujas posições no conjunto terminam por i. Imprimir o vetor e a matriz. 13 -‐ Escreva um programa em C para ler uma matriz 4 x 4 de números reais, imprimir a matriz lida e imprimir a matriz com todos os componentes classificados, na seqüência das linhas, em ordem crescente. 14 -‐ Escreva um programa em C para ler uma matriz 4 x 4 de números inteiros e determinar o maior componente em cada linha e coluna da matriz. 15 -‐ Escreva um subprograma em C que recebe duas matrizes de números inteiros, imprimi as matrizes lidas e retorna a matriz produto da primeira pela segunda. 16 -‐ Escreva um programa em C para ler uma matriz de ordem 6 de números inteiros, imprimir a matriz lida e determinar a matriz transposta correspondente. Restrição: o programa deve utilizar uma única área para armazenar a matriz lida e sua transposta. 17 -‐ Escreva um programa em C para ler uma matriz de ordem 3, de números reais, imprimir a matriz lida e calcular e imprimir seu determinante. 18 – Escreva um subprograma que recebe como entrada uma matriz A de ordem 3 e devolve três inteiros: k, Lin e Col. O inteiro k é um maior elemento de A e é igual a A[Lin][Col]. 19– Escreva um programa que lê uma string e determina se ela é um palíndromo. Um palíndromo corresponde a uma palavra que tem a mesma escrita quando invertida. Ex: ANA, ARARA, SOCOS, SAIAS, OSSO, ASA, MUSSUM, SERES, SALAS. 20 -‐ Escrever um subprograma que recebe duas strings s1 e s2 (sem especificar o tamanho das cadeias, ou seja, utilizar ponteiros), e devolve uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2. 21 – Explique a diferença entre: p++, (*p)++, *(p++), *(p+10).
Compartilhar