MC102

Algoritmos e Programação de Computadores

Quinta Lista de Exercícios

Os exercícios dessa lista cobrem as aulas até o dia 29/04.
  1. Faça uma função recursiva para achar um elemento num vetor. A função deve retornar o índice do elemento no vetor ou -1 caso ele não exista.
  2. Faça uma rotina recursiva para imprimir os elementos de um vetor, na ordem do menor índice primeiro.
  3. Faça uma rotina recursiva para imprimir os elementos de um vetor, na ordem do maior índice primeiro.
  4. Faça uma rotina recursiva para detectar se uma string é palíndrome ou não. Ignore todos os espaços da string.
  5. Dado um mapa na forma de uma matriz de caracteres, faça uma rotina recursiva que encontre e imprima um caminho entre a posição [1,1] e a posição [10,10]. Um exemplo de mapa está mostrado a seguir. No mapa,  os asteriscos (*) representam paredes, o canto verde representa o ponto inicial e o canto azul o ponto final.
      
     *
      
      
      
      
      
      
      
      


     *

     *
     *

     *
     *
     *
     *


     *



     *

     *
     *
     *


     *


     *



     *
     *


     *

     *





     *

     *

     *







     *

     *



     *
     *
     *
     *
     *

     *
     *
     *










     *
     *
     *
     *
     *
     *
     *
     *
     *


  6. Faça um programa recursivo que imprima na tela todas as seqüências de 4 letras que seguem a seguinte regra:
    • A primeira letra é uma consoante
    • A segunda letra é uma vogal
    • A terceira letra é uma consoante
    • A quarta letra é uma vogal
  7. Faça um programa recursivo que procura por um dado elemento num vetor de inteiros. Sua função recursiva deve receber uma função do seguinte tipo:
    Type FuncaoLocaliza = Function(e : integer): Boolean;
    Seu procedimento/função deve receber uma função conforme descrita como parâmetro e utiliza-la para encontrar o elemento. A função passada como parâmetro retorna true se o elemento indicado é o elemento desejado e false caso contrário.
  8. Dado o registro:
    Type Produto = Record
    nome : string[40];
    preco : real;
    estoque : real;
    End;
    Faça um procedimento de ordenação que utilize funções como parâmetro e também defina as funções de comparação de forma que seja possível ordenar um vetor de elementos do tipo Produto da seguinte forma:
    • Em ordem ascendente de nome
    • Em ordem descendente de nome
    • Em ordem crescente de preço
    • Em ordem decrescente de preço
    • Em ordem crescente de estoque e, em caso de empate, em ordem ascendente de nome
    • Em ordem decrescente de estoque e, em caso de empate, em ordem decrescente de preço
    Inclua no seu programa um exemplo da chamada da rotina de ordenação para cada uma das funções indicadas.
  9. Faça um programa para ler diversos registros descritos no exercício 8 de um arquivo chamado produtos.txt. Após a leitura mostre na tela cada um dos elementos lidos. Descreva o formato em que você espera que os dados estejam armazenados no arquivo.
  10. Faça um programa que pergunte ao usuário o nome de um arquivo, abra esse arquivo e conte quantas linhas possuem a palavra teste.
  11. Faça um programa que abra dois arquivos (primeiro.txt e segundo.txt), onde cada arquivo contém uma lista  ordenada de nomes de alunos e grave em outro arquivo (terceiro.txt) os nomes de todos os alunos de forma ordenada.
  12. Faça um programa que leia de um arquivo um texto e remova todos os espaços que encontrar desse arquivo. Escreva a resposta em outro arquivo texto.
  13. Faça um programa que leia de um arquivo um texto e passe todas as letras para maiúsculas. Grave a resposta em outro arquivo.
  14. Faça um programa que leia de um arquivo um texto e passe todas as letras para minúsculas. Grave a resposta em outro arquivo.
  15. Faça uma combinação dos exercícios 13 e 14 utilizando funções/procedimentos passados como parâmetro.