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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 11:35   #11
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Как то уж больно некрасиво написана программа, куча лишних процедур, все разбросано, вывод результата вообще непонятно где, короче не выдержал, переписал.
Код:
type Tmatr= array [1..50] of array [1..50] of real;
var
  Form1: TForm1;
  n:integer;
  matr:Tmatr;
implementation

{$R *.dfm}
//функция поиска макс. эл-та на гл. и поб. диагоналях
function findmax(var Matr: TMatr; var row, col: integer): real;
var i: integer; max: real;
begin
max := Matr[1,1]; row := 1; col := 1;
for i := 1 to n do
  begin
   //на главной диагонали
    if Matr[i, i] > max then
       begin
         max := Matr[i, i];
         row := i;
         col := i
        end;
   //на побочной диагонали
    if Matr[i, n-i+1] > max then
        begin
          max := Matr[i, n-i+1];
          row := i;
          col := n-i+1
         end;
  end;
findmax := max;
end;
//создание и вывод матрицы на экран
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
randomize;
repeat
n:=strtoint(edit1.text);
if not odd(n) then   //n должно быть нечетным
   begin
     edit1.text:='';
     edit1.Setfocus;
     exit;
   end;
until odd(n);
StringGrid1.RowCount := n;
StringGrid1.ColCount := n;
for i:=1  to n do
for j:=1 to n do
Matr[i,j]:=random*40-20; //зачем объявлять real, и переделывать в integer?
for i:= 1 to n do
for j:=1 to n do
StringGrid1.Cells[j-1,i-1]:=FloatToStrF(matr[i,j],ffFixed,5,2);
end;
//обмен элементов и вывод результата на экран
procedure TForm1.Button2Click(Sender: TObject);
var  buf:real;
     i,j,row,col:integer;
begin
StringGrid2.RowCount := n;
StringGrid2.ColCount  := n;
buf := matr[n div 2 + 1, n div 2 + 1];
matr[n div 2 + 1, n div 2 + 1] := findmax(matr,row,col);
matr[row, col] := buf;
for i:= 1 to n do
for j:=1 to n do
StringGrid2.Cells[j-1,i-1]:=FloatToStrF(matr[i,j],ffFixed,5,2);
end;

end.
puporev вне форума Ответить с цитированием
Старый 10.01.2009, 16:59   #12
Hegel
Пользователь
 
Регистрация: 08.01.2009
Сообщений: 32
По умолчанию

Всем огромне спасибо!
Hegel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МАТРИЦА (СИ) Freia Помощь студентам 5 19.12.2008 22:39
Delphi, матрица, массив… Мага Помощь студентам 3 10.12.2008 23:35
Delphi, матрица n-го порядка ПаФка Помощь студентам 1 09.12.2008 14:55
Квадратная матрица в Delphi Tomoyo Помощь студентам 10 12.11.2008 18:35
Матрица. Delphi manhunt Помощь студентам 0 29.05.2008 00:32