Возможно эта задача кому-то покажется смешной, но.. В задаче требуется найти символ в текстовом файле, кот. повторяется чаще остальных. Нужно вывести этот символ и количество его повторений.
Я так понимаю здесь потребуется воспользоваться таблицей ASCII ?
volvo
13.11.2005 2:10
var arr: array[char] of integer; ch: char; { откроешь файл } ... while not eof(f) do begin read(f, ch); inc(arr[ch]); end;
потом просто найдешь максимум в массиве arr и выведешь на печать сам символ и его индекс...
Guest
13.11.2005 3:31
Вот это и есть ключевой момент. Я как раз и не понимаю как найти тот символ, который повторяется макс. количество раз. Никогда с символами не работал. Перерыл уже кучу всего. Предложенной Вами операцией, я так понял, мы "переписываем" символы из файла в массив для дальнейшей работы с ними. Само по себе уже это ценная информация для меня. Я, например, узнал как работает функция inc() :smile: Был бы очень благодарен, если бы Вы еще объяснили как мне найти символ с макс. количеством повторений. Трудно сформулировать, что именно я не понимаю, очень бы хотелось посмотреть это на примере. Интересует сама работа с символами.
volvo
13.11.2005 3:43
Цитата
я так понял, мы "переписываем" символы из файла в массив для дальнейшей работы с ними.
Неправильно понял. Мы для каждого символа, принадлежащего к типу Char сразу подсчитываем количество повторений. Полностью программа выглядит так:
var f: text; arr: array[char] of integer; max_i, i, ch: char;
begin assign(f, 'a.txt'); reset(f); while not eof(f) do begin read(f, ch); inc(arr[ch]); end; close(f);
{ количество вхождений каждого символа уже подсчитано теперь найдем максимум из этих чисел... } max_i := #0; for i := #0 to #255 do if arr[max_i] < arr[i] then max_i := i;
writeln('char: ', max_i, ' count: ', arr[max_i]);
end.
Влад
13.11.2005 3:58
Не знаю как благодарить... Я очень Вам признателен. Сейчас буду разбираться. Расширять мой трехнедельный уровень паскаль-подготовки. Спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.