Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Диагональ матрицы 
:(
    Опции темы
KuCa
Дата 27.12.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



Дана квадратная матрица. Нужно найти в матрице диагональ(параллельную главной диагонали) сумма элементов которой минимальна.

Помогите пожалуйста бедной девушке. Завтра последний день сдачи, иначе без зачета останусь=((((((
PM   Вверх
Kuvaldis
Дата 27.12.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



KuCa, 
Код

program mass;

const
    MAX = 40;

Var
   matrix : Array [1..MAX, 1..20] of integer;
   n : integer;
   i, j : integer;
   min_sum, sum : integer;
   i_min, j_min : integer;

Begin
   Writeln('Input matrix size (max = ', max, ')');
   Readln(n);

   randomize;
   Writeln('Input elements');
   for i := 1 to n do
       for j := 1 to n do
          read(matrix[i, j]);
       

   // инициализация: считаем, что минимум - это первая нижняя диагональ
   // читаем ее сумму для дальнейших сравнений
   i_min := 2;    // запомнить координаты верхей позиции нужной диагонали
   j_min := 1;

   for j := 2 to n do
      min_sum := min_sum + matrix[j, j - 1];


  // смотрим диагонали под главной
   for i := 3 to n do
   begin
       sum := 0;
       for j := i to n do
           sum := sum + matrix[j, j - i + 1];

       if (sum < min_sum) then
       begin
          min_sum := sum;
          i_min := i;
          j_min := 1;
       end;
   end;

  // смотрим диагонали над главной
   for j := 2 to n do
   begin
       sum := 0;
       for i := j to n do
           sum := sum + matrix[i - j + 1, i];

       if (sum < min_sum) then
       begin
          min_sum := sum;
          i_min := 1;
          j_min := j;
       end;
   end;

   Writeln;
   Writeln('Diagonal');
   while ((i_min <= n) and (j_min <= n)) do
   begin
       write(matrix[i_min, j_min] : 4);
       Inc(i_min);
       Inc(j_min);
   end;

   Writeln;
   Writeln('Sum = ', min_sum);

   Writeln('Press any key to exit');   
   readln;
   readln;
end.


Это сообщение отредактировал(а) Kuvaldis - 27.12.2006, 22:00


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
KuCa
Дата 27.12.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.12.2006

Репутация: нет
Всего: нет



Спасибо тебе большое. Теперь я не вылечу smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.