|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2010, 17:33 | #1 |
Пользователь
Регистрация: 25.05.2010
Сообщений: 24
|
Поменять местами строку с минимальным и максимальным элементами
Ребят написал код, но при запуске Delphi, ворчит на TStringGrid, работаю с этим компонентом 1 раз и хотелось бы узнать, что не так. Новых алгоритмов не надо, прошу только видоизменить уже существующий код.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type Tmatrix=array[1..5,1..5] of integer; TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Label3: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; StringGrid1: TStringGrid; StringGrid2: TStringGrid; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; i,j,k:integer; Arr:Tmatrix; N,M:integer; min,max:integer; indexmin,indexmax:integer; mas:array[1..5] of integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin N:=StrToInt(Edit1.Text); M:=Strtoint(edit2.Text); If N>5 then begin Application.MessageBox('Неверное количество Столбцов', 'Ошибка',MB_OK); N:=0; exit; end; If M>5 then begin Application.MessageBox('Неверное количество строк ', 'Ошибка',MB_OK); M:=0; exit; end; randomize; end; procedure TForm1.Button2Click(Sender: TObject); var A:Tmatrix; N:integer; M:integer; begin N:=StrToInt(Edit1.Text); M:=Strtoint(edit2.Text); for i:=1 to N do begin for j:=1 to M do begin A[i,j]:=random(25); end; end; end; procedure ExecMatrix(var A:Tmatrix; N,M:integer); var i,j:integer; begin for i:=1 to N do begin for j:=1 to M do begin min:=0; max:=0; indexmax:=0; indexmin:=0; if a[i,j]>max then begin max:=a[i,j]; indexmax:=j; end; if a[i,j]<min then begin min:=a[i,j]; indexmin:=j; end; for k:=1 to M do begin mas[k]:=A[i,indexmax]; A[i,indexmax]:=A[i,indexmin]; A[i,indexmin]:=mas[k]; end; end; end; end; procedure OutMatrix(var A:Tmatrix; N,M:integer; SG:TstringGrid1); var i,j:integer; begin for i:=1 to N do for j:=1 to M do SG.Cells[j-1,i-1]:=Inttostr(A[i,j]); end; procedure InMatrix(var A:Tmatrix; N,M:integer; SG:TstringGrid2; var i,j:integer; begin for i:=1 to N do for j:=1 to M do if SG.Cells[j-1,i-1]='' then A[i,j]:=0 else A[i,j]:=strtoint(SG.Cells[j-1,i-1]); end; procedure Button3Click(Sender: TOobject); begin inmatrix(A,N,StringGrid1); ExecMatrix(A,N,M); OutMatrix(A,N,M,StringGrid2); end; end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
дано n вещественных чисел. вычислить разность между максимальным и минимальным из них | lena.h | Microsoft Office Excel | 9 | 28.03.2010 15:44 |
Поменять местами столбец и первую строку | DanteDMC3 | Помощь студентам | 1 | 12.02.2010 16:06 |
Разность между максимальным и минимальным значениями | StudeHt | Помощь студентам | 7 | 23.04.2009 22:26 |
Задача на СИ в заданной матрице поменять местами первую строку и первый столбец %( | defol-777 | Помощь студентам | 2 | 14.01.2009 09:59 |
в двухмерном массиве поменять местами столбцы с максимальным и минимальным элементами | Лёха | Помощь студентам | 5 | 18.12.2007 18:12 |