0 / 0 / 0
Регистрация: 21.03.2011
Сообщений: 10
1

Двумерный динамический массив отсортировать по возрастанию

04.04.2011, 20:11. Показов 3041. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста.....в массивах плохо понимаю(((......нужно отсортировать двумерный динамический массив по возрастанию......дополнительных структур заводить нельзя

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
type tmas=array of array of integer;
var
i,j,c,d:integer;
 
procedure vvod(var a:tmas);
var i,j:integer;
begin
for i:=low(a) to high(a) do
for j:=low(a[i]) to high(a[i]) do
a[i,j]:=random(10);
end;
 
procedure vivod(var a:tmas);
var i,j:integer;
begin
for i:=low(a) to high(a) do
begin
for j:=low(a[i]) to high(a[i]) do
write(a[i,j]:4);
writeln;
end;
end;
 
Procedure sort(a:tmas);
var i,j,c,d,min,k1,k2,z:integer;
 
begin
 
for z := 0 to (high(a)*high(a[i])) do
for i := 0 to high(a) do
for j := 0 to high(a[i]) do
begin
 
 
if (j<>high(a[i])) then begin
if a[i,j+1]<a[i,j] then
begin
min:=a[i,j+1];
a[i,j+1]:=a[i,j];
a[i,j]:=min;
end;
  end
 
 else
     if (a[i+1,j]<a[i,j])and(i<>high(a)) 
      begin
       min:=a[i+1,1];
       a[i+1,1]:=a[i,j];
       a[i,j]:=min;
      end;
    end;
  end;
 
 
var a:tmas;
min,m,n,k1,k2,z:integer;
 
begin
randomize;
writeln('vvedite n:');
readln(n);
writeln('vvedite m:');
readln(m);
SetLength(a,n,m);
vvod(a);
vivod(a);
readln;
sort(a);
vivod(a);
readln;
writeln('min=', min, 'nomer=',k1,k2);
readln;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2011, 20:11
Ответы с готовыми решениями:

Отсортировать пузырьком двумерный динамический массив по возрастанию элементов в строках
Здравствуйте! Такая проблема. Мне нужно отсортировать двумерный динамический массив по возрастанию...

Отсортировать динамический массив по возрастанию
Отсортировать динамический массив по возрастанию. Помогите, плз

Отсортировать двумерный динамический массив
Здравствуйте Ребята!Помогите кто разбирается Задание отсортировать двумерный динамический массив...

Создать случайный динамический массив и отсортировать по возрастанию
Помогите пожалуйста исправить ошибку! нужно создать случайный динамический массив и отсортировать...

4
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.04.2011, 21:03 2
Можно так сделать.

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
procedure TForm1.Button2Click(Sender: TObject);
var a:array of array of integer; //динамический массив
    i,j,k,x:integer;
begin
Setlength(a,m,n);  //выделяем память под массив
for i:=0 to m-1 do  //счет идет с ноля
for j:=0 to n-1 do
a[i,j]:=StrToInt(StringGrid1.Cells[j,i]);//строки и столбцы в матрице и таблице наоборот
for k:=1 to n*m do  {повторяем сколько элементов в матрице}
for i:=0 to m-1 do
for j:=0 to n-1 do
   begin
    if j<>n-1 then {если элемент в строке не последний}
      begin
       if a[i,j+1]>a[i,j]
       then
        begin  {обмен элементов}
         x:=a[i,j+1];
         a[i,j+1]:=a[i,j];
         a[i,j]:=x;
        end;
      end
    else if (i<>m-1)and(a[i+1,0]>a[i,j]) {если строка не последняя}
     {меняем первый элемент в следущей строке с последним элементом в текущей строке}
    then
      begin  {обмен элементов}
         x:=a[i+1,0];
         a[i+1,0]:=a[i,j];
         a[i,j]:=x;
       end;
   end;
for i:=0 to m-1 do //заносим в новую таблицу тоже наоборот
for j:=0 to n-1 do
StringGrid2.Cells[j,i]:=IntToStr(a[i,j]);
end;
1
0 / 0 / 0
Регистрация: 21.03.2011
Сообщений: 10
04.04.2011, 23:12  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
for i:=0 to m-1 do //счет идет с ноля for j:=0 to n-1 do a[i,j]:=StrToInt(StringGrid1.Cells[j,i]);//строки и столбцы в матрице и таблице наоборот


спасибо большое))
но немного не понятны выше написанные строки...((
просто нужно сделать в консольном режиме......
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.04.2011, 06:42 4
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
type tmas=array of array of integer;
procedure vvod(var a:tmas);
var i,j:integer;
begin
for i:=low(a) to high(a) do
for j:=low(a[i]) to high(a[i]) do
a[i,j]:=random(50);
end;
procedure vivod(var a:tmas);
var i,j:integer;
begin
for i:=low(a) to high(a) do
 begin
  for j:=low(a[i]) to high(a[i]) do
  write(a[i,j]:4);
  writeln;
 end;
end;
Procedure sort(var a:tmas;x,y:byte); //укажем реальный размер матрицы
var i,j,z,min:integer;
begin
for z := 1 to x*y do
for i := 0 to high(a) do
for j := 0 to high(a[i]) do
 begin
  if j<>high(a[i]) then
   begin
    if a[i,j+1]<a[i,j] then
      begin
        min:=a[i,j+1];
        a[i,j+1]:=a[i,j];
        a[i,j]:=min;
      end;
  end
 else
  if (i<>high(a))and(a[i+1,0]<a[i,j])then
      begin
       min:=a[i+1,0];
       a[i+1,0]:=a[i,j];
       a[i,j]:=min;
      end;
 end;
end;
var a:tmas;
    n,m:integer;
begin
randomize;
writeln('vvedite n:');
readln(n);
writeln('vvedite m:');
readln(m);
SetLength(a,n,m);
vvod(a);
vivod(a);
readln;
sort(a,m,n);
vivod(a);
readln;
//writeln('min=', min, 'nomer=',k1,k2);
end.
1
0 / 0 / 0
Регистрация: 21.03.2011
Сообщений: 10
13.04.2011, 18:18  [ТС] 5
спасибо большое))))
0
13.04.2011, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2011, 18:18
Помогаю со студенческими работами здесь

Отсортировать двумерный массив по возрастанию
Как отсортировать массив по возрастанию? Сортировка строки, затем столбца. Есть Array.Sort , но это...

Отсортировать двумерный массив по возрастанию?
Дан двумерный массив размерностью NxM, состоящий из целых элементов со значениями в диапазоне от...

Отсортировать двумерный массив по убыванию и по возрастанию
1. Заполнить двумерный массив из 10 целых чисел, вводя их значения с клавиатуры. Затем вывести все...

Отсортировать двумерный массив по возрастанию по строкам
нужно отсортировать двумерный массив по возрастанию по строкам где ошибка for(i=0;i&lt;3;i++) {...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru