1 Востаннє редагувалося Vittorio (03.12.2013 22:10:54)

Тема: Пошук слів у файлах

Завдання програми полягає в тому, щоб вона скопіювала
з файлу F1 у файл F2 всі рядки, які не містять слова, що починаються на
задану букву. І знайшла
найкоротше слово у файлі F2.
Сам як не намагався, так і  не зміг розібратися, буду вдячний за допомогу.

2

Re: Пошук слів у файлах

Як Ви намагалися розібратись?, будь-ласка хід Ваших думок в студію (так, і велкам ту форум українських програмістів)

3

Re: Пошук слів у файлах

Хід моїх думок такий

program individl3_primer;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var f,g: text;
    s,sl: string;


begin
assign(f,'input.txt');
assign(g,'output.txt');
reset(f); rewrite(g);
write('bykva: '); readln(sl);
while not (eof(f)) do
      begin
      readln(f,s);
      if (pos(' '+sl+' ',s)<>0)
         or (copy(s,1,length(sl)+1)=sl+' ')
            or (copy(s,length(s)-length(sl),length(sl)+1)=' '+sl)
               then writeln(g,s);
      end;

close(f);
close(g);
readln;
end.

Код потрібно брати у теги [ code ]

4

Re: Пошук слів у файлах

while not (eof(f)) do
      begin
      readln(f,s);
      if (pos(' '+sl+' ',s)<>0)
         or (copy(s,1,length(sl)+1)=sl+' ')
            or (copy(s,length(s)-length(sl),length(sl)+1)=' '+sl)
               then writeln(g,s);
      end;
Ось ця частина у мене зроблена так, що программа шукає і копіює ті рядки в яких є задане слово, я зміг зробити тільки так, хоча мені і потрібно щоб було навпаки і не по слову, а за заданою буквою.

Код потрібно брати у теги [ code ]

5

Re: Пошук слів у файлах

Ну по-перше беріть код у тег code
по друге, я б рекомендував Вам замість монструозної ідеї

if (pos(' '+sl+' ',s)<>0)
         or (copy(s,1,length(sl)+1)=sl+' ')
            or (copy(s,length(s)-length(sl),length(sl)+1)=' '+sl)
               then writeln(g,s);

використовувати: Розбиття на слова, розбиття на рядки
На рядки розбити досить легко - 0A0D (або crlf),
а слова то там всі знаки, що не є буквами та цифрами - ( ord('a')...ord('Z') ) (це стосується лише латинниці, щодо кириллиці - подивіться діапазон самі
Після чого, можно вже робити відбір чи копіювати, чи не копіювати

6 Востаннє редагувалося vitia444 (03.12.2013 22:44:31)

Re: Пошук слів у файлах

assign(F1,'input.txt');
assign(F2,'output.txt');
reset(F1);
rewrite(F2);
len:=255;
while not(eof(F1)) do
  begin
  readln(F1,str);
  if word_in_str(letter,str) then 
    begin
    writeln(F2,str);
    len:=min(len,len_of_most_short_word(str));
    end;

  end;

close(F1);
close(F2);

1. сам на Паскалі не писав 2 роки, і код зверху написаний мною напряму
2. це написана відповідь на ваше питання, але лише шаблоном, оскільки на мою думку ваше питання мало б містити питання щодо написання тих двох функцій вище, а не тупо умова задачі, тупо за вас програму будуть писати лише за певну винагороду.

7

Re: Пошук слів у файлах

Я не зовсім зрозумів, але зараз спробую таким способом.

8

Re: Пошук слів у файлах

Можна в цій темі задати ще питання по іншій программі?

9

Re: Пошук слів у файлах

В цій - ні, створіть нову

10

Re: Пошук слів у файлах

думаю так, якщо вона стосується цієї теми

11

Re: Пошук слів у файлах

Якщо усі слова розділені як мінімум пробілом, то знайти слово, що починається наприклад на "A" досить просто: pos(' A', s) видасть число відмінне від нуля. Що до пошуку найкоротшого слова, то тут треба організувати цикл по символах рядка, і порівнювати кожен із них з пробілом. Якщо знайшли пробіл, то запам'ятовуєте поточну позицію, порівнюєте з попередньою та вираховуєте довжину слова.