Предмет: Информатика, автор: JustDude

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


JustDude: Можно и на Pascal, потом сам переделаю в Delphi
Аноним: Сейчас есть уже такие паскали, до которым Делфи, как до Луны пешком.
Аноним: А еще - читаю условие - и не понимаю его. Вот матрица 4х4. Пусть строка 2 начинается с отрицательного элемента. Какие конкретно в этом случае элементы надо в сумму помещать?
JustDude: Вот я сам не пойму как. Я понял только как сделать условие для 1 строки, которая начинается с отрицательного элемента.
Аноним: Я не могу писать программы, в которых не понимаю, что требуется сделать.
JustDude: я понял это условие сейчас так... 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
Аноним: А может и не так совсем. Например, надо отобрать все строки, первый элемент в которых отрицателен и найти три суммы, составленные из элеменов этих строк
Аноним: Конечно, с учетомо условий "выше", "на" и "ниже".
JustDude: я знаю только то, что если в x11 находится отрицательный элемент, то в ответ пишется: главная диагональ x11; выше главной диагонали x12 x13 x14;
JustDude: сумма x12 x13 x14*

Ответы

Автор ответа: archery
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.

archery: какая сумма ниже какая выше думаю сами разберетесь)
archery: конечно в паскалеабс нумерация элементов начинается с нуля, но сделано так что на код не должно влиять начало и конец нумерации
JustDude: Спасибо)
Похожие вопросы
Предмет: Математика, автор: Аноним