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

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

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

> Паскаль АВС процедуры. Сумма диагоналей 3х массивов., Процедура вывода массива и нахождение суммы диагоналей 3х массивов.
nana1
сообщение 13.02.2011 14:23
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
volvo
сообщение 13.02.2011 14:48
Сообщение #2


Гость






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

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

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

 



- Текстовая версия 20.07.2025 14:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"