если первая строка прямоугольной матрицы имеет максимальное количество отрицательных элементов, проверить, как изменится среднее арифметическое всей матрицы, если заменить все отрицательные элементы матрицы их модулями.
помогите пожалуйста написать функцию отыскания среднего арифметического и процедуру замены отрицательных чисел их модулями.
функции и процедуры
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Какая версия Pascal?
Массив статический или динамический?
Массив статический или динамический?
5 версия
массив статический
массив статический
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
type
TMyArray = Array[1..M,1..N] of ....
....
{функция подсчета количества отрицательных элементов в строке ARow}
function NegativeItemsOnRow(A:TMyArray; ARow):integer;
var
Result:integer; ACol:integer;
begin
Result:=0;
For ACol:=1 to N do if A[ARow,ACol]<0 then inc(Result);
NegativeItemsOnRow:=Result;
end;
{функция нахождения среднего}
function Average(A:TMyArray):real;
var
Sum:real; ACol,ARow:integer;
begin
Sum:=0;
For ARow:=1 to M do for ACol:=1 to N do Sum:=Sum+A[ARow,ACol];
Average:=Sum/M/N;
end;
{процедура замены на модули}
function ReplaceNegByAbs(A:TMyArray);
var
ACol,ARow:integer;
begin
For ARow:=1 to M do for ACol:=1 to N do
if A[ARow,ACol]<0 then A[ARow,ACol]:=Abs(A[ARow,ACol]);
end;
проверьте, пожалуйста, ошибки
Код: Выделить всё
program lab_15;
uses crt;
type
TMyArray = Array[1..3,1..3] of integer;
procedure EneterMatrix(x,y:integer; var A:TMyArray);
var M,N:integer;
begin
writeln ('vvedite elementi matrici');
for M:=1 to x do
for N:=1 to y do begin
write ('A[',M,',',N,']=');
readln (A[M,N]);
end;
end;
procedure NegativeItemsOnRow(A:TMyArray, var C:TMyArray, var CRow:integer);
var
ARow,ACol:integer;
Result:integer; ACol:integer;
begin
Result:=0;
ACol:=1;
for ARow:=1 to m do
begin
for ACol:=1 to n do
begin
if A[ARow,ACol]<0 then inc(Result);
C[CRow]:=Result;
end;
end;
end;
procedure MaxElement (C:TMyArray, var k:integer);
var CRow:integer;
for CRow:=1 to M do begin
max:=C[1];
if C[CRow]>C[1] then max:=C[CRow];
k:=C[CRow];
end;
function Average(A:TMyArray):real;
var
Sum:real; ACol,ARow:integer;
begin
Sum:=0;
for ARow:=1 to M do
for ACol:=1 to N do
Sum:=Sum+A[ARow,ACol];
Average:=Sum/M/N;
end;
procedure ReplaceNegByAbs(A:TMyArray, var B:TMyArray);
var
ACol,ARow:integer;
BRow,BCol:integer;
begin
for ARow:=1 to M do
for ACol:=1 to N do
if A[ARow,ACol]<0 then A[ARow,ACol]:=Abs(A[ARow,ACol]);
B[BRow,BCol]:=Abs(A[ARow,ACol]);
end;
function AverageB (B:TMyArray):real;
var sum:real, BCol,BRow:integer;
begin
sum:=0;
for BRow:=1 to M do
for BCol:=1 to N do
sum:=sum B[BRow,BCol];
Average:=sum/M/N;
end;
begin
Enetrmatrix(3,3,A);
NegativeItemsOnRow (A,ARow);
MaxElement (C,k);
if k<>1 then
writeln ('yslovie ne vipolnyaetsya');
Average(A);
ReplaceNegByAbs(A,B);
for BRow:=1 to M do begin
for BCol:=1 to N do
write (B[BRow,BCol];
writeln;
end;
AverageB(B);
writeln ('Raznost ravna',Average(A)-AverageB(B));
readln;
end.