Lista de Exercícios sobre Tipos Abstratos de Dados (TAD) e Estruturas de Dados em C

Documentos relacionados
Lista de Exercícios sobre Tipos Abstratos de Dados (TAD) e Estruturas de Dados em C. GABARITO Contribuição: Antonio Carlos Nazaré Júnior

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Lista de Exercícios 04

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Programação Aplicada à Engenharia

tipo e tamanho e com os "mesmos" elementos do vetor A, ou seja, B[i] = A[i].

4. Números Racionais (continuação)

Pesquisa Linear. Adriano J. Holanda 15/3/2016

GEQ Prof. Paulo R. Coelho. Lista para prova

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Departamento de Informática PUC-Rio INF Estruturas de Dados Lista 2 Completa (Gerada em 8 de maio de 2006)

Aula 1 Conceitos Básicos

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 2

EXERCÍCIOS DE ESTRUTURA DE REPETIÇÃO - LABORATÓRIO

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Aplicações de listas e outras estruturas

Aplicações de listas Outras estruturas

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

char* prefixo (char* str, int n);

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

+ + 3) Fazer um programa, em C++, que calcule e escreva a soma dos 50 primeiros termos da seguinte série:

LISTA DE EXERCÍCIOS Fazer um algoritmo para leia três valores inteiros, determine e imprima o menor deles.

Alocação dinâmica. PUC-Rio, , INF H: Programação 2 Lista 1: Alocação dinâmica, recursão e estruturas

Algoritmos. Conceitos e Comandos

Questão 1: Questão 2:

Introdução à Programação

Tipos Abstratos de Dados

Algoritmos e Programação

Lista de Exercícios 5

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas.

ADIÇÃO E SUBTRAÇÃO DE FRAÇÕES 1A

Tipos Abstratos de Dados - Exercício

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Computação Básica. Prof. Tiago Alves. Universidade de Brasília Campus Gama

Tipos Abstratos de Dados

Exercícios: Vetores e Matrizes

Lista de Exercícios Complementares 1 - Prof. Red. Entrada e Saída de Dados

TAD: Tipo Abstrato de Dados (parte 1)

INF 1620 P4-13/12/01 Questão 1 Nome:

LISTA DE EXERCÍCIOS 5 Algoritmos Estruturas de Controle - Seleção

Algoritmos e Programação I

Programação Aplicada à Engenharia

Aplicações de listas e outras estruturas

MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO MÉDIA E TECNOLÓGICA ESCOLA TÉCNICA FEDERAL DE PALMAS SUPERVISÃO EDUCACIONAL

ESTRUTURAS COMPOSTAS. REGISTROS (Struct) Introdução à Ciência da Computação I Simone Senger Souza

S is temas numéricos e a Repres entação Interna dos Dados no Computador

3) Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a área do mesmo. Obs.: Área = ( Base * Altura ) / 2

LISTA DE EXERCÍCIO. 2) Fazer um algoritmo para calcular a soma entre dois números e multiplicar o resultado pelo primeiro.

3ra. Avaliação - Grupo A

4ª Série de Exercícios Variáveis Compostas Homogêneas 1. Faça um algoritmo que leia, via teclado, 10 valores do tipo inteiro e os guarde na memória.

Aula 12 Tipo Abstrato de Dados. Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

DCC001 - Programação de Computadores. Lista de Exercícios 02 - Estruturas de Dados Homogêneas (Vetores).

Computação Eletrônica. Aula 08 Estruturas de Dados. Prof: Luciano Barbosa. CIn.ufpe.br

Aula 11 Oficina de Programação Estruturas. Profa. Elaine Faria UFU

Tipos Abstratos de Dados

AULA 02 DADOS PRIMITIVOS E EXERCÍCIOS

MATEMÁTICA PROF. JOSÉ LUÍS NÚMEROS DECIMAIS

Estruturas (registros)

Aula 3: Tipos e variáveis

Algoritmos, Estruturas de Dados e Tipos Abstratos de Dados (TADs)

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

PROGRAMAÇÃO em C. Vitor Valerio de Souza Campos

PROGRAMAÇÃO A. Vetores

ESTRUTURAS COMPOSTAS. REGISTROS (Struct) Introdução à Ciência da Computação I Simone Senger Souza

Lógica de Programação e Algoritmos

BCC202 - Estrutura de Dados I

Lista de Exercícios - Listas Aula de Laboratório. 1. Considerando as seguintes declarações de uma lista encadeada:

Ficha 1 Noções de sequência e decisão em algoritmia

PROGRAMAÇÃO A. Matrizes

Conceitos Básicos. Professor: Juliano Lucas Gonçalves.

ANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa

Variáveis Compostas Homogêneas Vetores

Aula 06 Introdução à Programação Matrizes

Lista de Exercícios 3

Linguagem C: Introdução

3. Linguagem de Programação C

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

CCO 016 / COM 110 Fundamentos de Programação

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Linguagem C: Ponteiros. Prof. Tiago Alves de Oliveira

Regras de Validação de dígito verificador de agência e conta corrente - Icatu Seguros

D 7 C 4 U 5. MATEMÁTICA Revisão Geral Aula 1 - Parte 1. Professor Me. Álvaro Emílio Leite. Valor posicional dos números. milésimos décimos.

Expressões lógicas, expressões condicionais, prioridades e operadores, base binária, operadores de bits

FAETERJ Faculdade de Educação Tecnológica do Estado do Rio de Janeiro Programação e Estruturas de Dados em C Prof. Gilberto Quirgo de Souza

Computação 2. Aula 1. Profª. Fabiany Estruturas básicas de programação.

Linguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1

Disciplina: Introdução à Engenharia da Computação

Variável. Expressões. Atribuição. Tipos básicos Declaração. Aritméticas Lógicas. Professor Leandro Augusto Frata Fernandes

Transcrição:

Lista de Exercícios sobre Tipos Abstratos de Dados (TAD) e Estruturas de Dados em C 1) Escreva uma especificação de tipos abstratos de dados (TAD) para os números complexos, a + bi, onde abs(a + bi) é sqrt(a 2 + b 2 ), (a + bi) + (c + di) é (a + c) + (b + d)i, (a + b) * (c + di) é (a * c b * d) + (a * d + b * c)i e (a + bi) é (-a) + (-b)i. Então, implemente (cm C/C++ ou Java) números complexos, conforme especificado acima, usando estruturas com partes reais e complexas. Escreva rotinas para somar, multiplicar e negar (inverter) tais números. 2) Vamos supor que um número real seja representado por uma estrutura em C, como esta: struct realtype int left; int right; onde left e right representam os dígitos posicionados à esquerda e à direita do ponto decimal, respectivamnete. Se left for um inteiro negativo, o número real representado será negativo. a. Escreva uma rotina para inserir um número real e criar uma estrutura representado esse número; b. Escreva uma função que aceite essa estrutura e retorne o número real representado por ela. c. Escreva rotinas add, substract e multiply que aceitem duas dessas estruturas e definam o valor de uma terceira estrutura para representar o número que seja a soma, a diferença e o produto, respectivamente, dos dois registros de entrada. 3) Suponha que um inteiro precise de quatro bytes, um número real precise de oito bytes e um caractere precise de um byte. Pressuponha as seguintes definições e declarações: struct nametype char first[10]; char midinit; char last[20];

struct person struct nametype name; int birthday[2]; struct nametype parentes[2]; int income; int numchildren; char address[20]; char city[10]; char state[2]; struct person p[100]; se o endereço inicial de p for 100, quais serão os endereços inicias (em bytes) de cada um dos seguintes? a. p[10] b. p[200].name.midinit c. p[20].income d. p[20].address[5] e. p[5].parents[1].last[10] 4) Suponha dois vetores, um de registros de estudantes e outro de registros de funcionários. Cada registro de estudante contém membros para um último nome, um primeiro nome e um índice de pontos de graduação. Cada registro de funcionário contém membros para um último nome, um primeiro nome e um salário. Ambos os vetores são classificados em ordem alfabética pelo último e pelo primeiro nome. Dois registros com o último e o primeiro nome iguais não aparecem no mesmo vetor. Escreva uma função em C para conceder uma aumento de 10% a todo funcionário que tenha um registro de estudante cujo índice de pontos de graduação seja maior que 3.0. 5) Escreva uma função semelhante à do exercício anterior, mas pressupondo que os registros dos funcionários e estudantes sejam mantidos em dois arquivos externos classificados, em vez de em dois vetores classificados. 6) Usando a representação de números racionais apresentada abaixo, escreva rotinas para somar, subtrair e dividir tais números. typedef struct int numerator; int denominator; } RATIONAL; struct RATIONAL int numerator; int denominator;

7) Implemente uma função equal que determine se dois números racionais, r1 e r2, são iguais ou não reduzindo primeiramente r1 e r2 a seus termos mínimos e verificando em seguida a igualdade. 8) Um método alternativo para implementar a função equal citada na questão anterior seria multiplicar o denominador de cada número pelo numerador do outro e testar a igualdade dos dois produtos. Escreva uma função equal2 para implementar esse algoritmo. Qual dos dois métodos é preferível? 9) Definir e declarar o registro cuja representação gráfica é dada a seguir. REG NOME SALÁRIO IDADE numérico SEXO lógico literal numérico 10) Escrever uma função para atribuir um valor ao campo de nome SALÁRIO do registro REG, descrito no exercício anterior. Escreva também um programa (função main) para utilizar a função criada. 11) Uma indústria faz a folha mensal de pagamentos de seus empregados baseada no seguinte: Existe uma tabela com os dados do funcionário CADASTRO FICHA NOME HORAS NORMAIS 1 (literal) (numérico) 2 3 INSCRIÇÃO CLASSE HORAS EXTRAS 4 (numérico) (numérico) (numérico) 100 Fazer um algoritmo que processe a tabela e emita, para cada funcionário seu contracheque cujo formato é dado a seguir: NÚMERO DE INSCRIÇÃO: SALÁRIO HORAS NORMAIS: SALÁRIO HORAS EXTRAS: DEDUÇÃO INSS: SALÁRIO LÍQUIDO: NOME: O salário de referência deverá ser lido previamente.

O salário referente às horas extras é calculado acrescentando 30% ao salário-hora normal. O desconto do INSS é de 11% do salário bruto (salário correspondente às horas normais trabalhadas + salário correspondente às horas extras). Para o cálculo do salário, considerar que existem duas classes de funcionários, a classe 1, cujo salário é 1,3 vezes o salário de referência, e a classe 2, cujo salário é 1,9 vezes o salário de referência. 12) Para evitar erros de digitação de sequências de números de importância fundamental, como a matrícula de um aluno, o CPF do Imposto de Renda, o número de conta bancária, geralmente adiciona-se ao número um dígito verificador. Por exemplo, o número de matrícula 811057 é usado como 8110573, onde 3 é o dígito verificador, calculado da seguinte maneira: a. Cada algarismo do número e multiplicado por um peso começando de 2 e crescendo de 1 em 1, da direita para a esquerda: 8 7, 1 6, 1 5, 0 4, 5 3, 7 2; b. Somam-se as parcelas obtidas: 56 + 6 + 5+ 0 + 15 + 14 = 96; c. Calcula-se o resto da divisão desta soma por 11: 96 divido por 11 dá resto 8 (96 = 8 11 + 8); d. Subtrai-se de 11 o resto obtido: 11 8 = 3; e. Se o valor encontrado for 10 ou 11, o dígito verificador será 0; nos outros casos, o dígito verificar é o próprio resto da divisão. Escrever um algoritmo capaz de: 1) Ler um conjunto de registros contendo, cada um, o número de uma conta bancária, o dígito verificador deste número, o saldo da conta e o nome do cliente. O último registro, que não deve ser considerado contém o número de conta igual a zero. 2) Utilizando o esquema de verificação acima, imprimir duas listas de clientes distintas no seguinte formato de saída: CONTAS DE NÚMERO CORRETO 413599-7 987,30 Jacinto Pereira 111118-121,99 Campos Sales 06... CONTAS DE NÚMERO ERRADO 765432-1 335,66 Júnia Faria...

13) Defina um Tipo Abstrato de Dados TMatriz, para representar matrizes quadradas de tamanho n. Implemente as operações para somar e multiplicar 2 matrizes. Implemente ainda a operação do cálculo da matriz inversa. 14) Você deverá implementar um tipo abstrato de dados TConjunto para representar conjuntos de números inteiros. Seu tipo abstrato deverá armazenar os elementos do conjunto e o seu tamanho n. Considere que o tamanho máximo de um conjunto é 20 elementos e use arranjos de 1 dimensão (vetores) para a sua implementação. Seu TAD deve possuir procedimentos (ou funções quando for o caso) para: a. criar um conjunto vazio; b. ler os dados de um conjunto; c. fazer a união de dois conjuntos; d. fazer a interseção de dois conjuntos; e. verificar se dois conjunto são iguais (possuem os mesmos elementos); f. imprimir um conjunto; Exercícios extraídos de (Referências) [1] Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein, Estruturas de Dados Usando C, Makron Books/Pearson Education, 1995. [2] Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein, Data Strcutures Using C, Prentice-Hall International Editions, 1995. [3] Harry Farrer, Christiano Gonçalves Becker, Eduardo Chaves Faria, Helton Fábio de Matos, Marcos Augusto dos Santos, Miriam Lourenço Maia, Algoritmos Estruturados, LTC Editora, 3ª. edição, Rio de Janeiro, 1999.