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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2018, 20:10   #1
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию Сортировка диагональных элементов матрицы

Увидел очередную мольбу студента про сортировку матрицы.
Придумал задачу, сам не могу сообразить:
-Отсортировать (переместить) строки матрицы, так чтоб диагональные элементы стали отсортированы.
СтудПом вне форума Ответить с цитированием
Старый 03.03.2018, 20:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А чего тут соображать? Просто реализовать операции получения значения элемента и перестановки соответствующим образом.

Элемент — строка. Значение — какой-то ее столбец (наверно имеется в виду диагональ в исходной матрице?).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.03.2018, 20:18   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

10 9
11 9

Её не отсортируешь по возрастанию элементов главной диагонали
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2018, 20:46   #4
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Просто реализовать операции получения значения элемента
вот над этим и задумался, надо выбирать тот, который "может быть встанет на диагональ". Впрочем, уже сообразил как пересчитывать индексы.

Цитата:
Сообщение от Аватар Посмотреть сообщение
10 9
11 9

Её не отсортируешь по возрастанию элементов главной диагонали
Отсортировать можно всё. Но ваш пример показывает, что задача поставлена неточно. Спасибо.
СтудПом вне форума Ответить с цитированием
Старый 03.03.2018, 20:50   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Отсортировать можно всё
Нет. Отсортируй ту матрицу по возрастанию элементов главной диагонали слева направо перетаскиванием строк. Задача в исходной постановке не всегда имеет решение

Насчет всё. Как сравнить 3км и 2кг, что больше?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 03.03.2018 в 20:55.
Аватар вне форума Ответить с цитированием
Старый 03.03.2018, 20:56   #6
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Да, правильно. Ступил.
Код:
1 4    2 3
2 3    1 4
Начал думать, что раз универсальный алгоритм сработает (там всего лишь подправить сравнение), то всё ОК, а оказалось - хрен :-/
СтудПом вне форума Ответить с цитированием
Старый 03.03.2018, 22:27   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Как сравнить 3км и 2кг, что больше?
Могучий микрософт ещё не то умеет )
Код:
if 3км GTR 2кг echo brrrr
eoln вне форума Ответить с цитированием
Старый 09.03.2018, 07:51   #8
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код сочинил, оказывается решения не существует!

Код:
var i,j:integer;
    p:array[1..10,1..10] of integer;
    z:array[1..10] of integer;
    d:boolean;
begin
   Randomize;
   For i:=1 to 10 do
   begin
      For j:=1 to 10 do
      begin
         p[i,j]:=Random(21);
         Write(p[i,j]:3,'  ');
      end;
      Writeln;
   end;
   Writeln;
   Repeat
      d:=true;
      For i:=1 to 9 do
         If p[i,i]>p[i+1,i+1] then
         begin
            d:=false;
            For j:=1 to 10 do
               z[j]:=p[i,j];
            For j:=1 to 10 do
               p[i,j]:=p[i+1,j];
            For j:=1 to 10 do
               p[i+1,j]:=z[j];
         end;
   Until d;
   For i:=1 to 10 do
   begin
      For j:=1 to 10 do
         Write(p[i,j]:3,'  ');
      Writeln;
   end;
   Writeln;
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 09.03.2018, 08:22   #9
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Спасибо, уже давно дошло, выше по тексту
СтудПом вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана квадратная матрица порядка n. Получите новую матрицу, у которой строки упорядочены в порядке возрастания диагональных элементов исходной матрицы - Delphi Volkk Помощь студентам 2 02.03.2018 19:34
Помогите составить процедуру - Вычислить сумму диагональных элементов квадратной матрицы Vika2016 Паскаль, Turbo Pascal, PascalABC.NET 36 25.02.2016 00:07
возведение в квадрат диагональных элементов квадратной матрицы (С++) anytka2k Помощь студентам 1 16.11.2011 17:00
ычислить элементы матрицы и найти сумму диагональных элементов [Паскаль] izi2000 Помощь студентам 1 03.01.2011 16:20
Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов Даня Паскаль, Turbo Pascal, PascalABC.NET 13 28.01.2009 16:53