Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2015, 12:24   #1
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию Дана матрица A(N, M). Найти ее наибольший элемент и номера строки и столбца, на пересечении которых он находится.

Дана матрица A(N, M). Найти ее наибольший элемент и номера строки и столбца, на пересечении которых он находится.
Код:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    StringGrid1: TStringGrid;
    Label4: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
    procedure SpinEdit2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var max,n,m,i,j,ii,jj:integer;
A:array[1..30,1..30] of Integer;
begin
N := SpinEdit1.Value; //количество строк
M := SpinEdit2.Value; //количество столбцов
StringGrid1.RowCount := N;
StringGrid1.ColCount := M;
for i:=1 to n do 
  for j:=1 to m do read(A[i,j]);
 max:=A[1,1]; ii:=1; jj:=1;
 for i:=1 to n do 
  for j:=1 to m do 
   if A[i,j]>max then
    begin 
     max:=A[i,j];
     ii:=i;
     jj:=j;
    label4.Caption:=('Максимальный элемент матрицы-'+IntToStr(max)+' находится на пересечении '+IntToStr(ii)+'-й строки и '+IntToStr(jj)+' столбца');
end;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
StringGrid1.RowCount := SpinEdit1.Value;
end;

procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
StringGrid1.ColCount := SpinEdit2.Value;
end;
Ввожу числа нажимаю кнопку и оно мне выдает ошибку...
Помогите,пожалуйста,немного доработать программу...

Последний раз редактировалось GalaiAnton; 05.04.2015 в 12:26.
GalaiAnton вне форума Ответить с цитированием
Старый 05.04.2015, 12:36   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Случайно не в этой строке?
Код:
for j:=1 to m do read(A[i,j]);
Возможно так?
Код:
for i:=1 to n do 
  for j:=1 to m do StringGrid1.Cells[j, i];
А зачем
Код:
StringGrid1.RowCount := N;
StringGrid1.ColCount := M;
если они указаны в процедурах SpinEdit1Change и SpinEdit2Change?

Я бы строку
Код:
label4.Caption:=('Максимальный элемент матрицы...
сместил на одну строку ниже (после end;)! Т.е.
Код:
end;
label4.Caption:=('Максимальный элемент матрицы-'+IntToStr(max)+' находится на пересечении '+IntToStr(ii)+'-й строки и '+IntToStr(jj)+' столбца');
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 05.04.2015 в 12:44.
newerow1989 вне форума Ответить с цитированием
Старый 05.04.2015, 12:48   #3
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Случайно не в этой строке?
Код:
for j:=1 to m do read(A[i,j]);
Возможно так?
Код:
for i:=1 to n do 
  for j:=1 to m do StringGrid1.Cells[j, i];
А зачем
Код:
StringGrid1.RowCount := N;
StringGrid1.ColCount := M;
если они указаны в процедурах SpinEdit1Change и SpinEdit2Change?

Я бы строку
Код:
label4.Caption:=('Максимальный элемент матрицы...
сместил на одну строку ниже (после end;)! Т.е.
Код:
end;
label4.Caption:=('Максимальный элемент матрицы-'+IntToStr(max)+' находится на пересечении '+IntToStr(ii)+'-й строки и '+IntToStr(jj)+' столбца');
end;
Сделал,но оно мне всегда выдает,что максимальный элемент находится в 1 строке и 1 столбце
GalaiAnton вне форума Ответить с цитированием
Старый 05.04.2015, 12:50   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

StringGrid1 заполнен числами?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 05.04.2015, 12:52   #5
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
StringGrid1 заполнен числами?
я его заполняю с клавиатуры...
GalaiAnton вне форума Ответить с цитированием
Старый 05.04.2015, 12:58   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

А что пошаговое выполнение говорит (клавиша F7 или F8)?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 05.04.2015, 13:02   #7
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
А что пошаговое выполнение говорит (клавиша F7 или F8)?
Ничего плохого не говорит...все выполняется...Вот взгляните
Вложения
Тип файла: rar Л.р.rar (197.0 Кб, 14 просмотров)
GalaiAnton вне форума Ответить с цитированием
Старый 05.04.2015, 13:26   #8
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
for i:=1 to n-1 do//минус 1
  for j:=1 to m-1 do//минус 1
    A[i,j]:=StrToInt(StringGrid1.Cells[j, i]);//здесь присваиваем
 max:=A[1,1]; ii:=1; jj:=1;
 for i:=1 to n-1 do//минус 1
  for j:=1 to m-1 do//минус 1
   if A[i,j]>max then
    begin
     max:=A[i,j];
     ii:=i;
     jj:=j;
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 05.04.2015, 13:57   #9
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Код:
for i:=1 to n-1 do//минус 1
  for j:=1 to m-1 do//минус 1
    A[i,j]:=StrToInt(StringGrid1.Cells[j, i]);//здесь присваиваем
 max:=A[1,1]; ii:=1; jj:=1;
 for i:=1 to n-1 do//минус 1
  for j:=1 to m-1 do//минус 1
   if A[i,j]>max then
    begin
     max:=A[i,j];
     ii:=i;
     jj:=j;
end;
Благодарю вас,все работает!
А для того,чтобы организовать ввод массива из файла,нужно создать кнопку Создать и Открыть,сначала создать массив,а затем его открыть,я так понимаю?
GalaiAnton вне форума Ответить с цитированием
Старый 05.04.2015, 13:58   #10
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!
Цитата:
я так понимаю?
- Да.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана целочисленная матрица M*N. Найти количество и номера ее столбцов, все элементы которых различны. marinadanilova Помощь студентам 1 28.10.2014 22:19
Заменить отрицательные элементы суммой номера столбца и номера строки, в которых они находятся gylayko Помощь студентам 5 31.03.2012 18:20
Найдите сумму элементов столбца и строки массива, на пересечении которых находится элемент. Serjant0007 Паскаль, Turbo Pascal, PascalABC.NET 1 25.03.2012 21:22
найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять местами с эл-том на пересечении диагоналей (C#) Vovchik123 Помощь студентам 5 27.12.2011 00:01