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