Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 18.03.2012, 21:54   #1 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Строковый тип и файлы. Нужна помощь

Создать текстовый файл, состоящий из случайного количества (не более 30-и) строк. В каждой строке файла содержится случайное количество (не более 20-и) слов, разделенных пробелами. Каждое слово состоит из случайного количества (не более 8-и) строчных латинских букв. Найти в файле строку, содержащую наименьшее количество слов из пяти букв, и удалить ее (если таких строк несколько, то удалить все).

Что-то совсем меня не радует... Очень нужна помощь...
Сова вне форума   Ответить с цитированием

Старый 18.03.2012, 21:54
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Схожие темы можно найти через поиск, но я помогу вам и вышлю их сюда

Нужна помощь по МК
Нужна помощь

Старый 18.03.2012, 23:23   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Сова Посмотреть сообщение
Очень нужна помощь...
Легко.
Имена файлов и пути, если надо, поправьте.
Код:
Var
 f,f1:Text;
 N_lines,N_words,N_symbols,i,j,k,Jmin,Jmax,Min:Byte;
 N_5:Array[1..30] of Byte;
 Ch:Char;
 S:String;
Begin
 Assign(f,'D:\XXX.txt');
 Rewrite(f);
 Assign(f1,'D:\YYY.txt');
 Rewrite(f1);
 Randomize;
 N_lines:=20+Random(11);
 For i:=1 to N_lines do
  begin
   N_words:=Random(20)+1;
   For j:=1 to N_words do
    begin
     N_symbols:=Random(8)+1;
     For k:=1 to N_symbols do
      write(f,Chr(97+Random(26)));
     If j<N_words then write(f,' ');
    end;
   writeln(f);
  end;
 Close(f);
 Reset(f);
 i:=0;
 Repeat
  Inc(i);
  N_5[i]:=0;
  j:=0;
  Repeat
   Inc(j);
   read(f,Ch);
   If j=1 then Jmin:=1;
   Repeat
    Inc(j);
    read(f,Ch);
   Until (Ch=' ') or EoLn(f);
   If Ch=' ' then Jmax:=j else Jmax:=j+1;
   If Jmax-Jmin=5 then Inc(N_5[i]);
   If Ch=' ' then Jmin:=j+1;
  Until EoLn(f);
  If Not(EoF(f)) then readln(f);
 Until EoF(f);
 Close(f);
 N_lines:=i;
 Min:=21;
 For i:=1 to N_lines do
  If N_5[i]<Min then Min:=N_5[i];
 Reset(f);
 For i:=1 to N_Lines do
  begin
   readln(f,S);
   If N_5[i]>Min then writeln(f1,S);
  end;
 Close(f);
 Close(f1);
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.03.2012, 23:45   #3 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо.
Первую часть сам допер. А вот за поисковик строки спасибо большушее.
Сова вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:24.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.