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

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

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

 
 Ответить  Открыть новую тему 
> Диагонали, параллельные побочной диагонали матрицы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12

Репутация: -  0  +


Помогите, плиз!  
Дана целочисленная матрица. Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Надеюсь на вашу помощь! И вообще как определить наприммер сумму элементов побочной диагонали?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Пусть матрица размером N*N.
Тогда элементы побочной диагонали имеют индексы [i, n-i+1]. Остается только в цикле перебрать i от 1 до N и посчитать сумму элементов с этими индексами.
Диагоноли, параллельные побочной. Тогда индексы элементов  -  [i, (n+k)-i+1].
k - это смещение диагонали относительно побочной (может быть и отрицательным и положительным). Получается, что ищем элементы побочной диагонали матрицы размером (N+K)*(N+K)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Нужно перебрать k от 1 до 2N.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 12

Репутация: -  0  +


Послушай, Анка, судя по всему Аня, да? Так вот, Аня, если знаешь, напиши плиз всю программку, ну... в смысле получение сумм диагоналей, параллельных побочной, ну чо-т не лезет в меня такая фигня, не могу я сделать, помоги! Плиз! Покажи мне где раки зимуют! Заранее благодарен! :smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.


Всем спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Дана целочисленная квадратная матрица. Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы

Что-то я не понял как решать эту задачу? Подскажите, плз rolleyes.gif
 К началу страницы 
+ Ответить 

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

 




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