Предмет: Информатика,
автор: techies2001
помогите сделать это в Pascal
Пусть дан фрагмент программы. Опишите функцию Sum(A, SI, S2), вычи¬сляющую сумму тех элементов матрицы А, номера строк и номера столб¬цов которых принадлежат соответственно непустым множествам S1 и S2 типа num.
Const
n = 10;
Type
number = 1..n;
matrix = array [number, number] of real;
num = set of number;
Var
A : matrix;
S1, S2 : num;
Ответы
Автор ответа:
0
Традиционнный Pascal:
function Sum(var M:matrix;n:integer;s1,s2:num):real;
var
i,j:number;
s:real;
begin
s:=0;
for i:=1 to n do
if i in s1 then
for j:=1 to n do
if j in s2 then s:=s+M[i,j];
Sum:=s
end;
В PascalABC.Net можно написать короче:
function Sum(var M:matrix;n:integer;s1,s2:num):real;
var
i,j:number;
begin
result:=0;
foreach i in s1 do
foreach j in s2 do result:=result+M[i,j]
end;
function Sum(var M:matrix;n:integer;s1,s2:num):real;
var
i,j:number;
s:real;
begin
s:=0;
for i:=1 to n do
if i in s1 then
for j:=1 to n do
if j in s2 then s:=s+M[i,j];
Sum:=s
end;
В PascalABC.Net можно написать короче:
function Sum(var M:matrix;n:integer;s1,s2:num):real;
var
i,j:number;
begin
result:=0;
foreach i in s1 do
foreach j in s2 do result:=result+M[i,j]
end;
Аноним:
Вообще в традиционном Паскале убийственно плохо реализована работа с множествами. Его элементы нельзя просто так вывести, нельзя узнать их текущее количество. Если множество описано, как содержащее N элементов, то надо в цикле по I от 1 до N проверить, есть ли I-й элемент в этом множестве, и если он есть, то с ним можно работать. Есть варианты пройти множество по Succ(), но они еще мудренее.
Похожие вопросы
Предмет: Українська мова,
автор: Andriy0101
Предмет: Другие предметы,
автор: milushmamuliawn
Предмет: Английский язык,
автор: maslovan
Предмет: Українська мова,
автор: Yuriy79
Предмет: Литература,
автор: 87075124704