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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2013, 15:10   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Ошибки:
Код:
for i := 1 to high(ArraysInts) do
...
for i := 0 to High(ArraysInts) - 1 do
    for j := i + 1 to High(ArraysInts) do
...
asTrue:SetLength(ArraysInts,Length(ArraysInts)+100);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.11.2013, 15:26   #12
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Нет не в порядке код вызывает ошибку. Скажите как исправить
Код:
Type
  TArrayArmy=(asTrue, asFalse, asError);
Type
  TArraysInts=Array of integer;
...
Var
  ArrayMasivArmy1:Array of integer;
  IntArrayArmy:Integer;
...
Function GetArrayA(ArraysInts:TArraysInts):TArrayArmy;
Var i:Integer;
begin
  if ArraysInts[0] = -1 then
  begin
    result := asFalse;
    exit;
  end;
  for i := 0 to high(ArraysInts) do
    if ArraysInts[i] = -1 then
    begin
      result := asFalse;
      exit;
    end 
	else 
	  if ArraysInts[i] < ArraysInts[i - 1] then
      begin
        result := asError;
        exit;
      end;
  result := asTrue;
end;
Procedure Sortirovatj(ArraysInts:TArraysInts);
var
  tmp:Integer;
  i,j:Integer;
begin
  for i := 0 to High(ArraysInts) do
    for j := i+1 to High(ArraysInts) do
      if ArraysInts[i] > ArraysInts[j] then
      begin
        tmp := ArraysInts[i];
        ArraysInts[i] := ArraysInts[j];
        ArraysInts[j] := tmp;
      end;
end;

Procedure GetsArraysArmyM(ArraysInts:TArraysInts);
begin
  Case GetArrayA(ArraysInts) of
    asTrue:SetLength(ArraysInts,High(ArraysInts)+100);
	asFalse:Exit;
	asError:Sortirovatj(ArraysInts);
  end;
end;
...
Событие при начала миссии
IntArrayArmy:=0;
SetLength(ArrayMasivArmy1,101);
For i:=0 to high(ArrayMasivArmy1) do
    ArrayMasivArmy1[i]:=-1;
...
Событие при тренировки юнита
ArrayMasivArmy1[IntArrayArmy]:=aUnitID;
GetsArraysArmyM(ArrayMasivArmy1);
IntArrayArmy:=IntArrayArmy+1;
Где aUnitID возвращается ID номер юнита
Где тут ошибка. Ошибка не синтаксическая так как есть редактор который отлавливает синтаксические ошибки.
Alexandr17-10 вне форума Ответить с цитированием
Старый 17.11.2013, 15:51   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Я Вам уже перечислил исправленные строки. Они идут в том же порядке, что и у Вас в коде. Найдите их - это будет отличная тренировка
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.11.2013, 20:17   #14
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Да исправлял переделывал исправлял. Ошибок избежать удалось но сам скрипт на массивы под 1000 плохо работает. Решил поискать и нашел статью. http://ru.wikipedia.org/wiki/Быстрая_сортировка
В принципе вот рабочая сортировка
Код:
procedure sort(var ar: array of Integer; low, high: integer);
var i, j: integer;
  m, wsp: Integer;
begin
  // repeat
  i:=low; 
  j:=high; 
  m:=ar[(i+j) div 2]; // Взятие среднего опорного элемента
  repeat
    while ar[i]<m do Inc(i); 
    while ar[j]>m do Dec(j); 
    if i<=j then begin
      wsp:=ar[i]; ar[i]:=ar[j]; ar[j]:=wsp;
      Inc(i); Dec(j);
    end;
  until i>j;
  // if (j - low) < (high - i) then begin 
  if low<j then sort(ar, low, j);
  // low := i;
  //   end 
  // else begin
  if i<high then sort(ar, i, high);
  // high := j;
  // end; 
  //until low = high;
end;
как сделать так чтобы ячейки в массиве после сортировки шли не от меньшего к большему а от большего к меньшему.
Alexandr17-10 вне форума Ответить с цитированием
Старый 19.11.2013, 20:28   #15
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Знаки поменять.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 19.11.2013, 20:47   #16
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

Кажется не только знаки. Может ктонибудь сделает.
Alexandr17-10 вне форума Ответить с цитированием
Старый 19.11.2013, 20:58   #17
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

http://ru.m.wikibooks.org/wiki/Приме...рой_сортировки
Дальше надо было смотреть по ссылкам.
Смотрите реализацию на паскале.

Последний раз редактировалось ZX Spectrum-128; 19.11.2013 в 21:01.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с функциями lebrosha Помощь студентам 5 28.05.2009 20:57
помогите с функциями в паскале GaJIbI4 Помощь студентам 3 15.11.2008 00:05
Помогите разобратся с функциями на С++ ANTI Общие вопросы C/C++ 1 04.03.2008 17:12
Помогите разобраться с функциями! Rembo Общие вопросы C/C++ 4 08.02.2008 21:24