Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
#1

не сортируется массив - Delphi

23.09.2010, 12:27. Просмотров 553. Ответов 10
Метки нет (Все метки)

написал процедуру, которая сортирует массив: сначала четные элементы потом нечетные, и все записывается в новый массив.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure my_sort(old_arr: array of integer; new_arr: array of integer; size: integer );
var
  first, last, i: integer;
begin
  first := 0;
  last := size-1;
 
  for i:=0 to size-1 do begin
    if (old_arr[i] mod 2) = 0 then begin
      new_arr[first] :=  old_arr[i];
      inc(first);
    end ;
 
    if ((old_arr[i] mod 2) <> 0) then begin
      new_arr[last] :=  old_arr[i];
      dec(last);
    end;
 
  end;
end;
по нажатию кнопки, отсортированный массив должен вывестись на экран
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
begin
 
  SetLength(old_mas,10);
  SetLength(new_mas,10);
 
  for i:=0 to 9 do {заполнение массива}
    old_mas[i] := i;
 
  my_sort(old_mas, new_mas, 10);
 
  for i:=0 to 9 do{вывод массива}
    edit1.Text:=edit1.Text+inttostr(new_mas[i])+' ';
 
end;

Почиму выводятся одни нули?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 12:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос не сортируется массив (Delphi):

где-то ошибка не сортируется массив
не сортируется массив не по убыванию,не по возрастанию.Вопрос где накосячил....

Массив TPoint не сортируется, если процедуру переделать под X и Y - РАБОТАЕТ
Не смогу сегодня нормально спать из-за этой процедуры. Проверял много раз,...

Массив не сортируется
Здравствуйте. Программа не сортирует массив, не могу разобраться в чем...

Массив не сортируется
Прошу, помогите кто чем может :) Вроде бы данный код должен в конце...

Почему не сортируется массив?
Доброго времени суток уважаемые Форумчане,нужно отсортировать в порядке...

Почему не сортируется массив?
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

10
Dzhej-Dzhej
Заблокирован
23.09.2010, 12:31 #2
Цитата Сообщение от PointsEqual Посмотреть сообщение
procedure my_sort(old_arr: array of integer; new_arr: array of integer; size: integer );
может обьявить как
Pascal
1
procedure my_sort(var old_arr: array of integer;var new_arr: array of integer;var size: integer )
1
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 12:33  [ТС] #3
Dzhej-Dzhej, спасибо, про var вообще забыл.
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
23.09.2010, 12:42 #4
а почему он должен что-то выводить?
ты же в процедуре задаешь значение new_arr а в едит выводишь new_mas, а он пустой. Нужно вместо new_arr задавать значение new_mas

P.S.
и var тут не причем

P.S.S.
F7 рулит ))
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 12:52  [ТС] #5
anonimus, в прототипе процедуры old_arr и new_arr - формальные параметры, в самом вызове подставляются фактические параметры

Добавлено через 3 минуты
Цитата Сообщение от anonimus Посмотреть сообщение
и var тут не причем
еще как причем
0
Puporev
Модератор
54149 / 41782 / 28889
Регистрация: 18.05.2008
Сообщений: 98,331
23.09.2010, 12:54 #6
и var тут не причем
Вернитесь к изучению Паскаля. Кнопочное программирование отупляет.
1
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
23.09.2010, 12:56 #7
PointsEqual, делай как считаешь нужным, я знаю что мой вариант работает.
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
23.09.2010, 12:59  [ТС] #8
Puporev, согласен
0
Puporev
Модератор
54149 / 41782 / 28889
Регистрация: 18.05.2008
Сообщений: 98,331
23.09.2010, 13:01 #9
При правильной организации подпрограмм имена формальных параметров совсем не должны совпадать с именами фактических параметров.
0
John_Pa9JIbHuK
Добрый самаритянин
1101 / 617 / 136
Регистрация: 31.03.2009
Сообщений: 2,568
23.09.2010, 13:12 #10
anonimus, Фишка в том что когда ты передаешь массив подпрограмме ты передаешь ей лишь ее копию, в самой программе массив останется прежним, чтобы изменить сам массив нужно подпрограмме передавать указатель на него(var перед переменной или массивом), то есть теперь подпрограмма будет работать уже с адресом где находится элементы массива а не с копией. Так что это следует запомнить
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
23.09.2010, 13:13 #11
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
anonimus, Фишка в том что когда ты передаешь массив подпрограмме ты передаешь ей лишь ее копию, в самой программе массив останется прежним, чтобы изменить сам массив нужно подпрограмме передавать указатель на него(var перед переменной или массивом), то есть теперь подпрограмма будет работать уже с адресом где находится элементы массива а не с копией. Так что это следует запомнить
спасибо за пояснение, но я уже почитал про это
0
23.09.2010, 13:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2010, 13:13
Привет! Вот еще темы с решениями:

Не сортируется массив пузырьком
Не получается нормально отсортировать массив( И оператор выбора не работает,...

Массив сортируется неверно
var a: array of integer; i,j,nmin,n,c:integer; begin writeln('Введите...

Почему не сортируется массив?
using namespace std; void scan(int * mass) { for( int i = 0; i &lt; 10; i++)...

Неверно сортируется массив
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru