Большая часть информации из прошлой главы применима и к текущей. Единственным уточнением станет то, что для массивов в размере куба и выше транспонирование может быть выполнено множеством способов.
Разбор текста программы предлагается произвести самостоятельно.
MODULETestHello13;(* Этот пример показывает как транспонировать матрицу *)IMPORTIn,Log,Math;VARm1:ARRAY10,3OFINTEGER;m2:ARRAY3,10OFINTEGER;PROCEDUREOut_m2;VARx,y:INTEGER;BEGINLog.String('Массив2: ');Log.Ln;FORx:=0TO2DOFORy:=0TO9DOLog.Int(m2[x,y])END;Log.LnEND;ENDOut_m2;PROCEDUREOut_m1;VARx,y:INTEGER;BEGINLog.String('Массив1: ');Log.Ln;FORx:=0TO9DOFORy:=0TO2DOLog.Int(m1[x,y])END;Log.LnEND;ENDOut_m1;PROCEDURETransMas;(* транспонировние *)VARx,y:INTEGER;BEGINFORx:=0TO9DOFORy:=0TO2DOm2[y,x]:=m1[x,y]END;END;ENDTransMas;PROCEDUREGetMas;(* получение массива *)VARx,y:INTEGER;BEGINIn.Open;WHILEIn.DoneDOFORx:=0TO9DOFORy:=0TO2DOIn.Int(m1[x,y])END;END;END;ENDGetMas;PROCEDUREStart*;VARBEGINGetMas;TransMas;Out_m1;Out_m2;ENDStart;BEGINENDTestHello13.