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

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

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

> Сравнить два файла с точностью до слов, Помогите
FENIX
сообщение 22.12.2004 19:23
Сообщение #1


Новичок
*

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

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


Боюсь (знаю, что нарушаю - извините sad.gif ) праведного гнева модераторов, но мне СРОЧНО нужно сделать эту лабу...
Она - последняя, и если я завтра ее сдам, поставят зачет, а вот если не сдам - начнется геморрой и т.п.
Самое смешное - друг мне помог, и я ее сделал, используя массивы. Но в чертовой методичке указано, что все слова строки хранить в массиве нельзя - можно только отдельные. Как быть?

А задача вот какая:
сравнить два файла с точностью до слов (без учета неотображаемых символов и пробелов между словами). Совпадающие слова вывести в третий файл, несовпадающие слова в четвертый, а их количества на экран.

Вот текст проги, который есть на данный момент (которая работает, но могут быть траблы при сдаче):

Код
Program Lab;
var f1,f2,f3,f4 : text;
st, nd : array[1..100] of string[20];
i, j, k : byte;
maxa, maxb : byte;
ch : char;

BEGIN
i:=1;
assign(f1,'File_1.txt');
reset(f1);

While not EOF(f1) do
begin
  read(f1,ch);
  if (ch <> #13) and (ch <> ' ') then
  begin
     if ch<>#10 then
     st[i]:=st[i]+ch
  end
  else if st[i]<>'' then
  begin
     maxa:=i;
     inc(i);
  end;
end;

If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxa:=i;
close(f1);
i:=1;
assign(f2,'File_2.txt');
reset(f2);

While not EOF(f2) do
begin
  read(f2,ch);
  if (ch<>#13) and (ch<>' ') then
  begin
     if ch<>#10 then
     nd[i]:=nd[i]+ch
  end
  else if nd[i]<>'' then
  begin
     maxb:=i;
     inc(i);
  end;
end;
If (ch<>#13) and (ch<>' ') and (ch<>#10) then maxb:=i;
close(f2);

For i:=1 to maxa do
For j:=i to maxa do
If (j<>i) and (st[i]=st[j]) then st[j]:='';

For i:=1 to maxb do
For j:=i to maxb do
If (j<>i) and (nd[i]=nd[j]) then nd[j]:='';
assign(f3,'File_3.txt');
rewrite(f3);
ch:=' ';
For i:=1 to maxa do
For j:=1 to maxb do
If (st[i]=nd[j]) and (st[i]<>'') then
begin
  for k:=1 to length(st[i]) do
  write(f3,st[i][k]);
  write(f3,ch);
  st[i]:='';
  nd[j]:='';
end;
close(f3);
assign(f4,'File_4.txt');
rewrite(f4);
For i:=1 to maxa do
if st[i]<>'' then
begin
  for k:=1 to length(st[i]) do
  write(f4,st[i][k]);
  write(f4,ch);
end;
For i:=1 to maxb do
if nd[i]<>'' then
begin
  for k:=1 to length(nd[i]) do
  write(f4,nd[i][k]);
  write(f4,ch);
end;
close(f4);
END.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
FENIX
сообщение 22.12.2004 21:40
Сообщение #2


Новичок
*

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

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


2 volvo
Хм...
Программа че-то не работает правильно.

Пример 1-го файла:
Tomorrow I will go to the ULSU

2-ой файл:
Tomorrow I will not go to the ULSTU because I want sleep

3-ий файл:
Tomorrow I will ,

а не "Tomorrow I will go to the", как должно быть.

Да, кстати, мы работаем с текстовыми файлами.

Сообщение отредактировано: FENIX - 22.12.2004 21:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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