IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> текстовые файлы, проверка на совпадение
katafract
сообщение 22.12.2006 22:05
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Народ, у меня последняя зачётная неделя, а я никак не могу решить вот эту задачу:

Даны два текстовых файла F u G. Определить, совпадают ли компоненты этих файлов. Если нет, то получить номер первого несовпадающего компонента. В случае, когда один из файлов имеет n компонентов(n=>0) и повторяет начало другого более длинного, то ответом должно быть n+1.
Пример:

File1.txt File2.txt
Abcd abcdefg

В этом случае ответ 5, т.к. File2 длиннее File1.

File1.txt File2.txt
Abcd abgdtrfg

А здесь ответ 3…


Вообще-то она на вид лёгкая, но у меня после 2-ух недель практики за электрорадиоизмерительными приборами голова не работает… wacko.gif
А самая главная проблема в том, что я не могу понять с чего начать: с While(not EOF(file1)) While(not EOF(file2))… Помогите, пожалуйста!!!:(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 17)
мисс_граффити
сообщение 22.12.2006 22:20
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


открыть файлы и все такое... потом:
 while not(EOF(file1)) and not(EOF(file2)) do

а еще я бы добавила флажок и выходила из этого цикла, как только встречу несовпадение.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 23.12.2006 23:22
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 22.12.2006 22:20) *

открыть файлы и все такое... потом:
 while not(EOF(file1)) and not(EOF(file2)) do

а еще я бы добавила флажок и выходила из этого цикла, как только встречу несовпадение.



А после "открыть файлы и всё такое..." поподробнее нельзя? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 24.12.2006 0:04
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


считывать компонент из первого, считывать из второго.
переменная-счетчик изменяется на 1.
сравнивать.
если равны - цикл продолжается....
если нет - пользуешься переменной-флажком, о которой я говорила.
после выхода из цикла смотришь, почему вышел: если кончились оба файла и переменная осталась истиной, значит, все совпало. если нет - выводишь значение переменной-счетчика.

полностью код писать не буду.
пробуй сам. не получится - спрашивай.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 25.12.2006 22:41
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 24.12.2006 0:04) *

...

Спасибо good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 26.12.2006 0:38
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Вот так вот подойдёт?
Program Lab;
Uses crt;
Var
F,G:text;
K,i,j:integer;
st1,st2:string;
BEGIN
Assign(F,’C:\f1.txt’);
Reset(F);
Assign(G,’C:\g1.txt’);
Reset(G);
K:=1;

While (not EOF(F)) and (not EOF(G)) do begin
Readln(f,st1);
Readln(g,st2);

For j:=1 to length(st2) do begin
If st1[i] = st2[j] then begin
K:=k+1
i:=i+1
end;
Else
Writeln(‘Позиция первого несовпадающего элемента равна’, k);
End;
End;
Close(f);
Close(g);
END.



Немного не так, как ты посоветовала, но это всё, до чего я додумался... rolleyes.gif

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



Сообщение отредактировано: мисс_граффити - 26.12.2006 0:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 26.12.2006 1:04
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


я бы все же задала начальное значение i
и еще... представь, у тебя много элементов не совпадает. что получится? вставь, что ли, break какой-нибудь после
Writeln(‘Позиция первого несовпадающего элемента равна’, k);


Сообщение отредактировано: мисс_граффити - 29.12.2006 23:43


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 26.12.2006 20:04
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Вот так вот?

Program Lab_2;
Uses crt;
Var
F,G:text;
K,i,j:integer;
St1,st2:string;
Pr:Boolean;

BEGIN
Assign(F,’C:\f1.txt’);
Reset(F);
Assign(G,’C:\g1.txt’);
Reset(G);
K:=1;
Pr:=true;

While (not EOF(F)) and (not EOF(G)) do begin
Readln(f,st1);
Readln(g,st2);

For j:=1 to length(st2) do begin
If st1[i] = st2[j] then
begin
K:=k+1;
i:=i+1;
Pr:=true;
end;
Else
begin
Pr:=false:
Writeln(‘Позиция первого несовпадающего элемента равна’, k);
End;
End;
If pr then writeln(‘Элементы файла равны, но т.к. меньший файл имеет’,k-1,’элементов, то номер первого несовпадающего элемента будет’,k);
End;
Close(f);
Close(g);
END.


Сообщение отредактировано: katafract - 29.12.2006 22:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 26.12.2006 20:07
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


теги!!!!


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 26.12.2006 22:54
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


блин, я же говорю, что не понимаю... я этот Паскаль только третий месяц учу...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 26.12.2006 22:58
Сообщение #11


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


да при чем здесь паскаль?
видишь, как в моих сообщениях код рамочкой обводится?
у тебя так же должно быть.
вместо [cоlor=...] надо писать [ code = pas] [ / code] (без пробелов).

For j:=1 to length(st2) do begin
If st1[i] = st2[j] then
begin
K:=k+1;
i:=i+1;
Pr:=true;
end;

не боишься, что st1 закончится раньше, чем st2?

Сообщение отредактировано: мисс_граффити - 26.12.2006 23:20


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 27.12.2006 23:05
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


вот об этом я тоже думал...Не поможешь? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.12.2006 11:35
Сообщение #13


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


пока не отредактируешь свое сообщение - нет.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 29.12.2006 23:01
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Отредактировал...Мне тут ещё преподаватель подсказал, что надо команду Break поставить после
Writeln(‘Позиция первого несовпадающего элемента равна’, k)
для выхода из цикла, чтобы просматривать не все элементы, а только до первого несовпадающего...это как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 29.12.2006 23:42
Сообщение #15


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


слушай, а ты читаешь, что я тебе пишу?
сообщение #7 в частности...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 30.12.2006 0:37
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 29.12.2006 23:42) *

слушай, а ты читаешь, что я тебе пишу?
сообщение #7 в частности...

Ой, извини...просто в то время до меня просто не дошло что это означает, а когда узнал о "Break" у меня просто из головы вылетело про сообщение номер 7... mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
katafract
сообщение 8.01.2007 23:29
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Мисс Граффити
Ну где же ты? cray.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 9.01.2007 0:10
Сообщение #18


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Цитата
Мисс Граффити
Ну где же ты?
В смысле ты ещё не понимаешь "это как" или чего другое? Если первое - ответ: буквально. После указанной строчки ставь команду
...
Break;
...
она прерывает выполнение цикла.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 19:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"