Оба варианта программы работают, выбрал 1 вариант.
Что касается этой бредовой функции, то я понимаю в ней нет смысла, но в задании требуется чтобы в процедуре была функция, это вроде бы как для понимания.
Я с вами совершенно согласен, незачем тратить время и место на переименование стандартной функции, но задание требует...
PHP код:
Function module(x:real):real;
Begin
module:=abs(x);
end; // функция модуля
Вот что получилось у меня с оформлением: (если кому надо)
PHP код:
Program zam;
Const n=3;
Type mass=array[1..n] of real;
matr=array[1..n,1..n] of real;
Function module(x:real):real;
Begin
module:=abs(x);
end; // функция модуля
Function sredarifm(Q:matr):real;
var
summ:real;
i,j:integer;
Begin
Summ:=0;
Begin
for i:=1 to n do
for j:=1 to n do
summ:=summ+Q[i,j];
end;
sredarifm:=summ/(n*n);
end; //функция расчёта среднего арифметического матрицы
Procedure zamena(w:real; var p:mass );
var i,k:integer;
Begin
k:=0;
for i:=1 to n do
if module(p[i])<w then
Begin
k:=k+1;
p[i]:=0;
end;
writeln;
for i:=1 to n do
write(p[i]:8:2);
Write(' Число замен в данной строке : ',k);
end; // написал процедуру, считаем количество элементов массива р модули которых больше меньше или равны r,
Var
i,j:integer;
w:real;
A:matr;
c:mass;
Begin
Write('Введите контрольную величину W : ');
Readln(w);
Writeln('Заполните матрицу А: ');
for i:=1 to n do
Begin
write('Введите ',i,' строку из ',n,' элементов : ');
for j:=1 to n do
Begin
read(A[i,j]);
end;
end;
writeln;
writeln(' Исходная матрица А: ');
writeln;
for i:=1 to n do
Begin
for j:=1 to n do
write(A[i,j]:8:2);
writeln;
end;
writeln;
writeln(' Измененная матрица А: ');
for i:=1 to n do
Begin
for j:=1 to n do
c[j]:=A[i,j];
zamena(w,c);
for j:=1 to n do
A[i,j]:=c[j];
end;
writeln;
writeln;
Writeln(' Среднее арифметическое полученной матрицы : ', sredarifm(A):0:2);
end.
Окно вывода выглядит так:
PHP код:
Введите контрольную величину W : 5
Заполните матрицу А:
Введите 1 строку из 3 элементов : 1 3 6
Введите 2 строку из 3 элементов : 1 2 8
Введите 3 строку из 3 элементов : 0 1 9
Исходная матрица А:
1.00 3.00 6.00
1.00 2.00 8.00
0.00 1.00 9.00
Имененная матрица А:
0.00 0.00 6.00 Число замен в данной строке : 2
0.00 0.00 8.00 Число замен в данной строке : 2
0.00 0.00 9.00 Число замен в данной строке : 2
Среднее арифметическое полученной матрицы : 2.56
Не знаю почему, но мне больше нравится вводить матрицу таким образом (возможно это не совсем верно):
PHP код:
Введите 1 строку из 3 элементов : 1 3 6
Введите 2 строку из 3 элементов : 1 2 8
Введите 3 строку из 3 элементов : 0 1 9
Т.е. таким кодом:
PHP код:
for i:=1 to n do
Begin
write('Введите ',i,' строку из ',n,' элементов : ');
for j:=1 to n do
Begin
read(A[i,j]);
end;
end;
Так же в программу можно добавить процедуру, считающую число нулей (замен) в матрице (не желательно):
PHP код:
Procedure chislozamen(A:matr);
var i,j,k:integer;
Begin
k:=0;
for i:=1 to n do
Begin
for j:=1 to n do
Begin
if A[i,j]=0 then
k:=k+1;
end;
end;
Writeln(' Общее число замен в матрице равно : ',k);
end; //процедура считающая нули изменённой матрицы - т.е. и число замен
Эта процедура считает именно нули и при контрольной величине, равной нулю, она не будет работать, поэтому её лучше не использовать
Другого способа посчитать общее число замен не нашёл, в принципе это не требуется в задании...
Владимир, ещё раз спасибо!
Вы как всегда описали всё предельно информативно.