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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2013, 22:01   #1
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию Внешняя сортировка (естественное слияние)

В этой строке выдает ошибку о том, что оператор, не применим к этому типу операнда
Код:
if a[i,i]<a[i+1,i+1] then
Собсно условие: в текстовом файле находятся строки (не более 30). Отсортировать файл в порядке возрастания длин строк.
Код:
program zad1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  n=4;
type
  mas=array [1..n] of integer;
  matr=array [1..n,1..n] of mas;
  tfile=file of matr;
var
  a:matr;
  i,j,c:integer;
  f:tfile;
  b:mas;
begin
  assign(f,'C:\text\fil.txt');
  reset(f);
  rewrite(f);
  while not eof(f) do
    begin
      if i<=n then
        for i:=1 to n do
          if a[i,i]<a[i+1,i+1] then
            begin
              c:=a[i+1,i+1];
              a[i+1,i+1]:=a[i,i];
              a[i,i]:=c;
              write(f,b[i]);
            end
          else
      writeln('error');
  end;
  close(f);
end.
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 21.04.2013, 22:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, какое отношение заголовок темы имеет к решаемой задаче?!

во-вторых, формально, ответ на ваш вопрос такой
Цитата:
Код:
if a[i,i]<a[i+1,i+1] then
на эту строчку Delphi резонно ругается, т.к. элементами двухмерного массива A являются МАССИВЫ
т.е. нужно записывать a[i,j][ИндексМассива] , a[i+1,i+1][ИндексМассива]

в-третьих,
Цитата:
Код:
tfile=file of matr;
Вы уверены, что Ваш fil.txt является двоичным файлом трёхмерных матриц?!
мне интуиция подсказывает, что у вас обычный текстовый файл, что абсолютно не соответствует вашему описанию файла!

в чётвертых, Вы сразу после открытия файла его стираете командой rewrite...


Цитата:
Собсно условие: в текстовом файле находятся строки (не более 30). Отсортировать файл в порядке возрастания длин строк.
пишу код прямо на форуме, без проверки, да и решение задачи исключительно "в лоб":

Код:
rogram zad1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const MasCountString = 30;
var
  sMas:array[1..MasCountString] of string;
  s : string;
  i,j,n:integer;
  f:TextFile;
begin
  {чтение файла в массив}
  assign(f,'C:\text\fil.txt');
  reset(f);
  n:=0;
  while Not EOF(f) and (n<MasCountString) do begin
     Inc(n);
     ReadLn(f, sMas[n]);
  end;
  CloseFile(f);
  
  {сортировка массива строк по длинам строк}
   for i:=1 to n-1 do
     for j:=i+1 to n do
     begin
       if Length(sMas[i])>Length(sMas[j]) then
        begin
         s:=sMas[i];
         sMas[i]:=sMas[j];
         sMas[j]:=s;
        end;
     end;
 
 {запись отсортированного файла в исходный файл}
 Rewrite(f); {стираем == перезаписываем файл}
 for i:=1 to n do WriteLn(f, sMas[i]);
 CloseFile(f);

end. {конец программы}

Последний раз редактировалось Serge_Bliznykov; 21.04.2013 в 22:24.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2013, 08:09   #3
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

Спасибо за помощь. Я немного нуб в программировании(
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внешняя сортировка(естественное слияние) (Нафаня) Помощь студентам 2 07.04.2013 15:57
Внешняя сортировка. Естественное слияние. Fireblade-fan Помощь студентам 3 30.03.2012 20:18
Естественное слияние Sparky Помощь студентам 0 31.05.2010 19:09
С++ Естественное двухпутёвое слияние Dobray Помощь студентам 2 23.12.2009 16:13
Естественное слияние в массивах Virus-Haker Помощь студентам 2 07.02.2008 13:40