Диагонали, параллельные побочной диагонали матрицы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Диагонали, параллельные побочной диагонали матрицы |
Igorok |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 12 Репутация: 0 |
Помогите, плиз!
Дана целочисленная матрица. Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы Надеюсь на вашу помощь! И вообще как определить наприммер сумму элементов побочной диагонали? |
Анка |
Сообщение
#2
|
Гость |
Пусть матрица размером N*N.
Тогда элементы побочной диагонали имеют индексы [i, n-i+1]. Остается только в цикле перебрать i от 1 до N и посчитать сумму элементов с этими индексами. Диагоноли, параллельные побочной. Тогда индексы элементов - [i, (n+k)-i+1]. k - это смещение диагонали относительно побочной (может быть и отрицательным и положительным). Получается, что ищем элементы побочной диагонали матрицы размером (N+K)*(N+K) |
Igorok |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 12 Репутация: 0 |
Всем ещё раз привет! Ну получил я сумму элементов побочной диагонали, а вот диагонали параллельные побочной..., то есть и их я могу получить, например, сумма следующей диагонали(ниже побочной) -
Код for i:=2 to n do begin inc(k); sm:=sm+mas[i,(n+k)-i+2]; end; но она же не одна, допустим матрица будет 10*10, тогда как в цикле мне просуммировать все элементы диагоналей, параллельные побочной по отдельности ? ??? Ещё раз прошу - помогите! А это нахождение суммы элементов побочной диагонали: Код uses crt; const n=3; var i,j,sum:integer; mas:array[1..n,1..n] of integer; begin writeln('Ввод элементов-> '); for i:=1 to n do for j:=1 to n do read(mas[i,j]); sum:=0; writeln; for i:=1 to n do begin sum:=sum+mas[i,n-i+1]; end; write(sum); sm:=0; k:=0; readkey; end. |
Анка |
Сообщение
#4
|
Гость |
Нужно перебрать k от 1 до 2N.
|
Igorok |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 12 Репутация: 0 |
Послушай, Анка, судя по всему Аня, да? Так вот, Аня, если знаешь, напиши плиз всю программку, ну... в смысле получение сумм диагоналей, параллельных побочной, ну чо-т не лезет в меня такая фигня, не могу я сделать, помоги! Плиз! Покажи мне где раки зимуют! Заранее благодарен! :
|
Igorok |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 12 Репутация: 0 |
Вообще вся задача звучала так:
В одномерном массиве, состоящем из вещественных элементов вычислить: 1) максимальный элемент массива; 2) сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. А вот её решение: Код uses crt; var a: array [1..100,1..100] of integer; b: array [1..100] of integer; i,j,n,s: integer; summ, min, ukaz: integer; begin {************************Заполнение матрицы******************} randomize; clrscr; writeln('Введите размерность матрицы->'); readln(n); For i:=1 to n do begin For j:=1 to n do begin a[i,j] := random(10)-5; write (a[i,j]:2,' '); end; writeln; b[i]:= 0; min:=a[1,1]; end; {************************Сумма в столбцах********************} ukaz:=0; for j:=1 to n do begin s:=0; for i:=1 to n do if A[i,j] >= 0 then inc(s, A[i,j]) else begin s:=-1; ukaz:=ukaz+1; break end; if s >= 0 then writeLn(' Сумма в неотрицательном столбце-> ', s) else if ukaz=n then writeln('Положительных столбцов в матрице нет'); end; {************************Сумма выше диагоноли****************} writeln; writeln('Суммы диагоналей выше побочной диагонали(по модулю):'); For j:=1 to n-1 do Begin summ := 0; For i:=1 to n-j do summ := summ + abs(a[i,n-j-i+1]); b[j] := summ; if abs(b[j])<min then min:=abs(b[j]); write(b[j],' '); end; {*************************Сумма ниже диагоноли***************} writeln; writeln; writeln('Суммы диагоналей ниже побочной диагонали(по модулю):'); For j:=2 to n do Begin summ := 0; For i:=j to n do summ := summ + abs(a[i,n-i+j]); b[j+n-2] := summ; if abs(b[j+n-2])<min then min:=abs(b[j+n-2]); write(b[j+n-2],' '); end; writeln; {*************************Нахождение минимальной суммы по модулю**} { For i:=1 to 2*n-2 do Begin end; } writeln; writeln('Минимум среди сумм модулей элементов диагоналей, параллельных побочной->',abs(min)); readkey; end. Всем спасибо! |
Евгений |
Сообщение
#7
|
Гость |
Цитата Дана целочисленная квадратная матрица. Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы Что-то я не понял как решать эту задачу? Подскажите, плз |
Текстовая версия | 15.09.2024 20:09 |