Помощь - Поиск - Пользователи - Календарь
Полная версия: Паскаль АВС процедуры. Сумма диагоналей 3х массивов.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nana1
Даны 3 двумерных массива A, B, C неодинаковой размерности. Разработать 2 процедуры: 1) процедуру для ввода размеров и элементов массива. 2) процедуру вычисления суммы диагональных элементов в каждом массиве. 3) процедуру вычисления суммы 1-ой строки массива. 4) процедуру вывода на экран элементов массива. В программе вычислить общую сумму диагональных элементов трех массивов. Результаты выдать на экран в программе.
Дошла до общей суммы диагоналей и все ступор. Что делаю не так? подскажите и, по возможности, исправьте.
program z_3;

type mas=array[1..100, 1..100] of integer;
Var
A,B,C : mas;
sa,sb,sc: integer;
sum:real;
procedure sm(VAR A:mas; Var s:integer);
Var
i,j,n,m,k: integer;

Begin
writeln('Введем размеры двумерного массива:');
write(' Количество строк: '); readln(n);
write(' Количество столбцов: '); readln(m);

writeln('Заполним массив:');
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);

writeln; sum:=0;
k:=1;
for j:=1 to m do sum:=sum+a[k,j];
writeln('Сумма 1-го столбца равна ', sum);


writeln; sum:=0;
writeln('Сумму элементов какой диагонали необходимо найти:');
write('Диагональ слева-направо- 1, справа-налево - 2: '); readln(k);
if(k=1)then
begin
j:=1;
for i:=1 to n do
begin
sum:=sum+a[i,j];
j:=j+1;
end;
end;

if(k=2)then
begin
j:=m;
for i:=n downto 1 do
begin
sum:=sum+a[i,j];
j:=j-1;
end;
end;
writeln('Сумма равна ',sum);

end;
Begin
sm(A, sa );
sm(B, sb);
sm(C, sc);
begin
sum:=0;
sum:=sa+sb+sc;
writeln ( 'сумма диогоналей 3х массивов =' , sum:8:2);
end;

end.
volvo
Цитата
Что делаю не так? подскажите
Сумму элементов диагонали нашла в подпрограмме? Но она хранится в глобальной переменной Sum, а не передается назад из процедуры через параметр S... Либо самой последней строкой процедуры добавь S := Sum, либо сразу считай сумму элементов диагонали в S...

А вообще, я бы не стал совмещать эти процедуры. Задание как звучит?
Цитата
1) процедуру для ввода размеров и элементов массива. 2) процедуру вычисления суммы диагональных элементов в каждом массиве. 3) процедуру вычисления суммы 1-ой строки массива. 4) процедуру вывода на экран элементов массива.
Это 4 процедуры, а не 2. Вот и делай их 4 штуки, и пусть каждая из них занимается своим делом: одна вводит данные, вторая считает сумму элементов первой строки, еще одна - сумму диагонали. Ну. и для вывода тоже отдельную процедуру.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.