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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 17:19   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Работа с файлами в Pascale

Проверьте что не так в проге Даны два файла f и g из вещественных чисел. Описать логическую функцию, проверяющую на равенство файлы f и g.
Program lab9_2;
var y:boolean;
f,g:file of real;
r1,r2:real;
name1,name2:string;
i:integer;
begin
{$I+}
assign(f,name1);
assign(g,name2);
reset(f);
reset(g);
y:=true;
if FileSize(f)=FileSize(g) then
begin
for i:=1 to FileSize(f) do
for i:=1 to FileSize(g) do
begin
read(f,r1);
read(g,r2);
if r1<>r2 then begin
y:=false;
end;
end;
end;
close(f);
close(g);
if y=true then writeln('faili ravni')
else writeln ('faili ne ravni');
readln;
{$I-}
end.
Ericnex вне форума Ответить с цитированием
Старый 22.04.2010, 17:39   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

То что бросилось в глаза
Код:
assign(f,'name1.txt');
assign(g,'name2.txt');
------
for i:=1 to FileSize(f) do
for j:=1 to FileSize(g) do
кажется так
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 22.04.2010, 17:49   #3
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Нет не совсем то у меня типизированные файлы и мне сказали что надо каким то другим специальным циклом пройти
Ericnex вне форума Ответить с цитированием
Старый 22.04.2010, 17:52   #4
Филантроп
Форумчанин
 
Аватар для Филантроп
 
Регистрация: 12.04.2010
Сообщений: 134
По умолчанию

ну во - первых не
Код:
for i:=1 to FileSize(f) do
for j:=1 to FileSize(g) do
а только
Код:
for i:=0 to FileSize(f)-1 do
во вторых
Код:
for i:=0 to FileSize(f)-1 do
begin
seek(f,i);
seek(g,i);
read(f,r1);
read(g,r2);
if r1<>r2 then begin
y:=false;break;
end;
кому нужна помощь! жду в аське и скайпе!
Филантроп вне форума Ответить с цитированием
Старый 22.04.2010, 18:08   #5
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

А циклом по j проходить не надо?
Ericnex вне форума Ответить с цитированием
Старый 22.04.2010, 18:10   #6
Филантроп
Форумчанин
 
Аватар для Филантроп
 
Регистрация: 12.04.2010
Сообщений: 134
По умолчанию

Цитата:
А циклом по j проходить не надо?
нет не надо!!!
кому нужна помощь! жду в аське и скайпе!
Филантроп вне форума Ответить с цитированием
Старый 22.04.2010, 18:13   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) гарантированая ошибка в начальном присвоении y
перед проверкой на совпадение размеров файлов.
должно быть: y := false;

2) Вам же надо написать функцию? И где она?

3) если файлы состоят из одних и тех же элементов, но эти элемерты в разном порядке, это одинаковые файлы или нет?! Если считаем, что порядок ВАЖЕН (и, следовательно, файлы неодинаковые) то:

Код:
program lab9_2;

function CheckIsFilesEquals(const Name1, Name2 : string) : boolean;
var 
  f, g: file of real;
  r1, r2: real;
  i : integer;
  y : boolean;
begin
{$I-}
  CheckIsFilesEquals := false;
  assign(f, name1);
  assign(g, name2);
  reset(f);
  if IOResult<>0 then Exit;
  reset(g);
  if IOResult<>0 then begin Close(f); Exit end;

  if FileSize(f) = FileSize(g) then
  begin
    i := 1;
    y := true; {а вот теперь считаем, что файлы одинаковые}
    while y and (i<= FileSize(f)) do begin
        read(f, r1);
        read(g, r2);
        if r1 <> r2 then 
          y := false;
        inc(i)
      end;
   CheckIsFilesEquals := y;
  end;
  close(f);
  close(g);
{$I+}
end;

begin

  if CheckIsFilesEquals('Name1.txt','Name2.txt')
          then writeln('faili ravni')
          else writeln('faili ne ravni');
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2010, 18:18   #8
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Спасибо прога работает
Ericnex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с файлами в Pascale velgelmina Помощь студентам 3 26.03.2010 23:14
работа в pascale golerka Помощь студентам 1 30.05.2009 09:39
работа с файлами С++ Rossik Общие вопросы C/C++ 1 16.05.2008 19:28
Работа с файлами Acros Помощь студентам 5 14.02.2007 18:40