Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Hector

Misanthrope


Сообщения: 474
Благодарности: 38

Профиль | Отправить PM | Цитировать


Отлично, тогда нужно исправить процедуру
Код: Выделить весь код
 procedure gl_diag (var m:mt; var r:ms); {Выделение главной диагонали в массив}
var
k:integer;
begin
k:=1;
for i:=1 to h do
  for j:=1 to h do
    if i=j then
     begin
     r[k]:=m[i,j];
     k:=k+1;
     end;
end;
на
Код: Выделить весь код
 procedure gl_diag (var m:mt; var r:ms); {Выделение главной диагонали в массив}
begin
for i:=1 to h do
r[i]:=m[i,i];
end;
Оптимизация

Итого, с учетом замечаний
Код: Выделить весь код
program OSZone;
{This program created by e-Hector}

uses crt;

const
h=4;

type
mt=array[1..h,1..h] of integer;
ms=array[1..h] of integer;

var
A, B:mt;
A1, B1, A2, B2:ms;
i, j:integer;

procedure gl_diag (var m:mt; var r:ms); {Выделение главной диагонали в массив}
begin
for i:=1 to h do
  r[i]:=m[i,i];
end;

procedure sort(var r, g:ms); {Создание сортированного массива}
var
buf:integer;
begin
for i:=1 to h do
  g[i]:=r[i];
for i:=1 to h-1 do
  for j:=i to h do
   if g[i]<g[j] then
     begin
       buf:=g[i];
       g[i]:=g[j];
       g[j]:=buf;
     end;
end;

function srz(g:ms):real; {Вычисление средне арифметического}
var
s:integer;
begin
s:=0;
for i:=1 to h do
  s:=s+g[i];
srz:=s/h;
end;

procedure out_mass (g:ms); {Вывод массива}
begin
write('[ ');
for i:=1 to h do
  write(g[i],' ');
writeln(']');
end;

begin                         {Основная программа}
clrscr;
randomize;
for i:=1 to h do              {Заполнение матрицы А}
  for j:=1 to h do
   A[i,j]:=random(10);
for i:=1 to h do              {Формирование матрицы В}
  for j:=1 to h do
   if i>j then B[i,j]:=2*i+j
          else B[i,j]:=i+2*j;
gl_diag(A,A1);
gl_diag(B,B1);
sort(A1,A2);
sort(B1,B2);
writeln('Matrica B');
for i:=1 to h do
  begin
  for j:=1 to h do
    write(B[i,j],' ');
  writeln;
  end;
write('Massiv A1 ');
out_mass(A1);
write('Massiv B1 ');
out_mass(B1);
write('Massiv A2 ');
out_mass(A2);
write('Massiv B2 ');
out_mass(B2);
writeln('Srednee A2: ',srz(A2):2:2);
writeln('Srednee B2: ',srz(B2):2:2);
readln;
end.

-------
Information must be free!
Нет границ, есть только препятствия


Последний раз редактировалось Hector, 08-01-2010 в 16:26.


Отправлено: 14:50, 08-01-2010 | #7