Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 4
1

В двумерном массиве разместить в начале положительные элементы по возрастанию, затем отрицательные по убыванию

28.11.2017, 08:44. Показов 739. Ответов 1
Метки нет (Все метки)

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
procedure TForm4.Button1Click(Sender: TObject);
var a:array of array of integer;
    b:array of array of integer;
    c,v,k,i,m,p:integer;
  e: Integer;
begin
c:=strtoint(edit1.Text);
v:=strtoint(edit2.Text);
stringgrid1.RowCount:=c+1;
stringgrid1.ColCount:=v+1;
stringgrid2.RowCount:=c+1;
stringgrid2.ColCount:=v+1;
/////ЗАПОЛНЕНИЕ ПЕРВОГО МАССИВА/////
Setlength(a,v,c);
 randomize;
   begin
   for i:=1 to c do
       StringGrid1.Cells[0,i]:=inttostr(i);
   for k:=1 to v do
       StringGrid1.Cells[k,0]:=inttostr(k);
       end;
 
   for k:=1 to v do
  for i:=1 to c do
  begin
  a[k-1,i-1]:=random(101);
  StringGrid1.Cells[k,i]:=inttostr(a[k-1,i-1]);
  end;
 /// C-кол-во строк
 /// V-кол-во столбцов
 /// V-кол-во столбцов
 /////ЗАПОЛНЕНИЕ ВТОРОГО МАССИВА/////
Setlength(b,v,c);
for i := 1 to v do
  stringgrid1.Cells[0,i]:=inttostr(i);
  for k := 1 to c do
  stringgrid1.Cells[k,0]:=inttostr(k);
 
   for i := 0 to m-1 do
    for k := 0 to m-1 do
      if a[k-1,i-1]>a[k,i]
      then begin
       p:=a[k-1,i-1];
       a[k-1,i-1]:=a[i,k];
       a[i,k]:=p;
      end;
  for i := 1 to c do
    for k := 1 to v do
      stringgrid2.Cells[k,i]:=inttostr(a[k,i]);
 
 
 
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2017, 08:44
Ответы с готовыми решениями:

Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули
Всем доброго времени суток! Большая просьба помочь написать программу. Нужно сформировать 2...

Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию
Задание: Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию....

Изменить последовательность так, чтобы в начале стояли все 0, затем отрицательные, а затем положительные элементы
Дана последовательность целых чисел х1,х2,…,хn. Изменить данную последовательность так, чтобы в...

Изменить последовательность так, чтобы в начале стояли все 0, затем отрицательные, а затем положительные элементы
Дана последовательность целых чисел х1,х2,…,хn. Изменить данную последовательность так, чтобы в...

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.11.2017, 09:27 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
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
var
  Form1: TForm1;
  a:array of array of integer;
  m,n:integer;
implementation
 
{$R *.dfm}
//создание матрицы
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
m:=strtoint(Edit1.Text);//более принято чем c,v
n:=strtoint(Edit2.Text);
randomize;
setlength(a,m,n);
StringGrid1.RowCount:=m;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=m;
StringGrid2.ColCount:=n;
for i:=0 to m-1 do
for j:=0 to n-1 do
 begin
  repeat
  a[i,j]:=-10+random(21); //и отрицательные и положительные
  until a[i,j]<>0;//ноли не нужно
  StringGrid1.Cells[j,i]:=inttostr(a[i,j]);//индексы строк и столбцов в таблицу наоборот
 end;
end;
//сортировка матрицы
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k,x:integer;
begin
//положительные вперед
k:=-1;
for i:=0 to m*n-1 do
if a[i div n,i mod n]>0 then
 begin
  inc(k);
  x:=a[i div n,i mod n];
  for j:=i downto k+1 do
  a[j div n,j mod n]:=a[(j-1)div n,(j-1)mod n];
  a[k div n,k mod n]:=x;
 end;
//сортировка положительных по возрастанию
for i:=0 to k-1 do
for j:=i+1 to k do
if a[i div n,i mod n]>a[j div n,j mod n] then
 begin
  x:=a[i div n,i mod n];
  a[i div n,i mod n]:=a[j div n,j mod n];
  a[j div n,j mod n]:=x;
 end;
//сортировка отрицательных по убыванию
for i:=k+1 to m*n-2 do
for j:=i+1 to m*n-1 do
if a[i div n,i mod n]<a[j div n,j mod n] then
 begin
  x:=a[i div n,i mod n];
  a[i div n,i mod n]:=a[j div n,j mod n];
  a[j div n,j mod n]:=x;
 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
28.11.2017, 09:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2017, 09:27
Помогаю со студенческими работами здесь

Расположить в начале положительные элементы,затем нулевые и отрицательные
Сформировать массив чисел А, а затем из него получить новый массив В таким образом, чтобы в начале...

В каждой строке переставить элементы, чтобы в начале стояли положительные элементы, затем отрицательные
В матрице размером M x N в каждой строке переставить элементы так, чтобы в начале стояли...

Расположить элементы массива так, чтобы в начале располагались все отрицательные элементы, а затем положительные.
Расположить элементы массива так, чтобы в начале располагались все отрицательные элементы, а затем...

В начале каждой строки матрицы находятся положительные элементы, затем следуют нули а в конце отрицательные элементы
дана матрица А(aij)(i,j=1,2,...,n) нужно ее преобразовать так: в начале каждой строки матрицы...


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

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