Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2009, 19:37   #1
ponchikpk
Пользователь
 
Аватар для ponchikpk
 
Регистрация: 09.03.2009
Сообщений: 63
Печаль Текстовые файлы

Дан файл, содержащий текст на русском языке. Определить, сколько раз встречается в нем самое длинное слово.

Код:
uses crt;
var f:text;
s,word,mword:string;
max,i,j:integer;
BEGIN
assign(f,'text.txt');
reset(f);
while not seekeof(f) do
  begin
  readln(f,s); {читаем строку из файла}
  i:=1;
  while i<=length(s) do
    begin
    while (s[i]=' ')and(i<=length(s)) do inc(i); 
    while (s[i]<>' ')and(i<=length(s)) do  {здесь из строки получаем слово}
      begin
      word:=word+s[i];
      inc(i);
      end;
    j:=1;
    while j<=length(word) then {устанавливаем мах слово}
      begin
      if j>max then
        begin
        max:=j;
        mword:=word;
        end;
      inc(j);
      end;
    end;
А вот дальше что то запутался
ponchikpk вне форума Ответить с цитированием
Старый 23.03.2009, 22:02   #2
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию

Код:
uses crt;
var
fil:text;
txt:array[1..20] of string;
s,st:string;
i,k,j,n,maxlen:integer;
begin
clrscr;
assign(fil,'c:\in.txt');
reset(fil);
n:=0;
while not eof(fil) do
 begin
 inc(n);
 readln(fil,txt[n]);
 end;
maxlen:=0;
for i:=1 to n do
 begin
  txt[i]:=txt[i]+' ';
  j:=1;
  s:='';
  repeat
  if txt[i][j]<>' ' then s:=s+txt[i][j]
  else
   if s<>'' then
             begin
             if length(s)>maxlen then begin st:=s; maxlen:=length(s); end;
             s:='';
             end;
  inc(j);
  until j>length(txt[i]);
 end;
k:=0;
for i:=1 to n do
 begin
  j:=1;
  s:='';
  repeat
  if txt[i][j]<>' ' then s:=s+txt[i][j]
  else
   if s<>'' then
             begin
             if s=st then inc(k);
             s:='';
             end;
  inc(j);
  until length(txt[i])<j;
 end;
writeln(k);
close(fil);
readln;
end.
Имеется в виду что текст не содержит других разделителей кроме пробела.

From Stilet: Код оформляй тегом, ато обидеться можно.
@(o_0)@

Последний раз редактировалось Stilet; 24.03.2009 в 08:52.
Tkirill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текстовые файлы lusuj Помощь студентам 3 20.11.2008 19:18
Задача на текстовые файлы Paul11j Помощь студентам 20 17.03.2008 13:20
Текстовые файлы на С Raptor Общие вопросы C/C++ 15 26.01.2008 21:06
Текстовые файлы(задачка). Vadim2008 Общие вопросы C/C++ 1 11.01.2008 16:45