Introdução à Programação B (2017/2018)

Lista de exercícios

Artur Miguel Dias



Prática 17 (Semana de 20/nov/2017-1)

Sumário: Ficheiros. Exercícios de 48 a 50.



Nesta aula há três problemas sobre ficheiros:

  • 48 - O seguinte ficheiro de texto - "alice.txt" - contém uma tradução para português do Brasil (pré-acordo ortográfico) de uma das mais famosas obras da literatura em Inglês do século XIX: "Alice no País das Maravilhas".

    Pedimos-lhe para escrever um programa para fazer estas duas contagens no ficheiro "alice.txt":

    Por favor, resolva este problema SEM carregar o ficheiro num vetor. Percorra o ficheiro lendo uma linha de cada vez com a função fgets. Ao mesmo tempo, vá atualizando dois contadores que foram colocados a zero no início da execução do programa.

    Organize o seu programa por forma a percorrer o ficheiro apenas uma vez. Isto impede de decompor o programa em muitas funções. Portanto, escreva uma função chamada "processar_ficheiro" que recebe o nome do ficheiro, faz as contagens e escreve os resultados - tudo na mesma função.

    Para testar se a palavra "Alice" ocorre numa linha, aproveite a função eh_substring da teórica 8.

    Como aprendemos na aula teórica 9, a forma correta de processar ficheiros diretamente, sem carregamento em vetor, é a seguinte:


  • R : 49 - Escreva um programa que informe sobre quais as capitais de diversos países.

    O programa deve começar por carregar os dados num vetor de tipo Atlas. Depois executa um ciclo de diálogo com o utilizador. Em cada volta do ciclo o programa pede o nome do país e responde com a respetiva capital. O ciclo termina quando for introduzida a palavra "fim". Sempre que for introduzido um pais desconhecido, o programa deve escrever "INEXISTENTE".

    Vai precisar de escrever diversas funções:

    A informação relativa aos vários países e suas capitais escontra-se no ficheiro "paises.txt". [No Mooshak, o nome do ficheiro é "../paises.txt".]

    Repare que no ficheiro há nomes de países e nomes de capitais constituídos por mais do que uma palavra. Por exemplo, "Burkina Faso" e "Nova Deli". Por isso a leitura desses nomes deve ser feita usando fgets, em vez de scanf.

    Para resolver este problema, inspire-se no último problema da teórica 9.

    Complete o programa:
    Memorial de Ouagadougou


  • S : 50 - Escreva um programa que a partir dum ficheiro chamado "jogadores.txt", com formato descrito na aula teórica 9, escreva um simples número real que indique qual a média de golos dos jogadores. Não é preciso carregar o ficheiro em vetor. [No Mooshak, o nome do ficheiro é "../jogadores.txt".]

    O ficheiro "jogadores.txt" tem um conteúdo semelhante ao seguinte: