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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2008, 23:36   #1
катя@90
 
Регистрация: 15.11.2008
Сообщений: 3
По умолчанию Исключить из файла слово с минимальным количеством слогов.

Пусть в некоторый файл 'Words.txt' построчно записаны слова.
Исключить из файла слово с минимальным количеством слогов.
катя@90 вне форума Ответить с цитированием
Старый 11.12.2008, 14:20   #2
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Вот алгоритм
1. Читаешь файл через
f:text; assign(f, filename)
2. Загоняешь каждое слово в массив
3. Считаешь в цикле слоги и выбираешь слово с минимальным кол-вом
4. Перебираешь массив и записываешь обратно в файл, исключаяя, найденное слово (методом rewrite, чтобы очистился файл)
knight вне форума Ответить с цитированием
Старый 11.12.2008, 14:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

можно обойтись без чтения в массив. но тогда прийдётся входной файл один раз пройтись, чтобы найти минимальное слово, а второй раз - переписывая в новый файл все слова, кроме слова с минимальным количеством слогов...

Например, так:
Код:
{
Гласных букв 10: а, у, ы, о, э, и, я, ю, ё, е }
CONST
  RusGlas : set of Char = ['а', 'у', 'ы', 'о', 'э', 'и', 'я', 'ю', 'ё', 'е'];

var f, fOut : text;
  s : string;
  i, k, KolSlog : integer;
  MinSlog, MinNumber : integer;
begin
 Assign(f,'WORDS.txt');
 Reset(f);
 MinSlog := MaxInt;
 k:=0; {счётчик слов}
 while Not Eof(f) do begin
   Readln(f,s);
   inc(k);
   if Length(s) > 0 then begin
     KolSlog := 0;
     for i:=1 to Length(s) do
       if s[i] in RusGlas then Inc(KolSlog);
     if KolSlog < MinSlog then begin
       MinSlog := KolSlog;
       MinNumber := k;
     end;
   end;
 end;

 {создаём новый файл}
 Assign(fOut, 'WORDS_2.TXT');
 Rewrite(FOut);

 {копируем все записи, кроме одного слова...}
 Close(f);
 Reset(f); {установим позицию на начало входного файла,
             будем читать WORDS.txt повторно}
 k := 0;
 while Not Eof(f) do begin
   Readln(f,s);
   inc(k);
   if k<>MinNumber then WriteLn(fOut,s);
 end;
 Close(fOut);
 Close(f);

end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключить часть Литов valerij Microsoft Office Excel 2 02.07.2008 14:33
исключить повтор в делфи murzinani Помощь студентам 4 27.05.2008 22:13
Исключить #13#10 из Length Febreze Общие вопросы Delphi 10 26.04.2008 12:52
в двухмерном массиве поменять местами столбцы с максимальным и минимальным элементами Лёха Помощь студентам 5 18.12.2007 18:12
поиск кратчайшей сортировки, с минимальным кол-вом перестановок sad8c Помощь студентам 9 14.12.2007 10:23