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

Сортировать массив - Delphi

27.04.2011, 17:13. Просмотров 733. Ответов 5
Метки нет (Все метки)

Всем здравствуйте , подскажите код пожалуйста для того что бы преобразовать массив так, чтобы в его начале стояли элементы, стоявшие в нечетных по-зициях, а потом – элементы, стоявшие в четных позициях.
http://www.cyberforum.ru/delphi-beginners/thread1294082.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2011, 17:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировать массив (Delphi):

Сортировать массив записей по дате
Вот программа, мне чисто идею, как по дате сортировать запись, она вводится...

Массив строк: сортировать строки по алфавиту по определенной литере
задание довольно простое, сортировать строки по алфавиту по определенной...

Сортировать строку
Нужно отсортировать едит1 по алфавиту и вывести в едит2 отсортированный...

Сортировать по убыванию
вот мой код программы, как массив c отсортировать по убыванию? program...

Удалить дубли, но не сортировать
Попробовал удалить дубли так: var BuffEre:TStringList; begin ...

5
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
27.04.2011, 17:52 #2
ты не упомянул какой массив, предположу что одномерный
алгоритм примерно такой, делаешь 2 цикла
Delphi
1
2
for i:=0 to high(массив) do
  for j:=i+1 to high(массив) do
и проверяешь если текущий элемент (j) не четный то меняешь его местами с (i)
и все.
0
terwet
1 / 1 / 1
Регистрация: 16.02.2010
Сообщений: 47
28.04.2011, 17:20  [ТС] #3
Да одномерный.
подскажи мне пожалуйста , я просто не понимаю как писать.
for i:=0 to high(a) do
if a[j] mod 2 = 1 then
a[j]:=a[i]
так что ли? можешь побольше кода написать , подсказку дать
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,571
28.04.2011, 17:26 #4
Цитата Сообщение от terwet Посмотреть сообщение
подсказку дать
О_о а мое сообщение выше не подсказка?

Цитата Сообщение от terwet Посмотреть сообщение
так что ли
2 цикла
Цитата Сообщение от terwet Посмотреть сообщение
a[j]:=a[i]
сначала запоминай в переменную значение a[j] потом
a[j]:=a[i] потом a[i]:=твоя переменная
0
Arcor
4816 / 1817 / 380
Регистрация: 20.11.2009
Сообщений: 5,778
Записей в блоге: 1
28.04.2011, 17:47 #5
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const n = 5;
 
type MyArr = Array[1..n] of Integer;
 
//Вырешиваем сумму
procedure SumArr(a: MyArr);
var i: Integer;
    s: Integer;
begin
  s := 0;
  for I := 1 to n do
    begin
      s := s+a[i];
    end;
  WriteLn('Сумма эллементов массива');
  WriteLn(s);
  WriteLn('......................');
end;
 
//Находим меньшее значеие
procedure LowArr(a: MyArr);
begin
  WriteLn('Наименьший эллемент массива');
  WriteLn(a[1]);
  WriteLn('......................');
end;
 
//Находим большее значение
procedure HighArr(a: MyArr);
begin
  WriteLn('Наибольший эллемент массива');
  WriteLn(a[n]);
  WriteLn('......................');
end;
 
 
//Выводим массив на экран
procedure ExitArr(a: MyArr);
var i: Integer;
begin
  WriteLn('......................');
  WriteLn('Отсортированный массив');
  for I := 1 to n  do
    begin
      Writeln(a[i]);
    end;
  WriteLn('......................');
end;
 
//Сортируем массив
procedure SortArr(a: MyArr);
var i,j: Integer;
      x: Integer;
begin
  for I := 1 to n - 1 do
    for j := 1 to n - 1 do
      if a[j]> a[j+1] then
        begin
          x := a[j+1];
          a[j+1] := a[j];
          a[j] := x;
        end;
      ExitArr(a);
    LowArr(a);
  HighArr(a);
SumArr(a);
end;
 
//Вводим массив
procedure EditArr;
var i: Integer;
    a: MyArr;
begin
  WriteLn('Введите массив...');
  WriteLn('');
    for I := 1 to n do
      begin
        Write(i,' эллемент массива: ');
        ReadLn(a[i]);
      end;
   SortArr(a);
end;
 
//Разрешаем ввод только двум клавишам
procedure ExEd;
var x: Char;
begin
  while (x <> 'y') or (x <> 'n') do
    begin
      WriteLn('Для продолжения введите "Y" или "N" для выхода');
      ReadLn(x);
    if x = 'y' then
      EditArr
    else if x = 'n' then
      Break;
  end;
end;
 
//Программа для работы с массивом
begin
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  EditArr;
  ExEd;
end.
вот давным дано делал программу так тренировка была
0
terwet
1 / 1 / 1
Регистрация: 16.02.2010
Сообщений: 47
03.05.2011, 19:56  [ТС] #6
procedure TForm1.Button4Click(Sender: TObject);
var
i,j, k, m:integer;
tmp: integer;
begin
j:= (high(a)+1) div 2;
if odd(j)then inc(j);
k:= 0;
for i:=1 to j do
begin
m:= j+k;
if (m<=High(a)) and (not odd(i+1)) then
begin
tmp:= a[i];
a[i]:= a[m];
a[m]:=tmp;
inc(k,2)
end;
end;
stringgrid2.ColCount:=high(a)+1;
for i:=0 to high(a) do
stringgrid2.cells[i,0]:=inttostr(a[i]);
end;

вот написал , но когда число элементов нечетное то тогда неправильно считает. в чем ошибка ?
0
03.05.2011, 19:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 19:56
Привет! Вот еще темы с решениями:

Как сортировать координаты?
1. На форму поместить N точек (каждая точка помещается на форму по нажатию...

Совместить массивы и сортировать
Собственно задача: Создать из двух массивов А и В один, упорядоченный по...

Создать TObjectList и сортировать по возрасту
Добрый день. Есть два класса THuman = class Name: string; Age: ...

Сортировать текст по возрастю длины слов
Сортировать текст по возрастю длину слов


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

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

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