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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2007, 00:12   #1
RECREATOR
Пользователь
 
Регистрация: 29.11.2007
Сообщений: 26
По умолчанию Ошибка в программе. Массивы

Код:

var
  Arr: array [1..n] of Integer;
  I, MaxIndex, MaxElementIndex, Temp: Integer;
begin
  MaxIndex := n;
  while MaxIndex > 1 do
  begin
    MaxElementIndex := 0;
    for I := 1 to MaxIndex do
      if Arr[I] > Arr[MaxElementIndex] then
        MaxElementIndex := I;
    if MaxIndex <> MaxElementIndex then
    begin
      Temp := Arr[MaxIndex];
      Arr[MaxIndex] := Arr[MaxElementIndex];
      Arr[MaxElementIndex] := Temp;
    end;
    Dec(MaxIndex):
  end;
end;
RECREATOR вне форума Ответить с цитированием
Старый 21.12.2007, 00:25   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Код:
Arr: array [1..n] of Integer;
И чему равно n ? Надо или дописать раздел констант...
Const n = 10; ...... или вместо n написать везде число.

Код:
    end;   
    Dec(MaxIndex):   
  end;   
end;
После Dec(MaxIndex): нкдо поставить ;
А после последнего End нужна точка...

Итого:
Код:
const n = 10;
var
  Arr: array [1..n] of Integer;
  I, MaxIndex, MaxElementIndex, Temp: Integer;
begin
  MaxIndex := n;
  while MaxIndex > 1 do
  begin
    MaxElementIndex := 0;
    for I := 1 to MaxIndex do  
      if Arr[i] > Arr[MaxElementIndex] then
        MaxElementIndex := I;
    if MaxIndex <> MaxElementIndex then  
    begin
      Temp := Arr[MaxIndex];
      Arr[MaxIndex] := Arr[MaxElementIndex];
      Arr[MaxElementIndex] := Temp;
    end;
    Dec(MaxIndex);
  end;
end.
АДД: 30 сек работы с компилятором.....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 21.12.2007, 00:52   #3
RECREATOR
Пользователь
 
Регистрация: 29.11.2007
Сообщений: 26
По умолчанию

Const N=100
var x: ARRAY [1..N] OF REAL

Упорядочить массив Х по неубыванию (т.е переставить его элементы так, чтобы для всех К выполнялось х(к)<=х(к+1) используя следующий алгоритм сортировки(упорядочивания): сортировка выбором: отыскивается максимальный элемент и переносится в конец массива; затем этот метод применяется ко всем элементам массива кроме последнего(он уже находитсяна своем окончательном месте)
RECREATOR вне форума Ответить с цитированием
Старый 21.12.2007, 11:36   #4
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Э-э-э-э-э... Массив то незаполнен, какие вычисления могут быть в пустом массиве?
Я встречал такое описание массива: var ARR:array of array of integer; - это массив без определения кол-ва элементов.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 21.12.2007, 11:57   #5
Dunpeal
Пользователь
 
Регистрация: 16.11.2006
Сообщений: 28
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
const n=50;
var Arr: array [1..n] of Integer;
    MaxIndex,i,temp:integer;
begin
  randomize;
  for i:=1 to n do
    begin
      Arr[i]:=random(300);
      Label1.Caption:=Label1.Caption+' '+IntToStr(Arr[i]);
    end;
  MaxIndex:=n;
  while MaxIndex>1 do
    begin
    for i:=MaxIndex downto 1 do
      if Arr[MaxIndex]<Arr[i] then
        begin
          temp:=Arr[MaxIndex];
          Arr[MaxIndex]:=Arr[i];
          Arr[i]:=temp;
        end;
      dec(MaxIndex);
    end;
  for i:=1 to n do
    Label2.Caption:=Label2.Caption+' '+IntToStr(Arr[i]);
end;
Label для проверки, в первом - оригинальный массив, во втором - уже отсортированный
Код получился почти один в один, но у меня хоть работает!
Dunpeal вне форума Ответить с цитированием
Старый 21.12.2007, 12:13   #6
Dunpeal
Пользователь
 
Регистрация: 16.11.2006
Сообщений: 28
По умолчанию

SunKnight
var ARR:array of array of integer; - это описание двумерного динамического массива...
Кстати да. Чтобы не ограничивать пользователя можно ввести одномерный динамический массив
Код:
var ARR:array of integer;
И при вводе нового элемента увеличивать его размерность
Код:
i:=i+1;
SetLength(ARR,i);
i-количество элементов массива.
Dunpeal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе на рекурсию vitekbest Помощь студентам 13 14.06.2008 20:54
Подскажите, где в программе ошибка gamer123 Паскаль, Turbo Pascal, PascalABC.NET 3 25.02.2008 03:09
Помогите, ошибка в программе. делфи Absent Помощь студентам 5 18.12.2007 17:36
Бинарный поиск в 1мерном массиве, ошибка в программе из книги ILDAR@GIZmo Помощь студентам 4 02.12.2007 22:22
Ошибка в программе RoadTrain Общие вопросы Delphi 5 24.10.2007 22:16