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

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

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

 
 Ответить  Открыть новую тему 
> текстовые файлы, проверка на совпадение
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


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

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


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


Новичок
*

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

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


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

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

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



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


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

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

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


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

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


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


Новичок
*

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

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


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

...

Спасибо good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

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



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


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

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

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


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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


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

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

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


теги!!!!


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


Новичок
*

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

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


блин, я же говорю, что не понимаю... я этот Паскаль только третий месяц учу...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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?

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


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


Новичок
*

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

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


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


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

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

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


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


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


Новичок
*

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

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


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


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

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

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


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


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


Новичок
*

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

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


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

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

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


Новичок
*

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

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


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


Профи
****

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

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


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


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

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

 





- Текстовая версия 29.03.2024 3:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name