Получить гистограмму длин строк файла - Pascal ABC
Формулировка задачи:
Заданный текстовый файл. Получить гистограмму длин строк этого файла.
вот что мне удалось написать.
Что здесь не так?
Решение задачи: «Получить гистограмму длин строк файла»
textual
Листинг программы
program fajly;
var
f: text;
a: array[1..100] of string;
len: array[1..100] of integer;
max, i, n, m, j: integer;
s: string;
begin
assign(f, 'f.txt');
rewrite(f);
write('N= ');
readln(n);
for i := 1 to n do
begin
m := random(n);
s := '';
for j := 1 to m do
s := s + '#';
writeln(s);
end;
close(f);
reset(f);
i := 0;
while not eof(f) do
begin
inc(i);
readln(f, a[i]);
end;
close(f);
n := i;
for I := 1 to n do
len[i] := length(a[i]);
for I := 1 to n do
begin
for j := 1 to len[i] do write('#');
writeln;
end;
readln;
end.
Объяснение кода листинга программы
- В программе объявлены переменные: f (тип text), a (массив строк), len (массив целых чисел), max, i, n, m, j (целые числа).
- Задается имя файла для чтения и записи - 'f.txt'.
- Выполняется операция перезаписи файла 'f' с помощью функции rewrite(f).
- Выводится сообщение 'N= ' и считывается значение переменной n.
- Для каждой строки в файле 'f' выполняется цикл for i := 1 to n do.
- Внутри цикла генерируется случайное число m от 1 до n.
- Строка s инициализируется пустой строкой.
- Для каждой цифры от 1 до m выполняется цикл for j := 1 to m do.
- Каждая цифра добавляется к строке s с помощью оператора конкатенации.
- Выводится строка s.
- Выполняется операция rewrite(f) для очистки файла перед следующим чтением.
- Считывается следующая строка из файла 'f' с помощью функции readln(f, a[i]).
- Значение переменной i увеличивается на единицу.
- Выполняется цикл while не достигнуто условие eof(f) do.
- После каждого чтения строки из файла 'f' вызывается функция close(f).
- Переменная n инициализируется значением i.
- Для каждой строки в файле 'f' выполняется цикл for I := 1 to n do.
- Вычисляется длина строки a[i] с помощью функции length(a[i]).
- Выводится символ '#' для каждой строки a[i].
- Выводится символ '\n' для завершения строки.