помогите сделать прогу
Привет всем форумчанам! вот хотел сделать прогу в паскале. И понял что я в паскале практически 0 . так вот надо чтобы при вводе слова(или ссылки) прога сканила два файла типа .txt и после выдовала, если есть ссылка в первом тексте то прога говорила верно, а если во втором то не верно.
Ах да забыл если нет искомого слова то нужно чтобы создовался 3 файл .txt и в нем сохранялась слово а в проге выдовало тект типа не такова. |
Цитата:
Попробую. Как-то так: 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. Как-то так. Попробуйте. Естественно, имена файлов и пути прописывайте как Вам надо. |
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. |
Спасибище тебе Vladimir_S Огромное. работает как надо http://www.tehnari.ru/sm/yahoo.gif http://www.tehnari.ru/sm/up.gif
|
Цитата:
|
Vladimir_S, у меня небольшой вопрос: что значит
IF IOresult<>0 THEN ReWrite(f3); Writeln(f3, S); Close(f3); END; Close(f1); Close(f2); ReadLn; UNTIL 0=1; END. Мой Паскаль пишет: неизвестный идентификатор((( |
Цитата:
Я вот подумал - может быть у Вас отключена по умолчанию опция Input/Output Checking? Попробуйте, например, после начального BEGIN поставить {$I+}. |
Я набрала программу в Турбо Паскале, она вроде работает, но зациклилась((( Что мне делать?
|
Цитата:
А чтобы не зацикливалась - уберите (или закомментарьте) из нее две строки: 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.