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

Дана матрица С(НхМ). В каждом столбце выбрать наибольший элемент, затем среди этих чисел выбрать минимальное значение

12.05.2013, 15:10. Показов 2272. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно сама постановка задачи:
Дана матрица С[NxM].
В каждом столбце выбрать наибольший элемент,
затем среди этих чисел выбрать минимальное значение.
Напечатать номер столбца, в котором расположено выбранное число.

Проблемка заключается в том, что найденные максимальные элементы матрицы не записываются в отдельный массив и не выводится минимум из полученного нового массива в поле Label5.

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    BitBtn1: TBitBtn;
    Label3: TLabel;
    BitBtn2: TBitBtn;
    Label4: TLabel;
    Label5: TLabel;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  C: array [1..100,1..100] of integer;
  a, b, i, j, d, max,min,res: integer;
  t: array [1..100] of integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.BitBtn2Click(Sender: TObject);
  begin
     a:=StrToInt(Form1.Edit1.Text);
     b:=StrToInt(Form1.Edit2.Text);
     StringGrid1.RowCount:=a;
     StringGrid1.ColCount:=b;
     Edit1.Enabled:=false;
     Edit2.Enabled:=false;
  end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
  begin
    for i:=1 to a do
      begin
        for j:=1 to b do
          begin
            C[i,j]:=StrToInt(StringGrid1.Cells[i-1,j-1]);
          end;
      end;
 
    max:= C[1,1];           
    d:=1;
 
    for i:=1 to a do
      begin
        for j:=1 to b do
            begin
              if C[i,j]>max then
                begin
                  max:=C[i,j];
                end;
                Label4.Caption:= 'Max =   ' + IntToStr(max);
            end;
        t[d]:=max;                    
        d:=d+1;
      end;
 
      min:=t[1];          
      for d:=1 to d do
        begin
          if t[i]<min then
            begin
              min:=t[i];   
              res:=i;                            
              end;
        end;
        Label5.Caption:= 'Min =   ' + IntToStr(min);
 
        Label3.Caption:= 'Vivod:  ' + IntToStr(res-1);
  end;
 
end.
Ниже есть интерфейс, который используется в программе.
Миниатюры
Дана матрица С(НхМ).  В каждом столбце выбрать наибольший элемент,  затем среди этих чисел выбрать минимальное значение  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2013, 15:10
Ответы с готовыми решениями:

Матрица. В каждой строке выбирать минимальный элемент, затем среди этих чисел выбрать максимальный
задача такова: Дан массив A(N,M). В каждой строке выбирать минимальный элемент, затем среди этих...

В каждой строке выбрать элемент с наименьшим значением, затем среди этих чисел выбрать наибольшее.
Задана вещественная матрица размерности nxm, все элементы которой различны. В каждой строке выбрать...

В каждой строке матрицы выбрать элемент с наибольшим значением, затем среди этих чисел выбрать наименьшее
Данна действительна матрица размером n * m, все элементы которой различны. В каждой строке...

В каждой строке матрицы выбрать элемент с наименьшим значением, затем среди этих чисел выбрать наибольшее
Использование конструкторов и деструктора при проектировании пользовательского класса. Дана...

2
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
12.05.2013, 20:46 2
У тебя идет выборка наибольшего в строке, а не столбце. Так нужно.
Delphi
1
2
3
4
5
............
if C[j,i]>max then
 begin
  max:=C[j,i];
  ..........
Затем 83,85,86 строки. Почему цикл по d запущен а в качестве индекса используешь i? Вот тут и ошибка вывода минимального.
Вообще в коде много лишнего. Пробуй упрощать.
1
0 / 0 / 1
Регистрация: 12.05.2013
Сообщений: 4
15.05.2013, 21:35  [ТС] 3
И еще вопросик.
Не до конца понятно как находить минимальный среди максимальных.
Для этого надо заводить одномерный или двухмерный массив, и по какому индексу делать выборку?

Добавлено через 52 минуты
Может я что-то не до конца понял...
Вывод максимального по столбцу должен производиться через j

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
      max:= C[1,1];
      d:=1;
 
      for j:=1 to m do      
        begin
          for i:=1 to n do
            if C[j,i]> max then
            max:=C[j,i];
            t[d]:=max;  
            d:=d+1;
            Label3.Caption:= 'Max = ' + IntToStr(max);
        end;
Но если менять местами I и J ведь от этого ничего не измениться и элемент J будет рассматриваться как I, а элемент I - как J.

И как найденные максимальные элементы из матрицы занести в отдельный массив, чтобы из них выбирался минимальный?

Delphi
1
2
3
4
5
6
7
8
9
10
11
      min:=t[1];           
      for j:=1 to d do
        begin
          if t[j]< min then
          min:=t[j];    
          res:= j;                             
          Label4.Caption:= 'Min = ' + IntToStr(min);
        end;
 
        Label5.Caption:= 'OTBET : ' + IntToStr(res-1);      
end;
Правильно или нет, подскажите, пожалуйста. И еще кое-что как сделать, чтобы выводился номер столбца, в котором расположено выбранное число.
0
15.05.2013, 21:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2013, 21:35
Помогаю со студенческими работами здесь

В каждой строке матрицы выбрать элемент с наименьшим значением, затем среди этих чисел выбрать наибольшее
Помогите решить, пожалуйста. Проболел эту тему, теперь не знаю как решить.. Вот задачка: Пусть...

Массивы: в каждой строке выбрать элемент с наименьшим значением, затем среди этих чисел выбрать наибольшее
Дана действительная матрица размером nxm, все элементы которой различны. В каждой строке выбирается...

В каждой строке матрицы выбрать элемент с наименьшим значением, затем среди этих чисел выбрать наибольшее
7.Дано действительную матрицу размера n x m, все элементы которой различны. В каждой строке...

В каждой строке выбрать число с наименьшим значением, затем среди этих чисел выбрать наибольшее
II. Даны натуральные числа m, n и действительный массив размера mn, все элементы которого...


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

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