You are on page 1of 2

MINISTÉRIO DA EDUCAÇÃO

Universidade Federal de Ouro Preto


Departamento de Computação e Sistemas
Campus João Monlevade

Disciplina: Algoritmos e Estruturas de Dados I


Professor: Erik de Britto e Silva
Exercícios para NIVELAMENTO - Devem ser feitos e executados no Codeblocks
PARTE I
1. Faça um programa em C que declare uma variável do tipo apontador para inteiro, de nome VET-
INTS, que durante a sua execução aponte para uma área de memória de um vetor de dez números
inteiros (alocação dinâmica). Insira os inteiros de 1 a 10 nestas posições e depois exiba todo o
conteúdo do vetor na tela. Exiba os números inteiros no formato 001, 002, 003 ... 009 e 010. Não
esquecer de liberar a memória ao fim do programa! Use um comando for para exibir as dez posições
e depois altere para o comando while fazer a mesma operação.
PARTE II
1. Faça um programa em C que leia quatro valores digitados no PC com <ENTER> após cada um.
Os valores serão atribuídos para quatro variáveis, sendo duas inteiras de nomes NUM1 e NUM2 e
duas variáveis do tipo string de nomes PALAVRA1 e PALAVRA2, estas podem receber cada uma
no máximo 8 caracteres. Após a leitura exibir os nomes das variáveis uma por linha, seguidos do
sinal de igual e do valor que foi digitado para cada uma. A seguir comparar o valor de NUM1 com
o de NUM2 e exibir se NUM1 é igual, menor ou maior que NUM2. Comparar a PALAVRA1 com a
PALAVRA2 e exibir se elas são iguais ou se a PALAVRA1 vem antes ou depois da PALAVRA2 no
dicionário.
2. Altere o programa anterior incluindo duas funções: uma de nome “trocanums” que troca o conteúdo
de duas variáveis inteiras entre si e outra denominada “trocapalavras” que troca o conteúdo de duas
variáveis do tipo string entre si. Neste programa adicione em sua parte final a troca dos conteúdos de
NUM1 com NUM2 via função “trocanums” e a troca dos conteúdos de PALAVRA1 com PALAVRA2
via função “trocapalavras”. A seguir, exibir as quatro variáveis, agora com os conteúdos trocados
entre si.
PARTE III
1. Um exemplo de struct pode ser uma ficha de aluno na UFOP onde podemos ter o nome, a matrí-
cula, o ano de entrada e o semestre (1 ou 2). Crie um struct de nome “FICHA-ALUNO” com as
informações acima e obedecendo às condições:
1. nome de até 40 caracteres
2. matrícula de até 9 caracteres
3. ano é um número inteiro
4. número do semestre é apenas um caractere
2. Crie um struct que seja o elemento básico de uma lista encadeada. Este será o mesmo elemento da
questão anterior, porém, com um campo adicional denominado “Prox” que é um apontador para o
mesmo tipo de struct e que aponta para o próximo elemento da lista. Finalmente, faça um programa
em C que adicione a entrada de dados para uma variável do tipo deste struct “FICHA-ALUNO” e
a seguir exiba os campos na tela, exceto o campo “Prox”.
PARTE IV
1. Faça um programa em C que defina um tipo struct de nome BOLA (typedef ), contendo uma “Cor”
(que pode ser preta ou branca) e um campo apontador para o tipo BOLA de nome “AP-prox”. Crie
também um apontador de nome “PRIMEIRA” para o tipo BOLA. A seguir reserve uma área de
memória para o apontador “PRIMEIRA” e a inicialize com a “Cor” preta e o AP-prox apontando
para NULL. A seguir reserve uma área de memória do tipo BOLA, com um novo apontador de nome
“SEGUNDA” que irá apontar para esta área, inicialize-o com a cor branca e AP-prox apontando
para NULL. Faça com que o campo apontador AP-prox do apontador “PRIMEIRA” aponte para
o apontador “SEGUNDA”. Crie mais um apontador para o tipo BOLA, denominado “TERCEIRA”
e reserve uma área de memória para o mesmo, inicializando o campo “Cor” com o valor preta e o
campo “AP-prox” apontando para NULL. Faça com que o valor do campo “AP-prox” do apontador
“SEGUNDA” aponte para o apontador “TERCEIRA”.
MINISTÉRIO DA EDUCAÇÃO
Universidade Federal de Ouro Preto
Departamento de Computação e Sistemas
Campus João Monlevade

2. Adicione ao programa acima a função recursiva de nome exibe_bolas. Ela recebe um apontador do
tipo apontador para o struct BOLA, exibe o campo “Cor” deste apontador e passa para a próxima
área de memória apontada pelo campo “AP-prox” deste apontador e exibe o campo “Cor” desta nova
área, a seguir passa para a próxima área de memória apontada por esta área anterior e exibe o campo
“Cor”, e assim sucessivamente até que o campo “AP-prox” seja NULL. Ao encontrar o NULL a função
recursiva termina. Adicione a chamada desta função exibe_bolas ao programa principal, recebendo
o apontador “PRIMEIRA”. Esta função executa o caminhamento recursivo desde a primeira bola
até a terceira exibindo a cor de cada uma.
3. Adicione agora ao fim do programa da questão anterior comandos que removam a “SEGUNDA”
bola (liberando a área de memória da mesma) e após faça com que o campo “AP-prox” do apon-
tador “PRIMEIRA” aponte para o apontador “TERCEIRA”. Adicione outra chamada da função
exibe_bolas ao fim do programa, recebendo novamente o apontador “PRIMEIRA”.
4. Mais uma vez, adicione ao fim do programa da questão anterior comandos que criem a “NOVA-
SEGUNDA” bola, inicializando o campo “Cor” com branca e após faça com que o campo “AP-prox”
do apontador “PRIMEIRA” aponte para o apontador “NOVA-SEGUNDA”. Aponte o campo “AP-
prox” da “NOVA-SEGUNDA” para o apontador “TERCEIRA”. Adicione outra chamada da função
exibe_bolas ao fim do programa, recebendo novamente o apontador “PRIMEIRA”. Aqui termina a
lista de exercícios para nivelamento.

Page 2

You might also like