Разработайте универсальную подпрограмму, определяющую сумму элементов в тех строчках матрицы
Разработайте универсальную подпрограмму, определяющую сумму элементов в тех строчках матрицы размером nm частей, которые не содержат отрицательных элементов. Расположите подпрограмму в модуль. Разработайте тестирующую программку.
Паскаль.
Лидия Шиндикова
Занимательно, эти люди, которые задачки придумывают, - они помнят, что в Паскале обычно существует немалая неувязка в передаче двумерных массивов переменной разрядности в отдельные модули? либо это "чтобы жизнь медом не казалась"?
Максим Пазиков
*переменной размерности", описка
Даниил Телейков
Окончательно, в Delphi и Object (Free) Pascal эту делему частично сняли, но все одинаково, только в PascalABC.NET 3.0 эту делему сняли полностью
Ксения Миридинова
Так мне, как раз на PascalABC.NET эту программку надо сделать.
1 ответ
Максим Талтушин
1. Помещаем нижеследующий текст в файл UniSum.pas, который обязан находиться в директории PABCWork.Net
// PascalABC.NET 3.0, сборка 1128
unit UniSum;
interface
Function UniSumMatrix(a:array[,] of integer):integer;
Function UniSumMatrix(a:array[,] of real):real; overload;
implementation
Function UniSumMatrix(a:array[,] of integer):integer;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]gt;0 then Result+=a[i,j]
end;
Function UniSumMatrix(a:array[,] of real):real; overload;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]gt;0 then Result+=a[i,j]
end;
end.
2. Создаем новый файл и помещаем в него тестовую программку
// PascalABC.NET 3.0, сборка 1128
uses
UniSum;
begin
var m:=ReadInteger('Число строк в матрице:');
var n:=ReadInteger('Число столбцов в матрице:');
var R:=MatrixRandom(m,n,-10,20);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(R[i,j]:4);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(R));
m:=ReadInteger('Число строк в матрице:');
n:=ReadInteger('Число столбцов в матрице:');
var S:=MatrixRandomReal(m,n,-15,32);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(S[i,j]:7:2);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(S):0:2)
end.
Тестовое решение:
Число строк в матрице: 4
Число столбцов в матрице: 3
Сгенерированная матрица
-10 15 17
-8 -8 7
2 -9 0
-1 5 17
Сумма положительных элементов: 63
Число строк в матрице: 5
Число столбцов в матрице: 6
Сгенерированная матрица
0.74 -7.30 15.97 5.01 1.55 12.02
-3.98 -9.21 3.35 -7.95 -14.10 31.21
13.75 -5.82 -5.34 13.33 14.61 15.76
-5.30 14.65 2.60 20.26 27.30 10.81
11.60 27.43 5.61 -10.29 -10.48 26.61
Сумма положительных частей: 274.18
Как видно, программка вправду универсальная: она дозволяет работать с матрицами различных размеров и даже разного типа данных.
// PascalABC.NET 3.0, сборка 1128
unit UniSum;
interface
Function UniSumMatrix(a:array[,] of integer):integer;
Function UniSumMatrix(a:array[,] of real):real; overload;
implementation
Function UniSumMatrix(a:array[,] of integer):integer;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]gt;0 then Result+=a[i,j]
end;
Function UniSumMatrix(a:array[,] of real):real; overload;
begin
Result:=0;
for var i:=0 to Length(a,0)-1 do
for var j:=0 to Length(a,1)-1 do
if a[i,j]gt;0 then Result+=a[i,j]
end;
end.
2. Создаем новый файл и помещаем в него тестовую программку
// PascalABC.NET 3.0, сборка 1128
uses
UniSum;
begin
var m:=ReadInteger('Число строк в матрице:');
var n:=ReadInteger('Число столбцов в матрице:');
var R:=MatrixRandom(m,n,-10,20);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(R[i,j]:4);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(R));
m:=ReadInteger('Число строк в матрице:');
n:=ReadInteger('Число столбцов в матрице:');
var S:=MatrixRandomReal(m,n,-15,32);
Writeln('Сгенерированная матрица');
for var i:=0 to m-1 do begin
for var j:=0 to n-1 do Write(S[i,j]:7:2);
Writeln
end;
Writeln('Сумма положительных элементов: ',UniSumMatrix(S):0:2)
end.
Тестовое решение:
Число строк в матрице: 4
Число столбцов в матрице: 3
Сгенерированная матрица
-10 15 17
-8 -8 7
2 -9 0
-1 5 17
Сумма положительных элементов: 63
Число строк в матрице: 5
Число столбцов в матрице: 6
Сгенерированная матрица
0.74 -7.30 15.97 5.01 1.55 12.02
-3.98 -9.21 3.35 -7.95 -14.10 31.21
13.75 -5.82 -5.34 13.33 14.61 15.76
-5.30 14.65 2.60 20.26 27.30 10.81
11.60 27.43 5.61 -10.29 -10.48 26.61
Сумма положительных частей: 274.18
Как видно, программка вправду универсальная: она дозволяет работать с матрицами различных размеров и даже разного типа данных.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
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 причём
Геометрия.
Облако тегов