Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Строки и Файл

Автор: Kalipsoo 27.12.2007 15:38

Добрый всем день! )

Суть задачи:

Составим 2 программы:

Программа А. Сформировать текстовый файл из строк введённых с клавиатуры.
Программа Б. Вывести на экран строки содержащие слово stop.

Значит я сделал так:
Программа А

rogram COD4forever;
var f:text;
b:char;
x:string[80];
Begin
assign(f, 'test.txt');
Rewrite(f);
x:='a';
b:='!';
writeln('Vvod strok');
while x<>b do
begin
readln(x);
if x<>b then writeln(f,x);
end;
close(f);
end.

Программа Б
Код
Program COD4super;
uses crt;
var f:text;
b:char;
c:integer;
x:string[80];
begin
clrscr;
Assign(f, 'test.txt');
reset(f);
While not EOF(f) do
begin
readln(f,x);
end;
While not EOF(f) do
If pos('stop',x)<>0 then
writeln(x);
close(f);
readln;
end.


Но у меня программа Б почему то не выводит строки содержащие слово стоп, а совсем ничего не выводит. Помоги пожалуйста!
Заранее спасибо smile.gif

Автор: volvo 27.12.2007 15:45

Зачем 2 цикла? В первом ты читаешь все строки из файла в одну единственную строку X... Но даже она не будет проверяться на наличие там 'stop', потому что у тебя файл прочитан полностью, и во второй цикл программа даже не зайдет, потому что сразу встретит конец файла... Вот так надо бы делать:

...
While not EOF(f) do begin
readln(f,x); { читаешь строку }
if pos('stop',x)<>0 then writeln(x); { и сразу же ее проверяешь }
end;
...


Автор: Kalipsoo 27.12.2007 17:02

Во я дурак! Такое прошляпил. Большое спасибо!
И теперь вопрос не в тему. Я в начале семестра получил задание на курсовую "Реализовать вычисление интеграла методом Чебышева". На вашем сайте мне дали ссылку на неправильно выполенную работу. Вот я хоетл бы для народа выкинуть на вашем сайте текст нормально работаюшей программы!

Заранее спасибо!

Автор: volvo 27.12.2007 17:13

Это на АлгЛибе-то неправильно выполненная работа? Ну-ну... dry.gif