Buscar

Lista de Exercícios

Prévia do material em texto

UNIVERSIDADE FEDERAL DO TOCANTINS
CAMPUS UNIVERSITÁRIO DE PALMAS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
ALGORITMOS E ESTRUTURA DE DADOS I
Lista de Revisão
1. Havendo um vetor v, qual a diferença entre v[3] e v+3?
2. Explique a diferença entre as expressões:
p++ (*p)++ *(p++)
3. Considerando a estrutura:
typedef struct{
f loat x , y , z ;
} vetor ;
Levando em conta que x, y e z são as coordenadas de um vetor no R3, implemente uma função
que faça a soma vetorial de dois destes vetores e outra que dê o produto escalar desconsiderando os
ângulos entre os vetores.
4. Faça uma função para cada caso a seguir (DICA: utilize uma TAD para representar um número
complexo):
(a) Inicialize os valores de um número complexo (parte real e parte imaginária);
(b) Retorne ao usuário o número complexo;
(c) Retorne somente a parte imaginária;
(d) Retorne somente a parte real;
(e) Faça multiplicação de números complexos
5. Implemente no computador um algoritmo em que dado um valor N inteiro que representa a quanti-
dade de termos de uma tabela verdade, gere uma lista com todas os possíveis valores de uma soma
requerida pelo usuário.
Exemplo de entrada Exemplo de Saida
3
1+2
0 0 1 1 1 1 1 1
Onde, 3 indica que são três termos na tabela verdade e 1+2 significa que na lista de retorno é para
retornar somente a soma do primeiro e segundo termo.
6. Considere a TAD a seguir:
#de f i n e SIZE 10
typedef struct l i s t a {
int type [ SIZE ] ;
}L ;
1
Pede-se funções genéricas, para qualquer lista que seja do tipo L:
(a) Inserir no final
(b) Pesquisar
(c) Imprimir
(d) Retornar o número de elementos
(e) Ordenar de forma crescente
(f) Inserir em uma posição de ordem (ou seja, que o valor a ser inserido seja menor que o anterior
e maior que o posterior)
(g) Remover em qualquer posição
7. Considerando a estrutura e as funções do exercício anterior, faça o que se pede:
(a) Em uma lista L1 já preenchida, faça uma segunda lista L2 derivada de L1 que seja organizada
em ordem crescente e uma L3 organizada em ordem decrescente.
(b) Uma função que receba três listas desordenadas e faça a operação de união entre as listas e
armazene os valores na primeira e apague as demais.
(c) Uma função que receba três listas desordenadas e faça a operação de intersecção entre elas
armazenando o valor na primeira e destrua as demais.
8. Idem o exercício de numero 6 porém para uma lista encadeada.
9. Sabendo que uma lista pode ser representada como um vetor, e que uma matriz também é um vetor
o que muda é somente a forma do usuário enxergar o endereço da mesma. Sua missão é apenas
criar uma lista encadeada que armazene mais listas encadeadas.
10. Implemente as funções básicas de uma pilha:
(a) Empilha
(b) Desempilha
(c) Imprimir
11. Uma função que receba uma string e exiba todas as consoantes em ordem inversa.
12. Escreva um programa que o usuário entre com uma cadeia de caracteres que represente uma regra
para escrita de palavras, onde letras maiúsculas deverão ser tidas como consoantes e letras minús-
culas como vogais, a partir deste padrão reconheça se em seguida uma cadeia de caracteres digitada
pelo usuário pertence ao padrão estabelecido.
EXEMPLO ENTRADA: EXEMPLO SAÍDA:
Padrão: BawT
Palavra de teste: boeR Pertence ao padrão
Palavra teste: bter (OBS: Segunda iteração de um laço e repetição) Não pertence ao padrão
13. A maioria das pessoas que tiveram infância já jogaram pedra, papel e tesoura, considerando que
todos já conhecem o jogo e suas regras. Uma estratégia usada por jogadores é começar sempre
jogando o símbolo pedra até que este cause empate entre a maioria dos competidores, assim o
próximo passo é jogar papel, e quando começar a gerar muitos empates novamente jogar tesoura e
depois para pedra, gerando um ciclo, esta é a estratégia mais comum utilizada por competidores.
Seu objetivo é desenvolver um programa para auxiliar um jogador de um campeonato contabilizando
quantos jogadores irão utilizar cada símbolo.
Suponha que N jogadores são dispostos em uma lista e identificados pela sua posição, de 1 a N. Seu
programa deverá processar M comandos, de dois tipos: mudança de símbolo e contar a frequência
dos símbolos. Ambos os comandos recebem um intervalo contíguo de jogadores na fila a serem
considerados.
A entrada do seu programa deverá conter uma linha com dois parâmetros inteiros, N e M, repre-
sentam respectivamente o número de jogadores e o número de operações. As próximas M linhas
contém, cada uma, a descrição de uma operação. As operações para mudança de estratégia serão
2
representadas por uma linha na forma M A B com A ≥ 1 e A ≤ B ≤ N . Os jogadores cuja
estratégias serão alteradas são aqueles cuja posição na fila está entre A e B, inclusive.
As operações de contagem serão apresentadas em uma linha do tipo C A B onde A e B é o intervalo
dos jogadores que serão contados, incluindo A e B.
A saída consiste em cada linha de contagem apresentada imprima uma linha com três números
inteiros representando respectivamente a quantidade de pedras, papel e tesoura.
EXEMPLO ENTRADA: EXEMPLO SAÍDA:
10 7 10 0 0
C 1 10 0 2 0
M 5 6 2 2 1
C 5 6 1 7 2
M 6 7
C 4 8 2 0 3
M 1 10 1 0 1
C 1 10
5 6
M 1 5
M 2 4
M 1 2
M 4 5
C 1 5
C 3 4
14. Suponha que você tem um teclado com defeito, que internamente aperta a tecla home (representada
por "[") e a tecla end (representada por "]") também apertada internamente, e que você está
digitando porém não está atento para este problema, quando termina seu texto está todo bagunçado,
sua missão é fazer um programa que resolva este problema.
EXEMPLO ENTRADA: EXEMPLO SAÍDA:
This_is_a_[Beiju]_text BeijuThis_is_a_text
is[that_]_good that_is_good
i_love_[]][data_struct data_structi_love_
3

Outros materiais