Você está na página 1de 3

Algoritmos e Tcnicas de Programao II Trabalho Listas, Pilhas e Filas

Prof.: Marlon Marcon 10/11/2011

Os trabalhos podem realizados em grupos de at 4 pessoas. Data de Entrega: 24/11/2011; A nota do trabalho corresponder 10% da nota do semestre; A cada dia de atraso sero descontados 20% da nota do trabalho, ou seja, com 5 dias de atraso a nota zero.

Exerccios teoricos
1. Supondo que a pilha P esteja inicialmente vazia, mostre como seu estado se modifica medida que a sequncia de operaes a seguir executada:
empilha(1,P); empilha(1,P); empilha(1,P); empilha(topo(P),P); desempilha(P); empilha(4,P); desempilha(P);

2. Considerando a ilustrao a seguir, mostre a sequncia de operaes (empilha e desempilha) que devem ser efetuadas com as pilhas P, Q e R para que o estado inicial possa ser transformadono estado final.

D C B A (P)

(Q) Estado Inicial

(R)

(P)

(Q) Estado Final

B D A C (R)

3. Escreva as seguintes expresses na forma posfixa:


a) b) c) d) e) A + B C A B + C * D A / ((B C) + D * (E / F)) A / (B + C) (A + B) * C + D / (E + F * G) + H

Pgina 1 de 3

4. Supondo que a fila F esteja inicialmente vazia, mostre como seu estado se modifica medida que a sequncia de operaes a seguir executada:
enfileira(a, F); enfileira(b, F); enfileira(c, F); x := desenfileira(F); enfileira(d, F); enfileira(desenfileira(F),F);

5. Dependendo do conjunto de operaes selecionadas, uma fila-dupla pode comportar-se como uma pilha ou como uma fila. Isso muito vantajoso em aplicaes que precisam desses dois tipos de dados simultaneamente. Que conjunto de operaes devemos usar com uma fila-dupla para que ela se comporte como: a) Uma pilha? b) Uma fila?

Exerccios Pr ticos
6. Faa um programa que cadastre at 5 produtos. Para cada produtos devem ser cadastrados cdigo do produto, preo e quantidade estocada. Os dados devem ser armazenados em uma lista. Posteriormente, receber do usurio a taxa de desconto (ex, digitar 10 para taxa de desconto de 10%). Aplicar a taxa digitada ao preo de todos os produtos cadastrados e finalmente mostrar um relatrio com o cdigo e o novo preo. O final desse relatrio deve apresentar tambm a quantidade de produtos com quantidade estocada superior a 500. 7. Faa um programa que cadastre at 8 funcionrios. Para cada funcionrio devem ser cadastrados nome e salrio. Os dados devem ser armazenados em uma lista, de forma descrescente, pelo salrio do funcionrio. Posteriormente, o programa deve mostrar: a) O nome do funcionrio que tem o maior salrio (em caso de empate mostrar todos) b) A mdia salarial de todos os funcionrios; c) A quantidade de funcionrios com salrio superior a um valor fornecido pelo usurio. Caso nenhum usurio satisfaa essa condio, mostrar mensagem. 8. Faa um programa que cadastre at 5 alunos. Para cada aluno devem ser cadastrados nome e nota final. Os dados devem ser armazenados em uma lista. Em seguida, o programa deve mostrar apena o nome dos alunos aprovados, ou seja, alunos com nota final de no mnimo 7. Se nenhum aluno estiver aprovado, mostrar mensagem. 9. Codifique um programa para ler uma frase e imprim-la com as palavras invertidas. Por exemplo, se for digitada a frase Apenas um teste, o programa deve exibir a frase sanepA mu etset 10. Dizemos que uma frase um palndromo se pode ser igualmente lida da esquerda para a direita ou da direita para a esquerda, como por exemplo, subi no onibus. Codifique uma rotina que use uma pilha para verificar se uma frase um palindromo. Dica: Ignone espaos em branco.

Pgina 2 de 3

11. Considere as expresses infixas compostas exclusivamente por letras maisculas e operadores aritmticos, como no Exerccio 3. Seja e uma string que representa uma dessas expresses. Ento, e[i] representa o i-simo lexema de e. Com base nessa idia, crie a funo pf(e), que recebe como parmetro uma string e, representando uma expresso infixa, e devolve como resposta a posfixa correspondente. Crie tambm uma programa que use essa funo para converter expresses infixas em posfixas e teste-o com as espresses do Exerccio 3. Compare os resultados produzidos pelo programa com aquelas que voc obteve antes. 12. Codifique uma funo para converter uma expresso posfixa, composta apenas por letras e operadores aritmticos, em infixa completamente parentesiada. 13. Faa um programa que cadastre 5 nmeros em uma fila e mais 5 em uma pilha. Em seguida, o programa deve mostrar trs relatrios. O primeiro ter os nmeros que esto nas duas estruturas. O segundo ter os que esto apenas na fila e o terceiro ter os que esto apenas na pilha. 14. Faa um programa que utilizando pilhas, apresente as seguinte opes: a) Cadastrar nmero b) Mostrar nmeros pares entre o primeiro e o ltimo nmero cadastrado c) Excluir nmeros 15. Faa um programa que cadastre em uma pilha vrios nmeros. Posteriormente, o programa deve gerar duas filas, a primeira com os nmeros pares e a segunda com os nmeros mpares. A sada o programa deve apresentar a pilha digitada e as filas geradas. Caso alguma das filas seja vazia, deve-se mostrar uma mensagem.

Pgina 3 de 3