Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2008, 15:23   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию Типизированные файлы

Пусть даны два файла целых чисел. Определите, равны ли они.

Я решил задачу, в которой просто сформировал файл целых чисел:

Uses Crt;
var
f : file of integer;
s : string;
tmp : integer;
c : char;
begin
clrscr;
write('Введите путь и имя файла: ');
readln(s);
rewrite(f);
repeat
write('Введите число: ');
read(tmp);
write(f,tmp);
writeln('Следующее - нажмите на любую клавишу, Выход - Esc.');
c := readkey;
close(f);
end.

Теперь не знаю, как сравнить два файла целых чисел...
Xeon332 вне форума Ответить с цитированием
Старый 18.01.2008, 15:28   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Что значит термин РАВНЫ ? Как множества ? то есть все числа которые есть в первом есть и во втором ? Или числа должны быть равны в каждой позиции файла ?
alexBlack вне форума Ответить с цитированием
Старый 18.01.2008, 15:49   #3
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Полностью определить нужно - равны ли ФАЙЛЫ целиком между собой. Я думал, что создав два файла целых чисел потом их сравнивать условным оператором - это врятли способ. Вот и не знаю...
Xeon332 вне форума Ответить с цитированием
Старый 18.01.2008, 16:03   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:

var F1, F2 : file of integer;

 ...

 Assign(F1, 'file1.txt'); reset(F1);
 Assign(F2, 'file1.txt'); reset(F2);
 B := true;     // равны 
 While true do begin
     if EOF(F1) then begin
        if not EOF(F2) then B := false; 
        break
     end;
     if EOF(F2) then begin
        if not EOF(F2) then B := false; 
        break
     end;

     N1 := Read(F1);
     N2 := Read(F2);
     if N1 <> N2 then begin
        B := false;
        break
     end;

 end;

 if not B then { не равны };

 Close(F1);
 Close(F2);
Что-то вроде этого
alexBlack вне форума Ответить с цитированием
Старый 18.01.2008, 16:22   #5
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Благодарю! Если не сложно, EOF чем является? Спасибо
Xeon332 вне форума Ответить с цитированием
Старый 18.01.2008, 16:26   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

EOF() - функция, кот.возвращает true, если позиция выходит за конец файла.
alexBlack вне форума Ответить с цитированием
Старый 18.01.2008, 17:00   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот содрал из интернета.
Цитата:
Пусть даны два текстовых файла. Определить равны ли они. Равенство понимается в смысле совпадения соответствующих символов и одинакового деления на строки
Код:
var f1,f2:text;
b:boolean;
s1,s2:string;
i:integer;
begin
assign(f1,'f1.txt'); reset(f1);
assign(f2,'f2.txt'); reset(f2);
b:=true;
while not eof(f1) do
begin
readln(f1,s1); readln(f2,s2);
if length(s1)=length(s2) then
begin
for i:=1 to length(s1) do
if s1[i] < > s2[i] then b:=false;
end
else b:=false;
if not b then break;
end;
if not eof(f2) then b:=false;
close(f1);
close(f2);
if b then writeln('files is equal') else writeln('files is not equal');
end.
puporev вне форума Ответить с цитированием
Старый 27.02.2009, 19:22   #8
BadSanta
 
Регистрация: 27.02.2009
Сообщений: 3
Печаль

Цитата:
Сообщение от alexBlack Посмотреть сообщение
EOF() - функция, кот.возвращает true, если позиция выходит за конец файла.
У меня возник вопрос: с помощью какой функции можно определить символьный размер файла (для оператора For i:=1 to ... do)??? или же просто долго и нудно пользоваться repeat until eof()=false????
BadSanta вне форума Ответить с цитированием
Старый 27.02.2009, 20:15   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если нужно посчитать количество символов в текстовом файле, то можно так.
Код:
reset(f);
k:=0;
while not eof(f) do
  begin
   readln(f,s);
   k:=k+length(s);
  end;
write(k);
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типизированные файлы.Паскаль.help! ромка) Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2008 07:59
типизированные и нетипизированные файлы andrey4623 Общие вопросы Delphi 1 28.12.2007 19:09
Типизированные файлы и Delphi Polina Помощь студентам 8 12.12.2007 18:40
Типизированные файлы в C++ Builder Amateur Помощь студентам 3 12.11.2007 20:42
ПОМОГИТЕ!! Типизированные и нетипизированные файлы. Zebo Помощь студентам 1 08.06.2007 09:35