Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедуры и функции (подпрограммы)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
maksfix
Создать массив целых чисел B 11x11. Если на главной диагонали стоит 0 – отсортировать главную диагональ, если на побочной – отсортировать побочную. Иначе – повернуть массив на 90 градусов.
Программа работает, но нужно еще найти максимальный элемент исходной матрицы на главной и побочной диагоналях, через функции, чтобы выводило "исходная матрица" : 'максимальный элемент (число) на (главной/побочной) диагонали.
program proceduri8;
type mas= array[1..11,1..11] of integer;
var b,i,j,k,n: integer;fl1,fl2:boolean;a1,b1:mas;
function poisk1(dd:mas):boolean;
var fl1:boolean;i,j:integer;
begin
fl1:=false;
for i:=1 to n do

if (dd[i,i]=0)=true then
fl1:= true;

poisk1:=fl1;
end;
function poisk2(cc:mas):boolean;
var fl2:boolean;i,j:integer;
begin
fl2:=false;
for i:=1 to n do

if (cc[i,i]=0)=true then
fl2:= true;

poisk2:=fl2;
end;

procedure sort1(var a:mas);
var i,k,j,b:integer;
begin
for i:=1 to n do
for k:=1 to n-1 do
for j:=1 to n-1 do
if (a[i,j]>a[i,j+1])=true then
begin
b:=a[i,j];a[i,j]:=a[i,j+1];a[i,j+1]:=b
end;
end;
procedure sort2(var a:mas);
var i,k,j,b:integer;
begin
for i:=1 to n do
for k:=1 to n-1 do
for j:=n-i+1 to 1 do
if (a[i+1,n-i]>a[i,n-i+1])=true then
begin
b:=a[i,n-i+1];a[i,n-i+1]:=a[i+1,n-i];a[i+1,n-i]:=b;
end;
end;

procedure vyvod(a:mas);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3); writeln;
end;
end;

procedure sort3(var a,b:mas);
var i,j:integer;
begin
for i:=1 to n do
for j:=n downto 1 do
b[i,n+1-j]:=a[j,i];
end;

begin
fl1:=false;
fl2:=false;
n:=11;
for i:=1 to n do
for j:=1 to n do
a1[i,j]:=random(100);
writeln('Исходный массив:');
vyvod(a1);
writeln;
fl1:=poisk1(a1);
if fl1=true then begin
sort1(a1);
writeln('Преобразованный массив:');
vyvod(a1);
writeln; end;
poisk2(a1);
if fl2=true then begin
sort2(a1);
vyvod(a1);
writeln;end;
if (fl2 and fl1)=false then begin
sort3(a1,b1);
writeln('Конечный массив a1:');
vyvod(a1);
writeln;
writeln('Конечный массив b1:');
vyvod(b1); end;
end.

Помогите пожалуйста smile.gif
Федосеев Павел
А за чем остановка?
Основная диагональ - та, у которой i=j, т.е. a1[i, i]. Побочная диагональ a1[i, 11+1-i]
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.