Помощь - Поиск - Пользователи - Календарь
Полная версия: 2 матрицы, найти среднее арифм.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Serge Я!
Кто-нибудь, помогите!
В матрице 5х5 и 7х7 найти средн. арифм. элементов, кратных трем, лежащих на главной и побочной диагонали. Сделать с помощью Procedure и Function. (В смысле, чтобы средн. арифм. вычислялось с процедурой, второй вариант - с функцией)
Пробовал по-всякому, ну не получается... Help?!
volvo
Покажи, как именно пробовал. Хотя бы 2 СВОИХ варианта приведи... Если "по всякому" - значит, у тебя их должно быть гораздо больше...
Serge Я!
Да пожалуйста...
Вот:
Код

program matx;
uses wincrt;
var a:array[1..5,1..5] of integer; b:array[1..7,1..7] of integer; c:array[1..13] of integer;   <- нужно ли???
i,j,x:integer;
function func:real;
begin
???
???
end;
begin
randomize;
for i:=1 to 5 do for j:=1 to 5 do a[i,j]:=random(9);
for i:=1 to 5 do for j:=1 to 5 do write(a[i,j]:2);

for i:=1 to 5 do for j:=1 to 5 do if (j=i) or (j=6-i) then
if a[i,j] mod 3=0 then begin write(a[i,j]:2); x:=x+1; c[x]:=a[i,j]; end;
writeln;
for x:=1 to 13 do write(c[x]);

writeln;
{writeln(func);}
end.

Не знаю что делать... Может не нужен одномерный массив тут?
volvo
Ну, вот так делается с помощью функции для главной диагонали. Остальное - подумай сам, как сделать...
const
n = 10;
type
mx = array[1 .. n, 1 .. n] of integer;

function average(var m: mx; n: integer): real;
var i, count, s: integer;
begin
s := 0; count := 0;
for i := 1 to n do
if m[i, i] mod 3 = 0 then begin
s := s + m[i, i];
inc(count);
end;

if count > 0 then average := s / count
else average := 0;
end;

var
a, b: mx;
i, j: integer;

begin
for i := 1 to 5 do begin
for j := 1 to 5 do begin
a[i, j] := random(9); write(a[i, j]:3);
end;
writeln;
end;

writeln(average(a, 5));
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.