Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Анька
Помогите, :p2: пожалуйста, решить 3 задачки, я уже целый день над ними сижу, но ничего не получается!!!
1.
Матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива по строкам. Восстановить исходную квадратную матрицу и напечатать по строкам.
2.
Заданную квадратную матрицу преобразовать, используя умножение строки на число и сложение строк, таким образом, чтобы все элементы первого столбца обратились в нуль, кроме элемента, расположенного на главной диагонали.
3.
Дана вещественная матрица размером N х N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.
volvo
3.
Код

const
 n = 4;
 maxElem = 50;
var
 st: set of 1 .. maxElem;
var
 a: array[1 .. n, 1 .. n] of integer;
 max, min, min_col, max_row: integer;
 i, j, k, p: integer;
begin
 (*
 randomize; st := [];
 *)
 for i := 1 to n do
   for j := 1 to n do
     begin
       write('a[', i:2, ',', j:2, '] = ');
       readln(a[i, j]);
       (*
       repeat
         k := random(maxElem) + 1;
       until not (k in st);
       a[i, j] := k; st := st + [k]
       *)
     end;

 max := -maxInt; min := maxInt;
 for i := 1 to n do
   for j := 1 to n do
     begin
       if a[i, j] < min then
         begin min := a[i, j]; min_col := j end;
       if a[i, j] > max then
         begin max := a[i, j]; max_row := i end;
     end;

 p := 0;
 for i := 1 to n do
   p := p + a[max_row, i]*a[i, min_col];

 writeln( 'p = ', p )
end.


Приведенная выше программа запрашивает ввод матрицы у пользователя. Если нужно сгенерировать такую матрицу размером N х N, все элементы которой различны, можно просто убрать все символы (* *) и строки:
Код

 write('a[', i:2, ',', j:2, '] = ');
 readln(a[i, j]);
Анька
volvo :D СПАСИБО!!!


Может кто-нибудь с остальными задачками поможет, пожа-а-алуйста :molitva: !!!
xds
Задача 1.
Код

program RestMatr;

var
 a: array[1..100, 1..100] of Integer;
 i, j, iv, n: Integer;

begin
 Write('n = ');
 Readln(n);
 n := (Round(Sqrt(8 * n + 1)) - 1) div 2;
 iv := 1;
 for i := 1 to n do
   for j := i to n do
     begin
       Write('V[', iv, '] = ');
       Inc(iv);
       Read(a[i, j]);
       a[j, i] := a[i, j];
     end;

 for i := 1 to n do
   begin
     for j := 1 to n do
       Write(a[i, j]:3);
     Writeln;
   end;
end.
xds
Задача 2.
Код

program XMatr;

{ НОД }
function GCD(n, m: Integer): Integer;
begin
 repeat
   if n > m then
     n := n mod m
   else
     m := m mod n;
 until (n = 0) or (m = 0);
 if n = 0 then
   GCD := m
 else
   GCD := n;
end;

var
 n, i, j, k1, k2: Integer;
 a: array[1..100, 1..100] of Integer;

begin
 Write('n> ');
 Readln(n);
 Randomize;
 for i := 1 to n do
   for j := 1 to n do
     a[i, j] := -9 + Random(20);

 Writeln('Исходная матрица:');
 for i := 1 to n do
   begin
     for j := 1 to n do
       Write(a[i, j]: 4);
     Writeln;
   end;
 Writeln;

 for i := 2 to n do
   begin
     k1 := GCD(Abs(a[1, 1]), Abs(a[i, 1]));
     k2 := -a[1, 1] div k1;
     k1 := a[i, 1] div k1;
     for j := 1 to n do
       a[i, j] := a[i, j] * k2 + a[1, j] * k1;
   end;

 Writeln('Преобразованная матрица:');
 for i := 1 to n do
   begin
     for j := 1 to n do
       Write(a[i, j]: 4);
     Writeln;
   end;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.