Вводятся две вещественные прямоугольные матрицы размером M*N и K*L (M,N,K,L amp;lt;=20).
Вводятся две вещественные прямоугольные матрицы размером M*N и K*L (M,N,K,L lt;=20). Для той матрицы, у которой сумма частей, лежащих до первого отрицательного элемента, больше (отыскивать по строчкам), составить одномерный массив из средних арифметических значений частей нечетных столбцов матрицы и отсортировать его в порядке возрастания частей. Вывести на печать саму матрицу, найденную сумму частей и отсортированный одномерный массив. Алгоритм сопровождать соотв. известьями. Использовать не менее 3 подпрограмм. PascalABC.NET
Задать свой вопрос2 ответа
Алена Плугова
// PascalABC.NET 3.3
var c:array of real;
begin
Writeln('1 матрица:');
var m:=ReadInteger('m =');
var n:=ReadInteger('n =');
// var a:=ReadMatrReal(m,n);
var a:=MatrRandomReal(m,n,-3,7).Println(6);
Writeln('2 матрица:');
var k:=ReadInteger('k =');
var l:=ReadInteger('l =');
// var b:=ReadMatrReal(k,l);
var b:=MatrRandomReal(k,l,-3,7).Println(6);
var s1:=a.ElementsByRow.TakeWhile(x-gt;xgt;=0).Sum;
writeln('s1 = ',s1);
var s2:=b.ElementsByRow.TakeWhile(x-gt;xgt;=0).Sum;
writeln('s2 = ',s2);
if s1gt;s2
then begin
c:=ArrFill(a.GetLength(1) div 2,0.0);
foreach var j in SeqWhile(1,x-gt;x+2,x-gt;xlt;a.GetLength(1)) do
c[(j-1) div 2]:=a.Col(j).Average;
end
else begin
c:=ArrFill(b.GetLength(1) div 2,0.0);
foreach var j in SeqWhile(1,x-gt;x+2,x-gt;xlt;b.GetLength(1)) do
c[(j-1) div 2]:=b.Col(j).Average;
end;
writeln('Приобретенный массив:'); c.Println;
Sort(c);
writeln('Отсортированный массив:'); c.Print;
end.
Пример:
1 матрица:
m = 3
n = 6
0.38 4.94 1.57 -2.49 6.67 2.50
2.97 -1.44 -1.44 0.42 4.04 -2.54
5.18 0.32 -1.90 -0.09 3.79 0.12
2 матрица:
k = 2
l = 7
4.92 2.57 3.57 3.05 2.62 5.29 6.17
6.62 2.17 5.80 1.31 2.55 -2.75 4.91
s1 = 6.88926995447337
s2 = 46.640484614596
Приобретенный массив:
2.37028874986353 2.18293672249789 1.26664565655712
Отсортированный массив:
1.26664565655712 2.18293672249789 2.37028874986353
var c:array of real;
begin
Writeln('1 матрица:');
var m:=ReadInteger('m =');
var n:=ReadInteger('n =');
// var a:=ReadMatrReal(m,n);
var a:=MatrRandomReal(m,n,-3,7).Println(6);
Writeln('2 матрица:');
var k:=ReadInteger('k =');
var l:=ReadInteger('l =');
// var b:=ReadMatrReal(k,l);
var b:=MatrRandomReal(k,l,-3,7).Println(6);
var s1:=a.ElementsByRow.TakeWhile(x-gt;xgt;=0).Sum;
writeln('s1 = ',s1);
var s2:=b.ElementsByRow.TakeWhile(x-gt;xgt;=0).Sum;
writeln('s2 = ',s2);
if s1gt;s2
then begin
c:=ArrFill(a.GetLength(1) div 2,0.0);
foreach var j in SeqWhile(1,x-gt;x+2,x-gt;xlt;a.GetLength(1)) do
c[(j-1) div 2]:=a.Col(j).Average;
end
else begin
c:=ArrFill(b.GetLength(1) div 2,0.0);
foreach var j in SeqWhile(1,x-gt;x+2,x-gt;xlt;b.GetLength(1)) do
c[(j-1) div 2]:=b.Col(j).Average;
end;
writeln('Приобретенный массив:'); c.Println;
Sort(c);
writeln('Отсортированный массив:'); c.Print;
end.
Пример:
1 матрица:
m = 3
n = 6
0.38 4.94 1.57 -2.49 6.67 2.50
2.97 -1.44 -1.44 0.42 4.04 -2.54
5.18 0.32 -1.90 -0.09 3.79 0.12
2 матрица:
k = 2
l = 7
4.92 2.57 3.57 3.05 2.62 5.29 6.17
6.62 2.17 5.80 1.31 2.55 -2.75 4.91
s1 = 6.88926995447337
s2 = 46.640484614596
Приобретенный массив:
2.37028874986353 2.18293672249789 1.26664565655712
Отсортированный массив:
1.26664565655712 2.18293672249789 2.37028874986353
Милана
Эта часть осталась не выполненной. Превосходно бы и получение нового массива сделать иным способом, но, видимо, не в этот раз.
Андрюха Байцеров
// PascalABC.NET 3.3, сборка 1590 от 03.12.2017
// Внимание! Если программка не работает, обновите версию!
function NewMatrix(c:string):array[,] of real;
// сформировывает случайную матрицу обозначенного размера
begin
var (m,n):=ReadInteger2('Число строк и столбцов в матрице '+c+':');
Result:=MatrRandomReal(m,n,-99,999);
Result.Transform(t-gt;Round(t)/10)
end;
procedure ShowMatrix(c:string;a:array[,] of real);
// выводит матрицу на монитор
begin
Writeln('*** Матрица ',c,' ***');
a.Println(6,1); Writeln(6*a.ColCount*'=');
end;
function PartSum(a:array[,] of real):=a.ElementsByRow.TakeWhile(t-gt;tgt;=0).Sum;
// сумма частей по строкам до первого отрицательного
function GetArray(a:array[,] of real):array of real;
// строит разыскиваемый одномерный массив
begin
var b:=new Listlt;realgt;;
var i:=1;
while ilt;=a.ColCount-1 do begin
b.Add(a.Col(i).Average);
i+=2;
end;
b.Sort;
Result:=b.ToArray
end;
begin
var a:=NewMatrix('A');
var b:=NewMatrix('B');
ShowMatrix('A',a);
var sa:=PartSum(a);
Writeln('Частичная сумма одинакова ',sa);
ShowMatrix('B',b);
var sb:=PartSum(b);
Writeln('Частичная сумма одинакова ',sb);
var c:=GetArray(sagt;sb?a:b); // матрица с большей частичной суммой
Write('Построенный массив: '); c.Println
end.
Пример
Число строк и столбцов в матрице A: 4 7
Число строк и столбцов в матрице B: 5 6
*** Матрица A ***
5.5 68.9 30.6 15.6 8.6 58.7 31.1
51.2 11.1 84.2 4.0 68.0 -4.8 32.7
28.8 65.3 6.2 33.3 94.5 81.5 34.9
-6.1 81.0 -8.0 77.7 -2.8 -6.4 81.7
==========================================
Частичная сумма одинакова 437.5
*** Матрица B ***
66.3 34.9 52.2 -8.7 57.9 1.9
81.7 -2.4 80.1 3.8 22.3 64.2
-5.8 94.4 22.7 5.3 80.4 46.6
77.1 41.4 7.9 18.6 8.3 32.7
29.8 2.3 82.6 1.7 87.8 28.6
====================================
Частичная сумма одинакова 153.4
Построенный массив: 32.25 32.65 56.575
// Внимание! Если программка не работает, обновите версию!
function NewMatrix(c:string):array[,] of real;
// сформировывает случайную матрицу обозначенного размера
begin
var (m,n):=ReadInteger2('Число строк и столбцов в матрице '+c+':');
Result:=MatrRandomReal(m,n,-99,999);
Result.Transform(t-gt;Round(t)/10)
end;
procedure ShowMatrix(c:string;a:array[,] of real);
// выводит матрицу на монитор
begin
Writeln('*** Матрица ',c,' ***');
a.Println(6,1); Writeln(6*a.ColCount*'=');
end;
function PartSum(a:array[,] of real):=a.ElementsByRow.TakeWhile(t-gt;tgt;=0).Sum;
// сумма частей по строкам до первого отрицательного
function GetArray(a:array[,] of real):array of real;
// строит разыскиваемый одномерный массив
begin
var b:=new Listlt;realgt;;
var i:=1;
while ilt;=a.ColCount-1 do begin
b.Add(a.Col(i).Average);
i+=2;
end;
b.Sort;
Result:=b.ToArray
end;
begin
var a:=NewMatrix('A');
var b:=NewMatrix('B');
ShowMatrix('A',a);
var sa:=PartSum(a);
Writeln('Частичная сумма одинакова ',sa);
ShowMatrix('B',b);
var sb:=PartSum(b);
Writeln('Частичная сумма одинакова ',sb);
var c:=GetArray(sagt;sb?a:b); // матрица с большей частичной суммой
Write('Построенный массив: '); c.Println
end.
Пример
Число строк и столбцов в матрице A: 4 7
Число строк и столбцов в матрице B: 5 6
*** Матрица A ***
5.5 68.9 30.6 15.6 8.6 58.7 31.1
51.2 11.1 84.2 4.0 68.0 -4.8 32.7
28.8 65.3 6.2 33.3 94.5 81.5 34.9
-6.1 81.0 -8.0 77.7 -2.8 -6.4 81.7
==========================================
Частичная сумма одинакова 437.5
*** Матрица B ***
66.3 34.9 52.2 -8.7 57.9 1.9
81.7 -2.4 80.1 3.8 22.3 64.2
-5.8 94.4 22.7 5.3 80.4 46.6
77.1 41.4 7.9 18.6 8.3 32.7
29.8 2.3 82.6 1.7 87.8 28.6
====================================
Частичная сумма одинакова 153.4
Построенный массив: 32.25 32.65 56.575
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов