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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2020, 10:07   #1
Dualuk
Новичок
Джуниор
 
Регистрация: 23.12.2020
Сообщений: 3
По умолчанию Диагонали параллельные побочной

Здравствуйте. Необходимо найти суммы диагоналей параллельные побочной.
Я реализовал для квадратной матрицы. Но вся проблема в том, что нужно для прямоугольной матрицы...
Код:
const n=4;m=5;
Var A:array[1..n,1..m] of integer=((1,1,3,5,0),
                                   (0,2,1,0,5),
                                   (0,3,1,0,0),
                                   (1,2,1,3,0));
    B:array[1..n,1..m] of integer;
    i,j,summ:integer;
Begin
    writeln('Суммы диагоналей выше побочной диагонали:');
  For j:=1 to n-1 do
  Begin
     summ := 0;
     For i:=1 to n-j do
        summ := summ + a[i,n-j-i+1];
     writeln(summ,' ');
  end;
  writeln; writeln;
  writeln('Суммы диагоналей ниже побочной диагонали:');
  For j:=1 to n do
  Begin
     summ := 0;
     For i:=j to n do
        summ := summ + a[i,n-i+j];
     writeln(summ,' ');
  end;
end.
Прикрепил полное задание...
Изображения
Тип файла: jpg LQaRCBij4uQ.jpg (64.0 Кб, 16 просмотров)
Dualuk вне форума Ответить с цитированием
Старый 23.12.2020, 11:00   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код не соответствует заданию. Не?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.12.2020, 11:12   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

считаем сумму диагонали только одной ячейки a[х, y] матрицы MxN
Код:
mm:=max(m, n);
  
  s:=0;
  for j:=  0-mm to mm do begin
         if x+j<1 then continue // левее
    else if x+j>m then continue // правее
    else if y+j<1 then continue // выше
    else if y+j>n then continue // ниже
    else s:=s +a[x+j, y+j]; // ну наконец-то
  end;
  b[x,y]:=s;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 23.12.2020 в 11:14.
evg_m на форуме Ответить с цитированием
Старый 23.12.2020, 11:43   #4
Dualuk
Новичок
Джуниор
 
Регистрация: 23.12.2020
Сообщений: 3
По умолчанию

Спасибо)
Dualuk вне форума Ответить с цитированием
Старый 23.12.2020, 13:38   #5
Dualuk
Новичок
Джуниор
 
Регистрация: 23.12.2020
Сообщений: 3
По умолчанию

evg_m, Ваш код не работает. К сожалению...
Вернее не правильно вычиляет.

Последний раз редактировалось Dualuk; 23.12.2020 в 14:21.
Dualuk вне форума Ответить с цитированием
Старый 23.12.2020, 15:08   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Вернее не правильно вычиляет.
соввершено верно, он для диагоналей параллельных главной ( x+j, y+j)
а вам нужны немного другие...
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу Pascal. найти сумму побочной диагонали матрицы, умноженной на минимальный элемент главной диагонали Njr54321 Помощь студентам 5 15.05.2019 09:24
Заменить в коде параллельные главной, на параллельные побочной диагонали ggjgj Общие вопросы C/C++ 2 13.04.2017 11:56
Отсортировать диагонали, параллельные побочной по возрастанию ggjgj Помощь студентам 3 08.04.2017 19:11
Отсортировать диагонали матрицы параллельные побочной по возрастанию элементов методом выбора. - C++ vladrrom Помощь студентам 1 18.03.2017 11:48
pascal или Delphi: массив A[n,n]. Если на главной диагонали нет отрицательных элементов, то элементы побочной диагонали - удвоить, Ману Помощь студентам 3 29.05.2014 18:00