ВУЗ:
Составители:
Рубрика:
47
var m1,m2,m3: Matrix; i,j: Integer;
begin
for i:=1 to n do for j:=1 to n do begin
m1[i,j]:=PAryFraction.CreateAs(1,(2 shl i));
m2[i,j]:=PAryFraction.CreateAs(1,(2 shl j));
end;
{ Элементам матриц присваиваются ссылки на объекты
класса PAryFraction. }
m3:=AddMatrix(m1,m2); // вызывается реализация алгоритма сложения
WriteMatrix(m1); //
WriteMatrix(m2); // содержимое матриц выводится на экран
WriteMatrix(m3); //
for i:=1 to n do for j:=1 to n do begin
m1[i,j].Destroy; m2[i,j].Destroy; m3[i,j].Destroy;
end;
{ По окончании работы программы необходимо удалить как элементы
матриц m1 и m2, так и созданные в процессе работы методов Plus
элементы матрицы m3. }
ReadLn;
end.
Приведенная программа складывает две матрицы 2-ичных дро-
бей, с одержащие следующие значения:
111
444
111
888
111
161616
æö
ç÷
ç÷
ç÷
èø
и
111
4816
111
4816
111
4816
æö
ç÷
ç÷
ç÷
èø
(выражение 2 shl k осуществляет сдвиг битового представления числа 2
на k бит влево, что эквивалентно его умножению на 2
k
). Полученная в
результате матрица m3 определена корректно:
35
1
2816
33
1
8416
53
1
16168
æö
ç÷
ç÷
ç÷
èø
но, увы, все ее элементы принадлежат классу Rational, а не PAryFraction.
Т аким образом , в процессе работы функции AddMatrix реальный тип
объектов был проигнорирован и всюду использовалась версия метода
Plus из класса Rational.
var m1,m2,m3: Matrix; i,j: Integer;
begin
for i:=1 to n do for j:=1 to n do begin
m1[i,j]:=PAryFraction.CreateAs(1,(2 shl i));
m2[i,j]:=PAryFraction.CreateAs(1,(2 shl j));
end;
{ Элементам матриц присваиваются ссылки на объекты
класса PAryFraction. }
m3:=AddMatrix(m1,m2); // вызывается реализация алгоритма сложения
WriteMatrix(m1); //
WriteMatrix(m2); // содержимое матриц выводится на экран
WriteMatrix(m3); //
for i:=1 to n do for j:=1 to n do begin
m1[i,j].Destroy; m2[i,j].Destroy; m3[i,j].Destroy;
end;
{ По окончании работы программы необходимо удалить как элементы
матриц m1 и m2, так и созданные в процессе работы методов Plus
элементы матрицы m3. }
ReadLn;
end.
Прив ед енная програм м а с кл ад ы в ает д в е м ат рицы 2-ичны х д ро-
бей, с од ержащие с л ед ующие з начения:
æ 14 14 14 ö æ 1
4
1
8
1 ö
16
ç1 1 1÷ ç 1 1 1 ÷
ç8 8 8÷ и ç 4 8 16 ÷
ç1 1 1÷ ç 1 1 1 ÷
è 16 16 16 ø è 4 8 16 ø
(в ы ражение 2 shl k ос ущес т в л яет с д в иг битов огопред с т ав л ения чис л а 2
на k бит в л ев о, что э кв ив ал ент ноего ум ножению на 2k ). Пол ученная в
рез ул ь т ат е м ат рица m3 опред ел ена коррект но:
æ 12 83 165 ö
ç3 1 3÷
ç 8 4 16 ÷
ç5 3 1÷
è 16 16 8 ø
но, ув ы , в с е ее эл ем ент ы принад л ежат кл ас с у Rational, а не PAryFraction.
Т аким образ ом , в процес с е работ ы функции AddMatrix реал ь ны й т ип
объектов бы л проигнориров ан и в с юд у ис пол ь з ов ал ас ь в ерс ия м етод а
Plus из кл ас с а Rational.
47
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »
