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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 01:58   #1
Animex
 
Регистрация: 14.08.2009
Сообщений: 9
По умолчанию Сортировка данных в файле.

Нужно отсортировать данные в файле(положительные числа поставить в начало, отрицательные в конец). Для решения данной задачи решил ввести динамический массив:
Код:
type
  TIFile = file of integer;
  procedure create(fname:string);
  var
  f:file of integer;
  a,i,n:integer;
  begin
    write('Vvedite kol-vo chisel');
    readln(n);
    assign(f,fname);
    rewrite(f);
    for i:=1 to n do
    begin
     writeln('Vvedite',' ',i,'chislo',' ');
     readln(a);
     write(f,a);

    end;
      close(f);
  end;

  function GetInf(var foi:TIFile; pos:longint):integer;
  var
  num:integer;
  begin
  seek(foi,pos);
  read(foi,num);
  GetInf:=num;
  end;

procedure sort(fname:string);
var
arr:array of integer;
f:file of integer;
buf,a,n,i,j:integer;
begin
create(fname);
n:=filesize(f);
for i:=0 to n do
arr[i]:=getinf(f,i);


end;
В последней строчке компилятор говорит, что типы не соответствуют друг другу. Не могу понять почему, ведь массив целочисленный и элементы в файле тоже.

Последний раз редактировалось Stilet; 09.12.2010 в 09:53.
Animex вне форума Ответить с цитированием
Старый 09.12.2010, 09:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Правильно говорит. Тип TIFile это уже не file of integer, а новый тип.
Меняй стратегию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.12.2010, 00:03   #3
Animex
 
Регистрация: 14.08.2009
Сообщений: 9
По умолчанию

А можно, к примеру, взять код получившегося числа и вернуть его в новую переменную уже типа integer?
Animex вне форума Ответить с цитированием
Старый 10.12.2010, 08:21   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Правильно говорит. Тип TIFile это уже не file of integer, а новый тип.
Меняй стратегию.
точно так.

для исправления именно этой ошибки достаточно поменять тип у переменной f:
Код:
procedure sort(fname:string);
var
arr:array of integer;
f:TIFile;
...
Но! Дальше будут ошибки:
1) n:=filesize(f); - переменной f Вы ничего не присвоили. Какой размер Вы оттуда надеятесь получить?

2) попытка чтения из закрытого файла (ведь в процедуре Create файл создаётся и закрывается.

может, Вам и правда изменить алгоритм? (если что, можно подсказать
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Сортировка записей в тип. файле sixxn Помощь студентам 7 10.05.2009 17:24
Сортировка и поиск прямо в файле Pord Помощь студентам 2 27.02.2009 18:48
Сортировка в текстовом файле Isthmus Паскаль, Turbo Pascal, PascalABC.NET 18 01.05.2008 20:46