IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Паскаль АВС процедуры. Сумма диагоналей 3х массивов., Процедура вывода массива и нахождение суммы диагоналей 3х массивов.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


Даны 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.05.2024 20:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name