<em>// PascalABC.NET 3.2, сборка 1338 от 16.11.2016</em> type matrix=array[1..3,1..3] of real; vector=array[1..3] of real;
procedure MatPrint(a:matrix); begin for var i:=1 to 3 do begin for var j:=1 to 3 do Write(a[i,j]:6:2); Writeln end end;
procedure VecPrint(a:vector); begin for var i:=1 to 3 do Write(a[i]:6:2); Writeln end;
procedure MV(a:matrix; v:vector; var t:vector); // Умножение матрицы на вектор begin for var i:=1 to 3 do begin var s:=0.0; for var j:=1 to 3 do s+=a[i,j]*v[j]; t[i]:=s end; end;
procedure VS(a,b:vector; var t:vector); // Вычитание векторов begin for var i:=1 to 3 do t[i]:=a[i]-b[i] end;
function SP(a,b:vector):real; // Скалярное произведение векторов begin Result:=0.0; for var i:=1 to 3 do Result+=a[i]*b[i] end;
begin var A:matrix:=((1,2,3),(1,2,1),(3,2,0)); var B:matrix:=((3,1,2),(0,4,3),(1,1,1)); var p:vector:=(0.1,1.7,-1.5); var q:vector:=(-1.6,0.8,1.1); var r:vector:=(-0.7,1.3,0.2); Writeln('Матрица А'); MatPrint(A); Writeln('Матрица B'); MatPrint(B); Writeln('Вектор p'); VecPrint(p); Writeln('Вектор q'); VecPrint(q); Writeln('Вектор r'); VecPrint(r); var t1,t2,t3:vector; MV(A,q,t1); MV(B,p,t2); VS(t1,t2,t3); Writeln('Скалярное произведение равно ',SP(t3,r)) end.
Результаты Матрица А 1.00 2.00 3.00 1.00 2.00 1.00 3.00 2.00 0.00 Матрица B 3.00 1.00 2.00 0.00 4.00 3.00 1.00 1.00 1.00 Вектор p 0.10 1.70 -1.50 Вектор q -1.60 0.80 1.10 Вектор r -0.70 1.30 0.20 Скалярное произведение равно -5.27
1. Линейный - простые алгоритмы (т.е. без проверки условий) 2. Алгоритм с ветвлением - в зависимости от выполнения и невыполнения условий 3. Циклический - блоки алгоритма вып. до тех пор, пока не будет выполнен определенное условие. 4. Комбинированный - алгоритмы могут состоять из простых команд, команд ветвления и цикла.
<em><u>PascalABC.Net</u></em> const m=8; n=11; var a,b,c:array[1..m,1..n] of integer; i,j:integer; begin Randomize; Writeln('Исходный массив A'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; Write(a[i,j]:4) end; Writeln end; Writeln('Исходный массив B'); for i:=1 to m do begin for j:=1 to n do begin b[i,j]:=Random(41)-20; Write(b[i,j]:4) end; Writeln end; Writeln('Результирующий массив С'); for i:=1 to m do begin for j:=1 to n do begin c[i,j]:=a[i,j]+b[m-i+1,n-j+1]; Write(c[i,j]:4) end; Writeln end end.
Var a:array[1..30] of integer; i,sr,k:integer; begin for i:=1 to 30 do begin read(a[i]); if a[i]>0 then begin sr+=a[i]; inc(k); end; end; writeln(sr/k:3:2); <span>end.</span>