Приветствую Вас Гость | RSS

Delphi заготовки

Пятница, 10.05.2024, 04:58
Главная » 2012 » Ноябрь » 7 » Стандартные операции с массивами (матрицами)
10:12
Стандартные операции с массивами (матрицами)
Работа с элементами выше/ниже/на главной/побочной диагоналях




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.
Просмотров: 1844 | Добавил: NetSoftWare | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: