Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   помогите сделать прогу (http://www.tehnari.ru/f43/t21869/)

Dram 18.02.2009 14:53

помогите сделать прогу
 
Привет всем форумчанам! вот хотел сделать прогу в паскале. И понял что я в паскале практически 0 . так вот надо чтобы при вводе слова(или ссылки) прога сканила два файла типа .txt и после выдовала, если есть ссылка в первом тексте то прога говорила верно, а если во втором то не верно.



Ах да забыл если нет искомого слова то нужно чтобы создовался 3 файл .txt и в нем сохранялась слово а в проге выдовало тект типа не такова.

Vladimir_S 18.02.2009 16:14

Цитата:

Сообщение от Dram (Сообщение 177157)
Привет всем форумчанам! вот хотел сделать прогу в паскале. И понял что я в паскале практически 0 . так вот надо чтобы при вводе слова(или ссылки) прога сканила два файла типа .txt и после выдовала, если есть ссылка в первом тексте то прога говорила верно, а если во втором то не верно.

То есть если я правильно понял, ссылка или слово ОБЯЗАНЫ быть или в первом, или во втором файле? И если в первом, то TRUE, а во втором, то FALSE?
Попробую. Как-то так:

VAR
S:STRING;
S_L, p1, p2, i:INTEGER;
f1, f2, f3:TEXT;
Ch:Char;
BEGIN
Assign(f1, 'C:\File_1.txt');
Reset(f1);
Assign(f2, 'C:\File_2.txt');
Reset(f2);
WriteLn('Enter search string:');
ReadLn(S);
S_L:=Length(S);
p1:=0;
REPEAT
Read(f1,Ch);
IF (Ch=S[1]) AND (NOT EoF(f1)) THEN
BEGIN
i:=1;
p1:=1;
REPEAT
INC(i);
Read(f1,Ch);
IF (NOT EoF(f1)) THEN
IF S[i]<>Ch THEN p1:=0;
UNTIL (i=S_L) OR (EoF(f1)) OR(p1=0);
END;
UNTIL (p1=1) OR (EoF(f1));
IF p1=1 THEN WriteLn('TRUE');
p2:=0;
REPEAT
Read(f2,Ch);
IF (Ch=S[1]) AND (NOT EoF(f2)) THEN
BEGIN
i:=1;
p2:=1;
REPEAT
INC(i);
Read(f2,Ch);
IF (NOT EoF(f2)) THEN
IF S[i]<>Ch THEN p2:=0;
UNTIL (i=S_L) OR (EoF(f2)) OR(p2=0);
END;
UNTIL (p2=1) OR (EoF(f2));
IF p2=1 THEN WriteLn('FALSE');
IF (p1=0) AND (p2=0) THEN
BEGIN
WriteLn('No string found');
Assign(f3, 'C:\File_3.txt');
ReWrite(f3);
Writeln(f3, S);
Close(f3);
END;
Close(f1);
Close(f2);
ReadLn;
END.

Как-то так. Попробуйте. Естественно, имена файлов и пути прописывайте как Вам надо.

Dram 18.02.2009 17:07

Vladimir_S ты прости что надоедаю. прога работает поЧти правильно. но как сделать чтобы прога не заменяла FILE_3.TXT на другой с новым содержанием а добовляла новый текст и сохраняла. и прогу надо зациклить чтоб она работала снова и снова а не закрывалась

Vladimir_S 18.02.2009 17:16

Цитата:

Сообщение от Dram (Сообщение 177186)
Vladimir_S ты прости что надоедаю. прога работает поЧти правильно. но как сделать чтобы прога не заменяла FILE_3.TXT на другой с новым содержанием а добовляла новый текст и сохраняла. и прогу надо зациклить чтоб она работала снова и снова а не закрывалась

Пожалуйста:

VAR
S:STRING;
S_L, p1, p2, i:INTEGER;
f1, f2, f3:TEXT;
Ch:Char;
BEGIN
Assign(f1, 'C:\File_1.txt');
Assign(f2, 'C:\File_2.txt');
REPEAT
Reset(f1);
Reset(f2);
WriteLn('Enter search string:');
ReadLn(S);
S_L:=Length(S);
p1:=0;
REPEAT
Read(f1,Ch);
IF (Ch=S[1]) AND (NOT EoF(f1)) THEN
BEGIN
i:=1;
p1:=1;
REPEAT
INC(i);
Read(f1,Ch);
IF (NOT EoF(f1)) THEN
IF S[i]<>Ch THEN p1:=0;
UNTIL (i=S_L) OR (EoF(f1)) OR(p1=0);
END;
UNTIL (p1=1) OR (EoF(f1));
IF p1=1 THEN WriteLn('TRUE');
p2:=0;
REPEAT
Read(f2,Ch);
IF (Ch=S[1]) AND (NOT EoF(f2)) THEN
BEGIN
i:=1;
p2:=1;
REPEAT
INC(i);
Read(f2,Ch);
IF (NOT EoF(f2)) THEN
IF S[i]<>Ch THEN p2:=0;
UNTIL (i=S_L) OR (EoF(f2)) OR(p2=0);
END;
UNTIL (p2=1) OR (EoF(f2));
IF p2=1 THEN WriteLn('FALSE');
IF (p1=0) AND (p2=0) THEN
BEGIN
WriteLn('No string found');
Assign(f3, 'C:\File_3.txt');
Append(f3);
IF IOresult<>0 THEN ReWrite(f3);
Writeln(f3, S);
Close(f3);
END;
Close(f1);
Close(f2);
ReadLn;
UNTIL 0=1;
END.

Dram 18.02.2009 17:36

Спасибище тебе Vladimir_S Огромное. работает как надо http://www.tehnari.ru/sm/yahoo.gif http://www.tehnari.ru/sm/up.gif

Vladimir_S 18.02.2009 17:43

Цитата:

Сообщение от Dram (Сообщение 177191)
Спасибище тебе Vladimir_S Огромное. работает как надо http://www.tehnari.ru/sm/yahoo.gif http://www.tehnari.ru/sm/up.gif

Ну вот и славно.

ummasha 18.02.2009 21:11

Vladimir_S, у меня небольшой вопрос: что значит
IF IOresult<>0 THEN
ReWrite(f3);
Writeln(f3, S);
Close(f3);
END;
Close(f1);
Close(f2);
ReadLn;
UNTIL 0=1;
END.

Мой Паскаль пишет: неизвестный идентификатор(((

Vladimir_S 18.02.2009 21:47

Цитата:

Сообщение от ummasha (Сообщение 177248)
Vladimir_S, у меня небольшой вопрос: что значит
IF IOresult<>0 THEN
Мой Паскаль пишет: неизвестный идентификатор(((

Ну, Маша, эту уж совсем странно. IOResult (In and Out operations Result) - это, как мне всегда казалось, стандартная турбопаскалевская функция. Означает она следующее: при любой операции ввода-вывода (read, write rewrite и т.п.) эта функция возвращает 0, если операция прошла успешно, и отличный от нуля код ошибки (тип - Integer), если таковая возникла. В данной программе она используется так: делается файловая операция Append, что означает подготовку к записи в конец файла. Но эта операция корректна, естественно, только тогда, когда файл существует. Поэтому если выработался код ошибки (IOResult вернул значение, отличное от нуля), это значит, что такого файла нет, и тогда дается команда Rewrite, т.е. создать файл, подготовленный для записи. Очень удобная функция, без нее трудно.
Я вот подумал - может быть у Вас отключена по умолчанию опция Input/Output Checking? Попробуйте, например, после начального BEGIN поставить {$I+}.

ummasha 18.02.2009 22:16

Я набрала программу в Турбо Паскале, она вроде работает, но зациклилась((( Что мне делать?

Vladimir_S 18.02.2009 22:25

Цитата:

Сообщение от ummasha (Сообщение 177263)
Я набрала программу в Турбо Паскале, она вроде работает, но зациклилась((( Что мне делать?

Зациклилась она исключительно по просьбе заказчика, см. #3. Прервать можно, например, командой Ctrl+Break (если таковая клавиша есть на Вашем ноуте). Ну или в крайнем случае свернуть и остановить через диспетчер. Или систему перезагрузить.
А чтобы не зацикливалась - уберите (или закомментарьте) из нее две строки:
1. REPEAT (9-я строка сверху после двух Assign'ов)
2. UNTIL 0=1 (предпоследняя строка).


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.