Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2015, 11:10   #1
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию Паскаль.определение разности сумм главных и побочных диагоналей.

Составить программу, которая будет определять разность сумм главных и побочных диагоналей двух двумерных массивов размером МхМ с использованием процедуры...в общем программу составил, однако процедура не срабатывает, прошу помогите и скажите что не так ибо в процедурах я слабоват

Код:
program raznost;
 uses crt;
const
  n=4;
var
  a:array[1..n,1..n] of integer;
  sum,sum1,sum2,i,j:integer;

procedure mass(var summ:integer);
var
i,j,s1,s2:integer;
begin
     if i=j then s1:=s1+a[i,j];
     if i+j=n+1 then s2:=s2+a[i,j];
    summ:=s1+s2;
   writeln;
 end;

begin
randomize;
writeln;
writeln('----------МАССИВ----------');
writeln;
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     a[i,j]:=random(10);
     write(a[i,j],' ');
    end;
    writeln;
  end;
  
 mass(sum1);
 
 randomize;
writeln;
writeln('----------МАССИВ----------');
writeln;
 for i:=1 to n do
  begin
   for j:=1 to n do
    begin
     a[i,j]:=random(10);
     write(a[i,j],' ');
    end;
    writeln;
  end;
  
 mass(sum2);
 
 sum:=sum1-sum2;
 writeln;
 writeln('разность сумм главных и побочных диагоналей матриц = ',sum);
 Readln;
end.
reijii_nia вне форума Ответить с цитированием
Старый 19.05.2015, 11:43   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
procedure mass(var summ:integer);
var
  i,j,s1,s2:integer;
begin
  {обязательно обнулить переменные!}
  s1 := 0;
  s2 := 0;
  
  {а циклы Вы забыли?! }
  for i:=1 to n do
    for j:=1 to n do begin
       if i=j then s1:=s1+a[i,j];
       if i+j=n+1 then s2:=s2+a[i,j];
   end;
   summ:=s1+s2;
 end;

p.s. но можно и одним циклом обойтись:
Код:
procedure mass(var summ:integer);
var
  i : integer;
begin
  summ := 0;
  for i:=1 to n do begin
       summ := summ+a[i,i]; {суммируем элемент главной диагонали}
       summ := summ+ a[i, n+1-i]; {суммируем элемент побочной диагонали}
  end;
end;

Последний раз редактировалось Serge_Bliznykov; 19.05.2015 в 11:47.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2015, 11:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И не сработает )
Во-первых тебе нужно две процедуры: Одна для главной другая для побочной. Во-вторых в процедуре нет цикла. Код то ты откуда-то видать взял, и попытался свое внести. Неудачка приключилась: Циклы тебе срочно придется изучать. Или хотя бы смотреть как в этом коде ввод матрицы делается, как пример прохода циклом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2015, 11:57   #4
reijii_nia
Пользователь
 
Регистрация: 29.03.2014
Сообщений: 19
По умолчанию

Спасибо огромное...
на каникулах побольше почитаю про процедуры...
reijii_nia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы beavis1990 Общие вопросы C/C++ 4 20.08.2011 14:36
электромагнитный перехват побочных излучений компьютера и человека... mkultra Безопасность, Шифрование 5 10.07.2011 12:07
заполнение главных диагоналей динамичного массива shopot Microsoft Office Excel 2 14.02.2011 22:11
максумум сумм элементов диагоналей //главной Monomah Общие вопросы C/C++ 2 01.12.2010 01:11
Вычисление конечных сумм. паскаль. lammy Помощь студентам 2 05.03.2010 13:49