Sei sulla pagina 1di 4

Centro de Ensino Educacional Fucapi

Departamento de Ciência da Computação
Ciência da Computação

Algoritmos e Estruturas de Dados II Primeiro Semestre de 2011
Prof.: Petrina Kimura

Primeira Lista de Exercícios de Revisão (Bônus)
        Esta lista deve ser implementada na linguagem “C”, utilizando as bibliotecas padrão 
disponíveis no ambiente Dev­C++.

1. Criar   uma   função   recursiva   que   receba   por   parâmetro   dois   números   inteiros   e 
retorne  a  multiplicação destes dois números inteiros  por somas sucessivas. Por 
exemplo, 2 x 4 = 2 + 2 + 2 + 2 = 8.

2. Criar um programa que receba duas strings   str1   e   str2   e um inteiro   n   por 


parâmetro e concatena os n primeiros elementos de str2 para str1. Considere que 
str1   tem espaço suficiente para armazenar os   n   caracteres de   str2. (Obs: não 
esqueça de adicionar o caracter “\0”).

3. Suponha um vetor cujos dados são formados pelo seguinte registro:
struct pessoa {
        char *nome;
        int idade;
        char sexo; };

        Criar uma função que receba como entrada um vetor de registros e o tamanho do 
mesmo e ordene­o baseado no campo idade. Caso dois ou mais registros tenham idades 
iguais, a função deve ordená­los pelo nome (apenas os registros iguais). Exemplo:

4. Implementar   uma   função   de   Busca   Binária   recursiva   em   um   vetor   ordenado.   A 


função deve receber um vetor de inteiros, o seu tamanho e um elemento de busca 
e retornar 1 se o elemento estiver inserido no vetor e 0 em caso negativo.

5. Descobrir   qual   é   o   resultado   da   função   recursiva   abaixo,   supondo   que   um 


programa   a   chame   passando   o   valor   4   como   parâmetro.   Mostrar   como   você 
chegou a está solução.
6. Descobrir qual é o resultado da função recursiva abaixo, supondo que um programa a chame 
passando o valor 15 como parâmetro. Mostrar como você chegou a está solução.

7. Elaborar uma função recursiva para descobrir o máximo divisor comum entre dois números. 
O algoritmo abaixo mostra uma solução não recursiva para o problema.

8. Criar um tipo Aluno e um tipo Materia tal como dado abaixo:

(A) Criar uma função Aluno fillAluno(Aluno a1) que preenche os campos de uma variável a1 
do tipo Aluno e retorna essa variável preenchida.

(B) Criar uma função Materia fillMateria(Materia m1, int numAlunos) que preenche os campos 
de uma variável m1 do tipo Materia realizando chamadas a função fillAluno em um número de 
vezes igual ao número contido na variável nAlunos.

(C) Criar uma função int mediaMateria(Materia m1) que fornece a média de cada prova do ano 
para os alunos contidos na variável m1 e assim preenche o campo media de m1.

(D) Criar uma função void mostraMateria(Materia m1) que mostra as informações dos alunos 
contidas na variável m1.
(E)   Criar   um   programa   que   ilustra   o   funcionamento   das   funções   anteriores.   Para   tanto,   o 
programa deve possuir uma variável pc1 do tipo Materia com 4 alunos. Depois, serão utilizadas 
as seguintes funções: fillMateria (que emprega fillAluno), mediaMateria e mostraMateria.

9. Criar um tipo Livro e um tipo Biblioteca tal como dado abaixo:

  (A) Criar uma função Livro fillAluno(livro l1) que preenche os campos de uma variável l1 
do tipo Livro e retorna essa variável preenchida.

   (B) Criar uma função Biblioteca fillBiblioteca(Biblioteca b1, int numLivros) que preenche 
os campos de uma variável b1 do tipo Biblioteca realizando chamadas a função fillLivro 
em um número de vezes igual ao número contido na variável numLivros.

  (C) Criar uma função int valorBiblioteca(Biblioteca b1) que fornece o montante gasto para 
se comprar todos os exemplares existentes na biblioteca.

  (D) Criar uma função int maiorBiblioteca(Biblioteca b1) que fornece o livro com maior 
número de exemplares existente na variável b1.

  (E) Criar um programa que ilustra o funcionamento das funções anteriores. Para tanto, o 
programa deve possuir uma variável feg do tipo Biblioteca com 4 livros (1livro de ALCV, 1 
de PC­I, 1 de Cálculo I e 1 de Física I). Depois, serão utilizadas as seguintes funções: 
fillBiblioteca (que emprega fillLivro), valorBiblioteca e maiorBiblioteca.

10.  Escrever um programa que lê um nome completo e o escreve detrás pra frente da 
seguinte forma:

Recebe: Paulo Cesar Moreira
Devolve: Moreira Cesar Paulo

11. Escrever um programa para alocar dinamicamente um vetor de inteiros, preencher 
este vetor com valores lidos do teclado e, por último, escrever o vetor. Além disso, 
seu programa deve mostrar as seguintes informações:
• o maior valor no vetor;
• o menor valor no vetor;
• o valor médio armazenado no vetor;
• e o número de valores negativos no vetor.
12. Escreva um programa que leia o nome e a idade de n (n = 5 por exemplo) pessoas, 
aloque dinamicamente variáveis do tipo: 
typedef struct { 
       char nome[50]; 
       int idade; 
} cadastro; 

para armazenar esses dados e, imprima (na tela do computador) as informações 
das pessoas que tem o nome começando pela letra 'J' e a idade maior que 20 
anos. 

13.   Suponha   que   no   mundo   há   1   vampiro   e   2  bilhões  de   pessoas.   O  vampiro   se 


alimenta de 1 pessoa por dia que, por sua vez, se torna vampiro. Para cada dia, a 
partir do dia 1, imprima: 

• dia  n  de pessoas n  de vampiros
̊ ̊
• até que o n  de vampiros seja maior que o número de pessoas 
̊
• Quantos dias foram necessários para isto ocorrer?
• Obs.: Use “long int”para as variáveis vampiros e pessoas

1. ATENÇÃO 
As questões que NÃO estão em vermelho devem ser entregues até o dia 25/02/11.
Listas entregues fora do prazo serão desconsideradas.

2. O que entregar

1. Os  códigos fontes dos programas compactados no  formato “.tar.gz” ou  “.zip”, 


juntamente com os seguintes arquivos:

          a. “AUTHOR.txt”: arquivo que contém o nome do autor das questões, e o respectivo 
e­mail e códigos de matrícula.

              b. “README.txt”: arquivo contendo informações sobre compilação e execução da 
sua aplicação, dependências para execução do seu programa, ou seja, quais programas 
precisam estar instalados no sistema.

3. Como entregar

O trabalho deve ser entregue para o email petrina@dcc.ufam.edu.br. No título do 
email, escrever “[AED­II] Lista de Exercícios de Revisão” e no corpo do e­mail escrever o 
nome do autor.

Potrebbero piacerti anche