PascalABC.NET 3.2, сборка 1504 от 09.07.2017Внимание! Если программа не работает, обновите версию!Задание а)procedure DiagExchange<T>(a:array[,] of T);begin var n:=a.ColCount; for var i:=0 to a.RowCount-1 do Swap(a[i,i],a[i,n-i-1])end;begin var a:=MatrRandom(4,4,-50,50); a.Println(4); Writeln(4*a.ColCount*'-'); DiagExchange(a); a.Println(4); Writeln(4*a.ColCount*'-'); Randomize; var b:=MatrGen(3,3,(i,j)->Random(-50,50)/10); b.Println(5,1); Writeln(5*b.ColCount*'-'); DiagExchange(b); b.Println(5,1); Writeln(5*b.ColCount*'-')end.
Пример 37 21 5 -42 44 0 48 48 14 -26 37 36 -8 43 -43 -24---------------- -42 21 5 37 44 48 0 48 14 37 -26 36 -24 43 -43 -8---------------- -2.7 -1.0 2.3 0.0 -3.5 -0.2 -3.6 -5.0 1.2--------------- 2.3 -1.0 -2.7 0.0 -3.5 -0.2 1.2 -5.0 -3.6---------------
Задание б)function VLength(Self:array of real):real; extensionmethod;begin Result:=Sqrt(Self.Select(x->x*x).Sum)end; begin var G:=Arr(1.6,2.8,4.9,-6.7); G.Println; var D:=Arr(8.4,1.0,2.6,4.8); D.Println; Writeln('Полусумма длин равна ',(G.VLength+D.VLength)/2)end.
Результат1.6 2.8 4.9 -6.78.4 1 2.6 4.8Полусумма длин равна 9.48641255163993
Задание в)begin var c:=1.23; Writeln(' a x y z'); for var i:=2 to 8 do begin var a:=i/10; var x:=cos((a+c)/3.178); var y:=0.7*cos(a-1.27); var z:=ArcSin(x)+ArcSin(y)+Ln(Abs(ArcSin(x+y))); Writeln(a:3:1,x:11:8,y:11:8,z:11:8) endend.
Результат a x y z0.2 0.90046079 0.33608696 NaN0.3 0.88633142 0.39570967 NaN0.4 0.87132454 0.45137858 NaN0.5 0.85545501 0.50253747 NaN0.6 0.83873853 0.54867517 NaN0.7 0.82119166 0.58933068 NaN0.8 0.80283178 0.62409780 NaN
В задании в) данные подобраны некорректно: x+y>1, поэтому аргумент арксинуса в формуле для z принимает недопустимое значение.