Дана программа на языке паскаля авс по решению слу методом гаусса. нужно написать комментарии к алгоритму программы, т.е. что мы делаем в каждой строке. умооляю procedure gay(n: integer; a: matrica; b: mass; var x: mass; var m: boolean); var i,j,p,h: integer; f,max,r,s: real; begin m: =false; for p: =1 to n do begin max: =abs(a[p,p]); h: =p; for i: =p+1 to n do if abs(a[i,p])> max then begin max: =abs(a[i,p]); h: =i; end; for j: =1 to n do begin r: =a[p,j]; a[p,j]: =a[h,j]; a[h,j]: =r; end; r: =b[p]; b[p]: =b[h]; b[h]: =r; for i: =p+1 to n do begin f: =a[i,p] / a[p,p]; for j: =p to n do a[i,j]: =a[i,j]-f*a[p,j]; b[i]: =b[i]-f*b[p]; end; end; if a[n,n]=0 then begin if b[n]=0 then writeln('бесконечно много решений') else writeln('решить невозможно') end else begin m: =true; for i: =n downto 1 do begin s: =0; for j: =i+1 to n do begin r: =a[i,j]*x[j]; s: =s+r; end; x[i]: =(b[i]-s)/ a[i,i]; end; end; end;
1 а XCIII б MMCXLVI 242919/2=21459 остаток 1
21459/2=10729 остаток 1
10729/2=5364 остаток 1
5364/2=2682 остаток 0
2682/2=1341 остаток 0
1341/2=670 остаток 1
670/2=335 остаток 0
335/2=167 остаток 1
167/2=83 остаток 1
83/2=41 остаток 1
41/2=20 остаток 1
20/2=10 остаток 0
10/2=5 остаток 0
5/2=2 остаток 1
2/2=1 остаток 0
1/2=0 остаток 1
Записав полученные цифры в ряд снизу вверх, получим:
4291910=10100111101001
восьмеричная
Приведем целую часть числа 42919 в систему счисления 8 последовательным делением на число 8:
42919/8=5364 остаток 7
5364/8=670 остаток 4
670/8=83 остаток 6
83/8=10 остаток 3
10/8=1 остаток 2
1/8=0 остаток 1
Записав полученные цифры в ряд снизу вверх, получим:
4291910=1236478
В итоге Получим решение:
4291910 =1236478
шестнадцатеричную
Приведем целую часть числа 42910 в систему счисления 16 последовательным делением на число 16:
42910/16=2681 остаток 14=E
2681/16=167 остаток 9
167/16=10 остаток 7
10/16=0 остаток 10=A
Записав полученные цифры в ряд снизу вверх, получим:
4291010=A79E16
В итоге Получим решение:
4291010 =A79E16
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
Writeln(Range(1,100).Select(i->sin(i)*cos(i)).Where(x->x<>0).Average)
end.
Тестовое решение:
-0.00136006072493969
2. А вот так учат писать это же школьные учителя:
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
var
m:array[1..100] of real;
i,k:integer;
s:real;
begin
s:=0;
k:=0;
for i:=1 to 100 do begin
m[i]:=sin(i)*cos(i);
if m[i]<>0 then begin
s:=s+m[i];
k:=k+1
end
end;
Writeln(s/k)
end.
Тестовое решение:
-0.00136006072493969