Работа с элементами выше/ниже/на главной/побочной диагоналях
| var a:array[1..100,1..100]of integer;
N, M, i, j :integer;
begin
write('N, M -> ');
readln(N, M); {считываем размер матрицы}
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end; {считываем саму матрицу}
readln;
writeln('Главная диагональ');
for i:=1 to N do
begin
write(a[i,i],' '); {вы можете не только просто выводить элементы, но и работать с ними. Достаточно знать индексацию нужных элементов}
end;
writeln;
writeln('Побочная диагональ');
for i:=1 to N do
begin
write(a[i,N-i+1],' ');
end;
writeln;
writeln('Ниже главной');
for i:=2 to N do
for j:=1 to i-1 do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Выше главной');
for i:=1 to N-1 do
for j:=i+1 to N do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Выше побочной');
for i:=1 to N-1 do
for j:=1 to N-i do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Ниже побочной');
for i:=2 to N do
for j:=N-i+2 to N do
begin
write(a[i,j],' ');
end;
writeln;
readln;
end. |
реализация для Delphi 7
program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;
{ Для заданной вещественной квадратной матрицы А определить все элементы, расположенные выше главной диагонали(включая ее) и не превосходящие наименьшего среди элементов, расположенных ниже этой диагонали(исключая ее). Если таковых нет, то выдать соответствующее сообщение. }
var n:integer; // размер матрицы A:array of array of integer;// массив элементов x,y:integer; s:integer; smax:integer; // число максимальных отрицательных элементов min_s:integer; str_s:string;
Procedure PrintMatrix; begin for y:=0 to n-1 do begin writeln; for x:=0 to n-1 do write(a[x,y]:3,' '); end; end; begin n:=5; str_s:=''; setlength(a,n,n); randomize; for x:=0 to n-1 do for y:=0 to n-1 do begin if x>y then a[x,y]:=random(n*n) else a[x,y]:=random(n*n)+2; if x>y then a[x,y]:=random(n*n)-2; if x=y then a[x,y]:=1; // отметим главную диоганаль end; writeln('First matrix'); PrintMatrix; writeln; min_s:=a[n-2,n-1];
for y:=0 to N-1 do for x:=0 to n-1 do if x<y then begin //находим минимальный элемент ниже главной диоганали if min_s>a[x,y] then min_s:=a[x,y] end;
for y:=0 to N-1 do for x:=0 to n-1 do if x>y then begin //находим элементы { определить все элементы, расположенные выше главной диагонали(включая ее) и не превосходящие наименьшего среди элементов
} if a[x,y]<min_s then begin
if str_s='' then str_s:=floattostr(a[x,y]) else str_s:=str_s+','+floattostr(a[x,y]); end; end;
writeln; writeln('MinElement = ' ,min_s:2); if str_s='' then writeln('NotElement!') // нет элементов согласно условию else writeln('Elements ',str_s);
// Y всегда меньше X.
readln;
{ TODO -oUser -cConsole Main : Insert code here } end.
|