Пожалуйста, помогите с заданием ** Delphi Пусть дана вещественная квадратная матрица...

0 голосов
89 просмотров

Пожалуйста, помогите с заданием на Delphi
Пусть дана вещественная квадратная матрица порядка n. Относительно элементов, расположенных в строках, начинающихся с отрицательного элемента, найдите суммы тех из них, которые расположены соответственно ниже, выше и на главной диагонали.


Информатика (59 баллов) | 89 просмотров
0

Можно и на Pascal, потом сам переделаю в Delphi

0

Сейчас есть уже такие паскали, до которым Делфи, как до Луны пешком.

0

А еще - читаю условие - и не понимаю его. Вот матрица 4х4. Пусть строка 2 начинается с отрицательного элемента. Какие конкретно в этом случае элементы надо в сумму помещать?

0

Вот я сам не пойму как. Я понял только как сделать условие для 1 строки, которая начинается с отрицательного элемента.

0

Я не могу писать программы, в которых не понимаю, что требуется сделать.

0

я понял это условие сейчас так... x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 x41 x42 x43 x44 вот матрица 4х4 и x21 начинается с отрицательного элемента, следовательно, как я понял, надо найти на главной диагонали x11 x22; ниже главной диагонали x21 x31 x32 x41 x42 x43; выше главной диагонали x12 x13 x14 x23 x24

0

А может и не так совсем. Например, надо отобрать все строки, первый элемент в которых отрицателен и найти три суммы, составленные из элеменов этих строк

0

Конечно, с учетомо условий "выше", "на" и "ниже".

0

я знаю только то, что если в x11 находится отрицательный элемент, то в ответ пишется: главная диагональ x11; выше главной диагонали x12 x13 x14;

0

сумма x12 x13 x14*

Дан 1 ответ
0 голосов
Правильный ответ

//PascalABC.NET 3.1 сборка 1200
begin
  var n := ReadInteger('n=');
  var a := MatrixRandom(n, n, -10, 10);
  println(a);
 
  for var i := a.GetLowerBound(0) to a.GetUpperBound(0) do
    if a[i, a.GetLowerBound(1)] < 0 then begin
      var s1 := 0;
      var s2 := 0;
      var s3 := 0;
      for var j := a.GetLowerBound(1) to a.GetUpperBound(1) do
        if i < j then s1 += a[i, j]
        else if i = j then s2 += a[i, j]
        else if i > j then s3 += a[i, j];
      writeln(i + ': ' + s1 + ', ' + s2 + ', ' + s3);
    end;
end.

(53.1k баллов)
0

какая сумма ниже какая выше думаю сами разберетесь)

0

конечно в паскалеабс нумерация элементов начинается с нуля, но сделано так что на код не должно влиять начало и конец нумерации

0

Спасибо)