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

Массив: Строку с наименьшей суммой элементов поменять местами со столбцом, имеющим тот же номер

09.03.2013, 00:27. Показов 1226. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Суть такова, дан вещественный массив Anxn . Нужно строку с наименьшей суммой элементов поменять местами со столбцом, имеющим тот же номер.
Таблицу заполнил, наименьшую сумму нашел, но как поменять местами строку и столбец не могу додуматься.
Буду весьма благодарен.


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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ComCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    UpDown1: TUpDown;
    Edit1: TEdit;
    RadioGroup1: TRadioGroup;
    Button1: TButton;
    Label1: TLabel;
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
    procedure RadioGroup1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure Numerac;
var n,i:integer;
begin
n:=StrToInt(Form1.Edit1.Text);
 for i:=1 to n do begin
   Form1.StringGrid1.cells[i,0]:=IntToStr(i+1);
  end;
  Form1.StringGrid1.cells[n,0]:='Sum';
 
end;
 
 
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var n,i:integer;
begin
 
 with StringGrid1 do                     //отчистка таблицы
    for i:=1 to ColCount do
    Cols[i].Clear;
  with StringGrid1 do                     //отчистка таблицы
    for i:=1 to RowCount do
    Rows[i].Clear;
 
n:=StrToInt(Edit1.Text);                 //размер таблицы
StringGrid1.ColCount:=n+2;
StringGrid1.RowCount:=n+2;
 
Numerac;
end;
 
procedure TForm1.RadioGroup1Click(Sender: TObject);
var i,n,y:Integer;
begin
n:=StrToInt(Edit1.Text);
 Randomize;                                //рандом
 if RadioGroup1.ItemIndex=1                //если отмечен 1, то
  then begin
   for i :=1 to n-1 do
   for y :=1 to n do
     begin
      StringGrid1.Cells[i,y]:= IntToStr(Random(50));
     end;
  end
  else
   begin
    with StringGrid1 do
    for i:=1 to ColCount-1 do
    Cols[i].Clear;                              //отчистка таблицы
   end;
 
 Numerac;
end;
 
 
 
procedure TForm1.FormActivate(Sender: TObject);
begin
 Numerac;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var c,r:Integer;  //номер колонки и строки таблицы
  s:Integer;    //всего медалей у команды
  i,j,y:Integer;    //номер строки. используется во время сортировки
  n:Integer;
  min:integer;
   ar:array[1..10] of Integer;
begin
  n:=StrToInt(Edit1.Text);
   for r:=1 to StringGrid1.rowcount do
  begin
     s:=0;
    for c:=1 to n do
 
      if StringGrid1.Cells[c,r] <> ''then
        s:=s+StrToInt(StringGrid1.Cells[c,r])
      else
        StringGrid1.Cells[c,r]:='0';
     StringGrid1.cells[n,r]:=IntToStr(s);
     s:=0;
  end;
 
 
  for i :=1 to n do
  ar[i]:=StrToInt(StringGrid1.Cells[n,i]);
 
  min:=1;
  for i:=2 to n do
    if ar[i]<ar[min] then min:=i;
  Label1.Caption:='Минимальный элемент массива: '
                  +IntToStr(ar[min])+#13+
                   'Номер элемента: '+IntToStr(min);
 
 
 
 
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2013, 00:27
Ответы с готовыми решениями:

Найти строку, содержащую максимальную сумму элементов, и поменять местами со столбцом, имеющим тот же номер
до 29 нужно сделать, а я не понимаю дан двумерный массив целых чисел, размера nxn. найти строку,...

Найти строку, содержащую наибольшую сумму элементов и поменять ее со столбцом имеющим тот же номер
Дан двумерный массив размерностью x,n Найти строку,содержащую наибольшую сумму элементов и...

Найти столбец с содержащий наибольшее количество кратных 3 элементов, и поменять его местами со столбцом, имеющим тот же номер
Заполнить двумерный числовой массив А(6, 6) целыми числами. Найти столбец с содержащий наибольшее...

Поменять местами строку матрицы с наименьшей суммой элементов со строкой с наибольшей суммой элементов
Помогите плиз решить несколько задас на преобразование матриц на С++ 1.В действительной матрице...

1
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.03.2013, 11:22 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
procedure TForm1.Button1Click(Sender: TObject);
var a:array of array of real;
    n,i,j,k,m:integer;
    sm,mn,x:real;
begin
randomize;
n:=strtoint(edit1.Text);
stringgrid1.ColCount:=n;
stringgrid1.RowCount:=n;
stringgrid2.ColCount:=n;
stringgrid2.RowCount:=n;
setlength(a,n,n);
mn:=0;
k:=0;
for i:=0 to n-1 do
for j:=0 to n-1 do
 begin
  a[i,j]:=10*random;
  stringgrid1.Cells[j,i]:=floattostrF(a[i,j],ffFixed,6,2);
  if i=0 then mn:=mn+a[i,j];//найдем сумму в 0 строке, она пока мин
 end;
//найдем сумму меньше
for i:=1 to n-1 do
 begin
  sm:=0;
  for j:=0 to n-1 do
  sm:=sm+a[i,j];
  if sm<mn then
   begin
    mn:=sm;
    k:=i;
   end;
 end;
edit2.Text:='Минимальная сумма в строке '+inttostr(k+1)+
             ' ='+floattostrF(mn,ffFixed,6,2);
for i:=0 to n-1 do
 begin
  x:=a[i,k];
  a[i,k]:=a[k,i]; //обменяем строку и столбец
  a[k,i]:=x;
 end; 
for i:=0 to n-1 do
for j:=0 to n-1 do
stringgrid2.Cells[j,i]:=floattostrF(a[i,j],ffFixed,6,2)
end;
0
09.03.2013, 11:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2013, 11:22
Помогаю со студенческими работами здесь

Поменять местами строку с наименьшей суммой элементов и столбец с наибольшей
В заданном целочисленном массиве Ann поменять местами строку с наименьшей суммой элементов и...

Найти столбец с наибольшей суммой элементов и поменять его местами со строкой, имеющей тот же номер
Заполнить двумерный числовой массив А целыми числами. Найти столбец с наибольшей суммой элементов и...

Двумерный массив: поменять местами столбец с минимальной суммой элементов столбца с первым столбцом массива
3. Дан двумерный массив размером n x m. Поменять местами столбец с минимальной суммой элементов...

Поменять местами диагональ а(0,0)-а(4,4) матрицы со столбцом с найменьшей суммой элементов
Програма динамічно виділяє пам’ять для двомірного масиву. Кількість рядків та стовпців в масиві...


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

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

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