Текст подпрограммы и версий ama7r_p.zip |
Тексты тестовых примеров tama7r_p.zip |
Символическое сложение двух прямоугольных разреженных матриц, заданных в формате RR (C) U.
Описания форматов RR (C) U и RR (C) O приведено в описании подпрограммы AMTSR .
Пусть заданы прямоугольные разреженные матрицы A и B размеров N на M в формате RR (C) U. Подпрограмма AMA7R вычисляет портрет матрицы C, равной A + B, формируемый в формате RR (C) U, даже если матрицы A и B заданы в формате RR (C) O.
С.Писсанецки. Технология разреженных матриц. - М.: Мир, 1988.
procedure AMA7R(var IA :Array of Integer; var JA :Array of Integer; var IB :Array of Integer; var JB :Array of Integer; N :Integer; M :Integer; var IC :Array of Integer; var JC :Array of Integer; var IX :Array of Integer);
Параметры
IA, JA - | заданный портрет матрицы A в формате RR (C) U; |
IB, JB - | заданный портрет матрицы B в формате RR (C) U; |
N - | заданное число строк матриц A и B (тип: целый); |
M - | заданное число столбцов матриц A и B (тип: целый). |
IC, JC - | полученный портрет матрицы C = A + B в формате RR (C) U; |
IX - | целый массив длины M, используемый в подпрограмме в качестве рабочего. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TAMA7R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, AMA7R_p; function TAMA7R: String; implementation function TAMA7R: String; var N,M,_i :Integer; IC :Array [0..4] of Integer; JC :Array [0..14] of Integer; IX :Array [0..5] of Integer; const IA :Array [0..4] of Integer = ( 1,3,7,9,11 ); JA :Array [0..9] of Integer = ( 5,3,4,3,1,5,1,6,4,2 ); IB :Array [0..4] of Integer = ( 1,4,5,8,10 ); JB :Array [0..8] of Integer = ( 1,6,3,5,4,2,1,2,3 ); begin Result := ''; { ТЕСТ ДЛЯ ПОДПРОГРАММЫ AMA7R } N := 4; M := 6; AMA7R(IA,JA,IB,JB,N,M,IC,JC,IX); Result := Result + Format('%s',[' IC=']); Result := Result + #$0D#$0A; for _i:=0 to 4 do begin Result := Result + Format('%4d ',[IC[_i]]); if ( ((_i+1) mod 15)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + Format('%s',[' JC=']); Result := Result + #$0D#$0A; for _i:=0 to 14 do begin Result := Result + Format('%4d ',[JC[_i]]); if ( ((_i+1) mod 15)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TAMA7R',Result); { вывод результатов в файл TAMA7R.res } exit; end; end. Результаты: IC = ( 1, 5, 9, 13, 16 ) JC = ( 5, 3, 1, 6, 4, 3, 1, 5, 1, 6, 4, 2, 4, 2, 3 )