Помощь - Поиск - Пользователи - Календарь
Полная версия: Текстовый файл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
LeoDaVinci
Как вывести на экран те строки текстого файла, которые сдержат данное слово?

procedure Vivod(var f:tf);
var
  x,s:st;
begin
  reset(f);
  writeln('Vvedite slovo:');
  readln(s);
  while not EOF(f) do
  [Вот тут у меня ступор 
] 
  read(f,x);
  write(x);

  closefile(f);
end;


М
теги...
мисс_граффити

Bokul

procedure Vivod(var f:tf);// что за тип? text?
var x,s:st;// string?
begin
  reset(f);//файловою переменную надо сначала связать с файлом через assign (если ты это еще не сделал)
  writeln('Vvedite slovo:');
  readln(s);
  while not EOF(f) do begin
     readln(f,x);
     if pos(s,x)<>0 then
        writeln(x);
  end;
closefile(f);//на Делфи пишешь?
end;

klem4
Bokul, слово "ром", строка "паром"
...
Perfez
Цитата(klem4 @ 24.02.2007 21:07) *

Bokul, слово "ром", строка "паром"
...

А что?Разве POS не сработает? blink.gif
Bokul
Точно, давно не программировал..

LeoDaVinci, тогда придется разбивать строку на слова и проверить каждое с них на совпадение, хотя это все можно делать параллельно. Такие темы поднимались десятки раз, если не сотни. Поищи по форуму, будут вопросы - задавай, Разбиение на слова. Все способы. - для старта.

Добавлено через 1 мин.
Цитата
А что?Разве POS не сработает?

Как раз и сработает, а не надо..

Добавлено через 1 мин.
Цитата
Как вывести на экран те строки текстого файла, которые сдержат данное слово?

Хотя, может это и надо? Нигде речь о словах не идёт..
LeoDaVinci
Типы все объявлены, ошибок программа не выдаёт. Файловая переменная связана с файлом.

Вопрос вызывал "кусок", определяющий входит ли данное слово в строку smile.gif

Вставил в программу недостающую часть. Без вывода чего-либо, консоль закрывается :\
readln; в конце есть.

Добавлено через 2 мин.
Спс за помощь.
Буду разбираться.
Bokul
Цитата
Вставил в программу недостающую часть. Без вывода чего-либо, консоль закрывается :\

Полный код, тестовый файл, вводимое слово..
LeoDaVinci
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,

type
  tf=textfile;
  st=string[30];

procedure Sozd(var f:tf);
var
  h:char;
  x:st;
begin
  rewrite(f);
  repeat
    writeln('Vvedite sroku:');
    readln(x);
    writeln(f,x);
    writeln('Prodolzhit? Y/N');
    readln(h);
  until h in ['n','N'];
  closefile(f);
end;

procedure Vivod(var f:tf);
var
  x,s:st;
begin
  reset(f);
  writeln('Vvedite slovo:');
  while not EOF(f) do
  begin
    readln(f,x);
    if pos(s,x)<>0 then
      writeln(x);
  end;
  close(f);
end;

var
  textf:tf;
  slovo:st;
  sn,sn1:shortstring;
begin
  sn:='d:\temp\ka.txt';
  assign(textf,sn);
  Sozd(textf);
  Vivod(textf);
  readln(sn1);
end.
Bokul

procedure Vivod(var f:tf);
var
  x,s:st;
begin
  reset(f);
  writeln('Vvedite slovo:');
  readln(s);// <--- забыл это
  while not EOF(f) do
  begin
    readln(f,x);
    if pos(s,x)<>0 then
      writeln(x);
  end;
  close(f);
end;




var
  textf:tf;
  slovo:st;
  sn,sn1:shortstring;
begin
  sn:='d:\temp\ka.txt';
  assign(textf,sn);
  Sozd(textf);
  Vivod(textf);
  readln;// без "(sn1)" - зачем использовать лишнею переменную..
end.

LeoDaVinci
Всё что нужно заработало.
Всем спасибо blum.gif smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.