Baixe o app para aproveitar ainda mais
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
Compartilhar