Задача PascalABC.NET на работу со строками

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
kotophei999
Сообщения: 1
Зарегистрирован: 27 май 2013, 17:06

Для каждого символа текста указать, сколько раз он встречается в тексте и вывести в текстовый файл слово, в котором этот символ встречается наиболее часто. Если таких слов несколько, вывести первое встретившееся, последнее встретившееся, все слова.
В программе используйте подпрограммы.


Нашёл такое решение, но оно не то...и без процедур, помогите:
const
p = [' ', '.', ',', '!', '?'];


var
t, g: text;
a: array [192..255] of integer;
s, sl, slmax: string;
i, j, k, ch, imax: byte;

begin
assign(t, 'in.txt');
assign(g, 'out.txt');
reset(t);
while not (eof(t)) do
begin
readln(t, s);
for i := 1 to length(s) do
if ord(s) > 191 then inc(a[ord(s)]);
end;
imax := 192;
writeln('Частота повторений символов в тексте');
for i := 192 to 255 do
begin
write(chr(i):3, '-', a:3, ' ');
if a > a[imax] then imax := i;
end;
writeln;
writeln('Чаще всего (', a[imax], ') встречается ', chr(imax));
reset(t);
ch := 0;
while not (eof(t)) do
begin
readln(t, s);
s := s + ' ';
sl := '';
for i := 1 to length(s) do
if not (s in p) then sl := sl + s else
if length(sl) > 0 then
begin
k := 0;
for j := 1 to length(sl) do
if sl[j] = chr(imax) then inc(k);
if k > ch then
begin
slmax := sl;
ch := k;
end;
sl := '';
end;
end;
rewrite(g);
writeln('Символ ', chr(imax), ' чаще всего встретился в слове ', slmax);
writeln(g, 'Символ ', chr(imax), ' чаще всего встретился в слове ', slmax);
close(t);
close(g);
end.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Рекомендую написать подпрограммы разбиения строки на слова (валялся в незапамятные времена в разделе "Алгоритмы") и подсчета частоты каждого символа в слове.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить