Поделитесь своими знаниями, ответьте на вопрос:
Дан следующий программный код. Следует указать, какую функцию здесь выполняет каждая переменная (var), за что она отвечает. Хотя бы кратко. const n=3;n1=4;n2=6;n3=7; type matr=array[1..n, 1..n1] of real; matr1=array[1..n, 1..n2] of real; stolb=array[1..n2] of real; matr2=array[1..n2, 1..n2] of real; {Объявление констант и переменных} const a1:matr1=((-1, 0, 0, 1, 1, 0), (0, -1, 0, -1, 0, 1), (0, 0, -1, 0, -1, -1)); q:stolb=(-120, 40, 30, 0, 0, 0); r:matr2=((0.25, 0, 0, 0, 0, 0), (0, 0.5, 0, 0, 0, 0), (0, 0, 0.333, 0, 0, 0), (0, 0, 0, 0.142, 0, 0), (0, 0, 0, 0, 0.25, 0), (0, 0, 0, 0, 0, 0.166)); var a:matr; b, c1:matr1; c:matr2; x:stolb; maxabs, v:real; O:array[1..n2, 1..n3] of real; i, j, k, l, h:integer; begin {«Прямой ход»} {Формирование матрицы А 3 х 4, в 4-ом столбце находятся свободные члены системы} for i:=1 to n do for j:=1 to n2 do write('a[', i, '][', j, ']=', a1[i, j]); writeln; for h:=1 to n do begin for i:=1 to n do begin for j:=1 to n do a[i, j]:=a1[i, j]; if i=h then a[i, n1]:=1 else a[i, n1]:=0; end; for i:=1 to n do begin maxabs:=abs(a[i][i]);k:=i; for l:=i+1 to n do if abs(a[l][i])>maxabs then begin maxabs:=abs(a[l][i]); k:=l; end; if k<>i then for j:=i to n1 do begin v:=a[i][j];a[i][j]:=a[k][j];a[k][j]:=v; {Выбор рабочей строки матрицы} end; {Этап исключения хi из l-го уравнения с го} v:=a[i][i]; for j:=i to n1 do a[i][j]:=a[i][j]/v; for l:=i+1 to n do begin v:=a[l][i]; for j:=i+1 to n1 do a[l][j]:=a[l][j]-a[i][j]*v; end; end; {«Обратный ход», матрица R} x[n]:=a[n][n1]; for i:=n-1 downto 1 do begin x[i]:=a[i][n1]; for j:=i+1 to n do x[i]:=x[i]-a[i][j]*x[j]; b[i, h]:=-x[i]; end; end; {Сформированная матрица В} for i:=1 to n do begin for j:=n+1 to n2 do b[i, j]:=-a1[i, j-n]; end; for i:=1 to n do for j:=1 to n2 do begin {S:=0;} c1[i, j]:=0; for l:=1 to n2 do c1[i, j]:=c1[i, j]+b[i, l]*r[l, j]; end; {Матрица C} for i:=1 to n do for j:=1 to n2 do c[i, j]:=a1[i, j]; for i:=n+1 to n2 do for j:=1 to n2 do c[i, j]:=c1[i-n, j]; {Матрица O} for i:=1 to n2 do begin for j:=1 to n2 do O[i, j]:=c[i, j]; O[i, n3]:=q[i]; end; {«Прямой ход»} for i:=1 to n2 do begin maxabs:=abs(O[i][i]);k:=i; for l:=i+1 to n2 do if abs(O[l][i])>maxabs then begin maxabs:=abs(O[l][i]); k:=l; end; if k<>i then for j:=i to n3 do begin v:=O[i][j];O[i][j]:=O[k][j];O[k][j]:=v; {Выбор рабочей строки матрицы} end; {Этап исключения хi из l-го уравнения с го} v:=O[i][i]; for j:=i to n3 do O[i][j]:=O[i][j]/v; for l:=i+1 to n2 do begin v:=O[l][i]; for j:=i+1 to n3 do O[l][j]:=O[l][j]-O[i][j]*v; end; end; {«Обратный ход»} x[n]:=O[n2][n3]; for i:=n-1 downto 1 do begin x[i]:=O[i][n3]; for j:=i+1 to n2 do x[i]:=x[i]-O[i][j]*x[j]; end; {Вывод полученного решения системы уравнений} writeln; for i:=1 to n2 do write(x[i], ' '); writeln; end.
#include <iostream>
#include <vector>
using namespace std;
int am_dig(int k){
int res = 0;
while(k > 0){
res++;
k /= 10;
}
return res;
}
double average(vector<double> a){
double sum = 0;
for(auto i: a)
sum += i;
return sum/a.size();
}
int main() {
vector<double> a;
double x = 1;
while(x != 0){
cin >> x;
if(am_dig(x) == 3)
a.push_back(x);
}
if(a.size() == 0)
cout << "NO";
else
cout << average(a);
}