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

Найти элемент, являющийся максимальный в своей строке и минимальным в своем столбце.

25.04.2012, 07:27. Показов 2741. Ответов 9
Метки нет (Все метки)

Дана целочисленная матрица MxN. Найти элемент, являющийся максимальный в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0.
Вот что у меня получилось:
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
var
  Form1: TForm1; i,j,m,n:integer;  a:array of array of integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
m:=strtoint(edit1.Text);
n:=strtoint(edit2.Text);
setlength(a,m,n);
for  j:=0 to m-1 do
 for i:=0 to n-1 do begin
    a[i,j]:=StrToInt(stringgrid1.cells[i,j]);
                   end;
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
var imax,max,k,min,jmin,jmax,imin:integer;
 
begin
for i:=0 to m-1 do begin {идем по строкам}
max:=a[i,0]; {макс=первому элементу в строке, imax-столбец в котором}
 for j:=0 to n-1 do      {будет максимальный элемент строки}
  if a[i,j]>max then
   begin
    max:=a[i,j];    {нашли}
    imax:=i;       {запомнили столбец и строку}
    jmax:=j;
   end;
                   end;
min:=a[imax,jmax];
for i:=0 to m-1 do
if a[i,jmax]<min then
    begin
      min:=a[i,jmax];  {находим минимальный}
      imin:=i;        {запоминаем номер столбца}
    end;
if max<>min then
label1.Caption:=inttostr(a[imax,imin])  {выводим и заканчиваем поиск}
else label1.Caption:='0';                          {если нет переходим к следующему столбцу}
 {если дошли до конца и нет совпадений}
 
end;
 
end.
неправильно находит число, подскажите что не так
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2012, 07:27
Ответы с готовыми решениями:

Найти элемент матрицы, являющийся максимальным в своей строке и минимальным в своем столбце
Дана прямоугольная матрица. Найти элемент, являющийся максимальным в своей строке и минимальным в...

Найти элемент матрицы, являющийся максимальным в своей строке и минимальным в своем столбце
Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и...

Найти в матрице элемент, который min в своей строке и max в своем столбце
Ребята, помогите пожалуйста!!! Нужно в Delphi создать програму, которая будет находить в матрице...

Определить максимальный элемент массива и элемент, являющийся максимальным без учета элемента
Пожалуйста, помогите решить 2-е задачки. 1- Дан массив b, заполненный с клавиатуры. Определить...

9
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
25.04.2012, 10:08 2
Посмотри, где заканчиваешь идти по строкам. Максимальный элемент ты находишь только в последней строке. Перенеси end с 35 на 47 строку.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
25.04.2012, 12:58 3
В целях теста, масив Я заполнял рандомно(произвольно)
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
var
   max,min : integer;
  i, j, m, n: integer;
  a: array  of array of integer;
begin
m:=strtoint(edit1.Text); //кол-во строк
n:=strtoint(edit2.Text); // кол-во столбцов
 
setlength(a,m,n);
 
for  i:=0 to m-1 do
 for j:=0 to n-1 do
    a[i,j]:=random(20);
 
 Label1.Caption := 'Максимальные значения в строках';
 
  for i := 0 to m-1 do
    begin
      max := a[i, 0];
      for j := 0 to n-1 do
        if a[i, j] > max then
          max := a[i, j];
      Label1.Caption := Label1.Caption + #10 + inttostr(max);
    end;
 
  Label1.Caption := Label1.Caption + #10 + 'Минимальные значения в столбцах';
 
  for i := 0 to n-1 do
    begin
      min := a[0, i];
      for j := 0 to m-1 do
        if a[j, i] < min then
          min := a[j, i]; { нашли }
      Label1.Caption := Label1.Caption + #10 + inttostr(min);
    end;
end.
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 43
30.04.2012, 22:37  [ТС] 4
объясните как эти строки работают:
Label1.Caption := Label1.Caption + #10 + inttostr(max);
Label1.Caption := Label1.Caption + #10 + 'Минимальные значения в столбцах';
Label1.Caption := Label1.Caption + #10 + inttostr(min);
#10 - что это?
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
30.04.2012, 22:45 5
Прочти тут. Там еще много чего интересного
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 43
30.04.2012, 22:50  [ТС] 6
Цитата Сообщение от antikiler_ Посмотреть сообщение
В целях теста, масив Я заполнял рандомно(произвольно)
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
var
   max,min : integer;
  i, j, m, n: integer;
  a: array  of array of integer;
begin
m:=strtoint(edit1.Text); //кол-во строк
n:=strtoint(edit2.Text); // кол-во столбцов
 
setlength(a,m,n);
 
for  i:=0 to m-1 do
 for j:=0 to n-1 do
    a[i,j]:=random(20);
 
 Label1.Caption := 'Максимальные значения в строках';
 
  for i := 0 to m-1 do
    begin
      max := a[i, 0];
      for j := 0 to n-1 do
        if a[i, j] > max then
          max := a[i, j];
      Label1.Caption := Label1.Caption + #10 + inttostr(max);
    end;
 
  Label1.Caption := Label1.Caption + #10 + 'Минимальные значения в столбцах';
 
  for i := 0 to n-1 do
    begin
      min := a[0, i];
      for j := 0 to m-1 do
        if a[j, i] < min then
          min := a[j, i]; { нашли }
      Label1.Caption := Label1.Caption + #10 + inttostr(min);
    end;
end.
этот же алгоритм вроде немного не то делает что требуется в задачи

Добавлено через 2 минуты
Цитата Сообщение от Nutserus Посмотреть сообщение
Посмотри, где заканчиваешь идти по строкам. Максимальный элемент ты находишь только в последней строке. Перенеси end с 35 на 47 строку.
при переносе программа запускается, но про выполнении алгоритма ничего лейблу не присваивается. хотя я заполнил вручную.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
30.04.2012, 22:58 7
Цитата Сообщение от VetN81 Посмотреть сообщение
этот же алгоритм вроде немного не то делает что требуется в задачи
Согластно этому заданию
Найти элемент, являющийся максимальный в своей строке и минимальным в своем столбце.
Я сделал все правильно. На каждый столбец и на каждою строку я нашел значения. Что и требовалось...
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 43
30.04.2012, 23:16  [ТС] 8
нужно найти один элемент который одновременно максимальный в своей строке и минимальный в своем столбце
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
01.05.2012, 15:44 9
Цитата Сообщение от VetN81 Посмотреть сообщение
нужно найти один элемент который одновременно максимальный в своей строке и минимальный в своем столбце
Интересная задача оказалась...
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
procedure TForm6.Button2Click(Sender: TObject);
 
var
  min: integer;
  i, j, m, n, max,k,imin: integer;
  a: array of array of integer;
begin
  m := strtointdef(Edit1.Text, 3);
  n := strtointdef(Edit2.Text, 4);
  setlength(a, m, n);
  for i := 0 to m-1 do
    for j := 0 to n-1 do
      begin
        a[i, j] := random(20);
        StringGrid1.Cells[j, i] := inttostr(a[i , j ]);
      end;
//////////////////////////////////////////////////////////////
     for i := 0 to m - 1 do
    begin { идем по строкам }
          max := 0; { макс=первому элементу в строке, imax-столбец в котором }
          for j := 0 to n - 1 do { будет максимальный элемент строки }
            if a[i, j] > a[i, max] then
                max := j; { нашли }
 
           imin := i;
 
          for k := 0 to m - 1 do
            if a[k, max] < a[imin, max] then
                imin := k; { запоминаем номер столбца }
 
          if i = imin then
            begin
              Label1.Caption := 'элемент a[' + inttostr(imin) + ',' + inttostr(max) + ']=' + inttostr(a[imin, max]);
              exit
            end
           else
           Label1.Caption := '0';
        end;
//////////////////////////////////////////////////////////////////
 
end;
0
1 / 1 / 0
Регистрация: 25.04.2012
Сообщений: 43
02.05.2012, 18:07  [ТС] 10
antikiler_, спасибо большое. все работает. работу сдал)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2012, 18:07
Помогаю со студенческими работами здесь

Определить максимальный элемент массива и элемент, являющийся максимальным без учета этого элемента
Дан массив b, заполненный с клавиатуры. Определить максимальный элемент массива и элемент,...

Найти максимальный элемент в каждом столбце массива
Подскажите пожалуйста. Я новичек, не получается( Дан двумерный массив(во вложениях есть то, что...

В каждом столбце матрицы найти максимальный элемент
Дана матрица размера M × N. В каждом столбце матрицы найти максимальный элемент. procedure...

Найти максимальный элемент в каждом столбце массива рамерностью 30х30
НАЙТИ МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ В КАЖДОМ СТОЛБЦЕ МАССИВА РАЗМЕРНОСТЬЮ 30Х30 ЭЛЕМЕНТЫ ВВОДЯТСЯ СЛУЧАЙНЫМ...


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

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

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