Ficheiros de texto
1
Ficheiros de texto
1. Implementar um programa que leia uma frase do teclado e a escreva num ficheiro.
2. Implementar um programa que procure num ficheiro uma palavra lida do teclado. Deve
mostrar o número de vezes que a palavra existe no ficheiro.
Nota: use o ficheiro de texto “texto.txt” que se encontra na página web da disciplina.
3. Implementar um programa que conte o número de linhas de um ficheiro, usando
a) fgetc,
b) fgets.
4. Implementar:
a) Uma função que permita copiar um ficheiro para um outro.
b) Uma função que anexe um ficheiro ao final de outro.
5. Considere que o ecrã tem 25 linhas. Implementar um programa que leia um ficheiro de texto
(nome passado via linha de comandos) usando fgets e o escreva no terminal de forma a que
o texto do ficheiro seja visto um um ecrã de cada vez. O programa deve esperar que o
utilizador prima <enter> para mostrar o ecrã seguinte. Esta funcionalidade deve ser
implementada sob a forma de função.
6. Suponha que as linhas de um ficheiro contêm a designação de uma tarefa realizada durante
um mês, seguida de quantos trabalhadores estiveram envolvidos nessa tarefa em cada um
dos dias úteis do mês. Um valor negativo significa que a tarefa foi terminada. Exemplo:
Polimento 0 1 2 2 1 3 2 -1
significa que a tarefa Polimento envolveu 0 trabalhadores no 1º dia útil do mês, 1 no 2ª dia
útil, etc., e terminou no 8º dia útil. Escrever e testar um programa que leia o ficheiro e
calcule: qual o dia em que se envolveram mais trabalhadores nas tarefas; qual o dia em que
se terminaram mais tarefas; qual a tarefa que ocupou mais trabalhadores.
Nota: usar o ficheiro “tarefas.txt” que se encontra na página web da disciplina.
7. Pretende-se obter estatísticas de ocorrências de letras em textos na língua portuguesa. Para
tal, criar um programa que leia o ficheiro de texto “texto.txt” (encontra-se na página web da
disciplina) e obtenha médias de ocorrências de todas as letras do alfabeto. Ter em conta que
todas as letras devem ser convertidas para o mesmo caso (maiúscula ou minúscula), todas
as vogais acentuadas devem ser convertidas para não acentuadas e todas as cedilhas devem
ser retiradas dos “cês” com cedilha.
8. Uma revista musical organiza, semanalmente, uma pesquisa de opinião sobre a popularidade
de discos. Os resultados da pesquisa estão guardados no ficheiro “discos.txt” (encontra-se na
página web da disciplina), com a seguinte informação por linha: nome do autor, nome do
Programação / Programação I
Ficheiros de texto
2
disco, discos vendidos. Escrever um programa que leia esta informação para um vetor de
registos e escreva os discos que têm vendas superiores a um certo valor.
9. Uma empresa possui representantes em várias cidades e pretende implantar a sua sede
numa delas, de acordo com o critério: o custo anual das deslocações dos representantes das
várias cidades à cidade sede deverá ser o menor possível.
a) Escrever um programa que crie um ficheiro contendo a seguinte informação: nome da
cidade; coordenadas da cidade (x, y); número de deslocações por ano dos
representantes da cidade.
b) Completar o programa por forma a ler o ficheiro e determinar a cidade a ser escolhida
como sede.
10. Implementar um programa que:
a) Se se chamar ordem devolve a maior palavra (usando a ordem alfabética “rato” é
maior que “elefante”) dos argumentos fornecidos. Tome esta opção como sendo a
opção por omissão;
b) Se se chamar conta devolve o número de argumentos com que foi invocado;
c) Se se chamar lista manda para a sa´ıda standard os seus argumentos.
11. Escreva um programa que permita construir uma lista de todas as palavras contidas num
ficheiro, assim como o número de ocorrências de cada uma delas.
12. Escreva um programa que solicite um valor inteiro ao utilizador e apresente os múltiplos
desse valor que estiverem presentes no ficheiro de texto “multiplos.txt”.
13. Implementar um programa que simule o funcionamento do comando wc do sistema Unix com
a restrição que as opções aceites são -l, -w e -c para respectivamente “linhas”, “palavras” e
“caracteres”. Assume-se que a entrada é a entrada standard se nenhum ficheiro for indicado
na linha de comando.
14. Considere o ficheiro de texto “dados1.txt” (encontra-se na página web da disciplina) que
deverá conter uma pauta com a seguinte informação (em 4 linhas seguidas): número do
aluno, nome do aluno, classificação da frequência, classificação do exame. Escreva um
programa que crie outro ficheiro, contendo o nome do aluno e a classificação final,
correspondente à melhor das duas notas. Deve ainda filtrar os alunos com classificação final
igual ou superior a 10.
15. Considere um programa de gestão de stocks em que cada componente do stock é
identificado pelo nome, número de ordem e preço.
a) Defina um tipo de registo, “tstock”, adequado à representação de um componente do
stock e implemente uma função que leia um elemento deste tipo (passado por
parâmetro).
b) Implemente uma função que escreva componentes do stock num ficheiro “stock.txt”
até o utilizador especificar um número de ordem igual a zero.
Programação / Programação I
Ficheiros de texto
3
16. Considere o ficheiro de texto “dados2.txt” (encontra-se na página Web da disciplina). Os dados
guardados neste ficheiro são estruturas do seguinte tipo:
struct {
int
BI;
char nome[100];
float peso, altura;
};
Utilizando funções implemente um programa que:
a) Liste o conteúdo do ficheiro.
b) Solicite ao utilizador uma letra e copie todos os registos cujo campo nome comece por
essa letra para o ficheiro de texto “$_inicial.txt” (onde $ representa a letra escolhida
pelo utilizador).
c) Apresente o campo nome para o registo com o valor de peso mais elevado.
d) Acrescente um novo registo (campos introduzidos pelo utilizador) ao ficheiro de texto
“dados2.txt”.
17. Altere o programa anterior de forma a que o programa permaneça em ciclo e, através dum
menu, o utilizador possa escolher qual a tarefa a realizar.
18. Implementar um programa que use uma estrutura que permita guardar o nome, a morada e
o número de telefone duma pessoa. Deve permitir, através de um menu, ler dados para uma
estrutura desse tipo que sejam automaticamente guardados num ficheiro. O programa deve
permitir mostrar o conteúdo do ficheiro da seguinte forma:
**********
Registo 1
Nome :
Morada :
Telefone :
**********
Registo 2
Nome :
Morada :
Telefone :
...
Assim, o menu deve ter as seguintes opções: inserir dados, mostrar dados, terminar. O
menu, a inserção de dados e a exibição dos dados devem ser implementados usando
funções.
Programação / Programação I
Ficheiros de texto
4
19. Altere o programa anterior de forma a que seja possível:
a) Alterar dados dum registo, indicando o número do registo a alterar;
b) Apagar um registo, indicando o número do registo a apagar (tem de acrescentar um
campo à estrutura original que lhe indique se o registo é válido ou foi apagado);
c) Ver apenas um registo do ficheiro, indicando o seu número. Implemente estas
funcionalidades sob a forma de funções. Devem estar disponíveis através do menu do
programa.
20. Para se representar as medições de uma dada experiência de laboratório, usa-se a estrutura
“registo” definida da seguinte forma:
struct registo {
int ref;
double var;
int tm;
};
em que o campo ref representa o número de referência da medição, var e tm representam
os valores medidos em duas variáveis da experiência, respetivamente. Considere que dispõe
de ficheiros de texto (disponíveis na página web da disciplina) cujo conteúdo é constituído
por uma ou mais estruturas “registo”. A informação existente nos ficheiros representa
medições de uma dada experiência de laboratório.
Implementar um programa que:
a) aceite um parâmetro na linha de comando que representa o nome do ficheiro de
entrada com o formato descrito;
b) determine a média dos valores de cada uma das variáveis da experiência;
c) determine a medição com o melhor (menor) coeficiente de aproximação, sendo este
dado pela expressão:
var −mvar tm−mtm

,
mvar
mtm
∣
1
∣∣
∣
em que mvar e mtm representam as médias calculadas anteriormente e que se assume
serem diferentes de zero;
d) imprima as médias calculadas e os dados da medição com o melhor coeficiente de
aproximação.
21. Considere que o ficheiro de texto “medicoes01.txt” possui informação representada por uma
ou mais estruturas do tipo “registo” (exercício 20). Implementar um programa que:
a) aceite um parâmetro na linha de comando que represente o nome de um ficheiro de
entrada com o formato acima descrito;
b) imprima no ecrã os registos constantes nesse ficheiro, em modo textual, na forma de
uma tabela e de acordo com o formato apresentado no ficheiro “fbin.txt”.
Programação / Programação I
Ficheiros de texto
5
22. Considere que o ficheiro de texto “medicoes02.txt” possui informação representada por uma
ou mais estruturas do tipo “registo” (exercício 20). Implementar um programa que:
a) forneça dois ou mais valores pela linha de comando, sendo que o primeiro representa o
nome do ficheiro de entrada, com o formato acima descrito, e os restantes são
números de ordem de registos (o primeiro registo tem o número de ordem 1);
b) imprima no ecrã os registos pretendidos.
23. As notas dos alunos da disciplina de Programação estão guardadas no ficheiro de texto
"dados3.txt". Cada linha deste ficheiro contém a seguinte informação: número de aluno e
nota final obtida (por esta ordem). Implementar um programa em C para determinar a nota
média obtida na disciplina. Para tal, construir e usar as seguintes funções:
a) função para ler do ficheiro um vetor de inteiros com as notas dos alunos.
void LerVetor (int V[], int *N);
b) função para calcular a soma das notas obtidas pelos alunos (usar o vetor).
int SomaNotas (int V[], int N);
24. As notas dos alunos da disciplina de Programação estão guardadas no ficheiro de texto
"dados3.txt". Cada linha deste ficheiro contém a seguinte informação: número de aluno e
nota final obtida (por esta ordem). Implementar um programa em C para determinar a nota
média obtida na disciplina pelos alunos aprovados. Para tal, construir e usar as seguintes
funções:
a) função para ler do ficheiro um vetor de inteiros com as notas obtidas pelos alunos.
void LerVetor (int V[], int *N);
b) função para calcular a soma das notas dos alunos aprovados (usar o vetor).
int SomaNotasAprovados (int V[], int N);
25. As notas dos alunos da disciplina de Programação estão guardadas no ficheiro de texto
"dados4.txt". Cada linha deste ficheiro contém a seguinte informação: número de aluno, nota
dos trabalhos práticos (TP) e nota do teste escrito (T) (por esta ordem). Implementar um
programa em C para determinar o número de alunos aprovados na disciplina. Para tal,
construir e usar as seguintes funções:
a) função para ler do ficheiro um vetor de inteiros com as notas finais (TP+T) dos alunos.
void LerVetor (int V[], int *N);
b) função para calcular o número de alunos aprovados (usar o vetor).
int CalcularAprovados (int V[], int N);
Programação / Programação I
Download

Ficheiros de texto