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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2015, 13:34   #1
r1nz0r
 
Регистрация: 23.10.2015
Сообщений: 8
По умолчанию Диагонали массива [Pascal]

Добрый день. Задали курсовую по инфе, но я человек от неё далекий, поэтому требуется помощь. Вот задание:
Записать двумерный массив A[i,j] размеров NxM. Вывести среднее значение каждой диагонали массива. (то есть все диагонали, параллельные главной и побочной, включая их самих).
Матрица не обязательно квадратная и в этом проблема.
r1nz0r вне форума Ответить с цитированием
Старый 23.10.2015, 13:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и в этом проблема.
Нет тут проблем... Считается так же как и при квадратной.
показывай как пытался - подкорректируем )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2015, 14:05   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я бы так счтал. Аналогично и в другом направлении
Изображения
Тип файла: jpg Безымянный.JPG (4.0 Кб, 46 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2015, 14:27   #4
r1nz0r
 
Регистрация: 23.10.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет тут проблем... Считается так же как и при квадратной.
показывай как пытался - подкорректируем )
Я в принципе не совсем понимаю, как посчитать другие диагонали, помимо главной и побочной, а тут еще и не квадратный массив

Цитата:
Сообщение от Stilet Посмотреть сообщение
Нет тут проблем... Считается так же как и при квадратной.
показывай как пытался - подкорректируем )
для главной получается счет такой

for i:=1 to n do
sum := sum + a[i,i];
sr:=sum/n;

для побочной такой

for i:=1 to n do
sum := sum + a[i,N-i+1];
sr:=sum/n

а вот как делать если она не квадратная, и еще к другим диагонялм переходить? писать a[i-1;i-1] и тд?

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

Для суммы выше главной:
Код:
function diag1(x:integer):Double;
var s:double; i:integer;
begin
 s:=0; i:=1;
 while (x<=m) do begin
  s:=s+a[i,x];
  inc(x); inc(i);
 end;
 diag1:=s;
end;
Для суммы ниже главной:
Код:
function diag2(y:integer):Double;
var s:double; i:integer;
begin
 s:=0; i:=1;
 while (y<=n) do begin
  s:=s+a[y,i];
  inc(y); inc(i);
 end;
 diag2:=s;
end;
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2015, 15:34   #6
r1nz0r
 
Регистрация: 23.10.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Для суммы выше главной:
Код:
function diag1(x:integer):Double;
var s:double; i:integer;
begin
 s:=0; i:=1;
 while (x<=m) do begin
  s:=s+a[i,x];
  inc(x); inc(i);
 end;
 diag1:=s;
end;
Для суммы ниже главной:
Код:
function diag2(y:integer):Double;
var s:double; i:integer;
begin
 s:=0; i:=1;
 while (y<=n) do begin
  s:=s+a[y,i];
  inc(y); inc(i);
 end;
 diag2:=s;
end;
Идея ясна?
Вроде бы да. Но получается, что циклом while мы считаем сумму элементов всех диагоналей, что выше/ниже главной, а надо отдельно каждую. И еще считать количество элементов каждой диагонали, я так понял это переменная inc(y) и inc(x)?
r1nz0r вне форума Ответить с цитированием
Старый 23.10.2015, 15:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но получается, что циклом while мы считаем сумму элементов всех диагоналей
Ты код запускал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2015, 01:22   #8
r1nz0r
 
Регистрация: 23.10.2015
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты код запускал?
Да, немного затупил) Получается, тут вся фишка в вызове функции, правильно понимаю? В зависимости от того, какой параметр зададим при её вызове, такую диагональ он нам и посчитает?
r1nz0r вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascal или Delphi: массив A[n,n]. Если на главной диагонали нет отрицательных элементов, то элементы побочной диагонали - удвоить, Ману Помощь студентам 3 29.05.2014 18:00
Произведение положительных элементов гл. диагонали (Pascal) Snake_009 Помощь студентам 2 07.02.2012 10:38
Вывод двумерного массива (положит. и в не главной диагонали) Alexbmgn Помощь студентам 2 29.12.2011 16:11
Отзеркаливание по диагонали (Pascal) darkline Помощь студентам 9 14.02.2011 11:08
Сортировка побочной диагонали Pascal Erges Паскаль, Turbo Pascal, PascalABC.NET 3 10.09.2009 12:15