Основы программирования на C++, PASCAL
Пример 6. Пусть файл с именем Note.txt содержит некоторый текст. Требуется подсчитать количество строк в этом тексте.
Var Note: Text; К: Integer;
Begin Assign (Note,'Note.txt');
Reset(Note);
K:=0;
While Not Eof(Note) Do
Begin
ReadLn(Note); K:=K+1
End;
WriteLn ('Количество строк равно',К);
Close(Note)
End.
Используемый здесь оператор ReadLn (Note) «пролистывает» строки из текстового файла Note, не занося их в какую-либо переменную.
Пример 7. В текстовом файле Note.txt определить длину самой большой строки.
Var Note: Text;
Max,К: Integer; С: Char;
Begin
Assign(Note,'Note.txt');
Reset (Note);
Max:=0;
While Not Eof(Note) Do
Begin
K:=0;
While Not Eoln(Note) Do
Begin
Read(Note,C); K:=K+1
End;
If K>Max Then Max:=K;
ReadLn(Note)
End;
WriteLn('Наибольшая строка имеет', Max,'знаков');
Close(Note)
End.
Здесь каждая строчка прочитывается посимвольно, при этом в переменной к работает счетчик числа символов в строке. В переменной Мах отбирается наибольшее значение счетчика.
Пример 8. Требуется решить следующую задачу. Под действием силы F c начальной скоростью V в вязкой среде движется тело массой М. Сопротивление пропорционально квадрату скорости с коэффициентом К. Определить время прохождения пяти контрольных точек траектории, расстояние до которых от точки старта заданы.
Пусть с помощью текстового редактора в файле Date.txt сформированы исходные данные в форме следующей таблицы:
Требуется ввести числовые данные в вещественные переменные M, F, V, K и массив х[1. . 5], произвести расчеты и получить результаты в массиве T[1.. 5]. Результаты следует вывести на экран, а также в текстовый файл на диске с именем Resuit.txt.
Ниже приводится программа без расчетной части. Показаны только ввод исходных данных и вывод результатов.
Var M,F,V,K: Real; I: Integer;
T,X: Array[1..5] Of Real;
FR,FD: Text;
Begin
Assign(FD,'DATE.TXT'); Reset(FD) ;
Assign(FR,'Result.txt'); Rewrite(FR);
(Пропуск первых трех строк}
ReadLn(FD); ReadLn(FD); ReadLn(FD);
{Ввод данных}
ReadLn(FD,M,F,V,K);
(Пропуск трех строк}
ReadLn(FD); ReadLn(FD); ReadLn(FD);
{Ввод данных)
For I:=1 To 5 Do Read(FD,X[I]);
. . . . . . . . . . . . . . .
{РАСЧЕТНАЯ ЧАСТЬ ПРОГРАММЫ}
. . . . . . . . . . . . . . .
{Вывод результатов на экран и в файл FR}
WriteLn('Результаты'); WriteLn;
WriteLn(FR,'Результаты'); WriteLn(FR);
WriteLn('T(l) T(2) Т(3) Т(4) Т(5)');
WriteLn (FR,'Т (1) Т(2) Т(3) Т(4) Т(5)');
For I:=1 То 5 Do
Begin
Write(Т[I]:8:2); Write(FR,Т[I]:8:2)
End;
Close(FD); Close(FR)
End.
Результаты будут сохранены в файле Resuit.txt. Их можно посмотреть на экране, распечатать на бумаге. При необходимости этот файл может стать входным для другой программы, если содержащаяся в нем информация будет исходной для решения другой задачи.
Упражнения
1. Дан файл вещественных чисел. Определить количество нулевых значений в этом файле.
2. Даны два файла целых чисел. Определить, являются ли они тождественными.
3. Даны два символьных файла одинакового размера. Произвести обмен информацией между ними.
4. Имеется внешний текстовый файл. Напечатать первую из самых коротких его строк.
5. Описать процедуру Lines(Т), которая построчно печатает содержимое непустого текстового файла Т, вставляя в начало каждой печатаемой строки ее порядковый номер (он должен занимать четыре позиции) и пробел.
6. В текстовом файле т записана непустая последовательность вещественных чисел, разделенных пробелами. Описать функцию Мах(Т) для нахождения наибольшего из этих чисел.