Escolar Documentos
Profissional Documentos
Cultura Documentos
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 DevC++.
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.
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 ordeneo 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:
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 PCI, 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.
• 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
a. “AUTHOR.txt”: arquivo que contém o nome do autor das questões, e o respectivo
email 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 “[AEDII] Lista de Exercícios de Revisão” e no corpo do email escrever o
nome do autor.