![]() |
Модераторы: volvo877, Snowy, MetalFan |
![]() ![]() ![]() |
|
Anonymous |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Здравствуйте. У меня задача... Сформулировать ее сложно, т.к. четкой цели нет, мне, так сказать, объясняли на пальцах.
Текст моей программы во вложенном файле, очень долго в ручную забивать пришлось бы. Смысл таков: 1. Вводим матрицу произвольного размера, но квадратную; 2. Транспонируем ее; 3. Складываем эл-ты каждого столбца, т.е. если матрица 3 на 3, у нас получится 3 суммы; 4. Сравниваем суммы, выводим на экран номер столбцов с макс и мин суммой; 5. В соответствии с этими суммами выстраиваем матрицу в порядке убывания (от большего к меньшему), если это пункт не понятен, ниже я привду пример; 6. Транспонировать еще раз и вывести на экран. Пример: 1. Вводим матрицу 3 на 3 : 2 3 6 5 7 9 1 4 8 2. Транспонируем, получаем: 2 5 1 3 7 4 6 9 8 3. Находим суммы эл-тов: 1ый столбец = 11 2ой = 21 3ий= 13 4. Сравниваем, получаем, что макс сумма во 2ом столбце, а мин в 1ом, выводим на экран; 5. В соответствии с суммами выстраиваем матрицу: 5 1 2 7 4 3 9 8 6 6. Транспонируем еще раз, получаем: 5 7 9 1 4 8 2 3 6 Вот это и надо вывести. Теперь, загвоздка состоит в том, что не выводится транспонированная матрица (ниодна) и не выстраивается сама матрица. Помогите, пожалуйста. Заранее благодарен. Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: нет Всего: 17 |
Юзай поиск, такой вопрос уже был и не раз!
-------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Это не код а сплошной кошмар и ужас!
Зачем делать процедуру вывода матрицы если ее вывод и так производится по ходу дела. Надо сильно реоганизовать алгоритм, поскольку в нем сильно страдает логика и прозрачность! Это сообщение отредактировал(а) alexeis1 - 20.7.2006, 15:45 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Anonymous |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Ну у меня же почти написана прога
![]() ![]() Добавлено @ 15:49 мда... я рассчитывал на помощь....а на сколько понимаю, помогать отказываетесь? |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Да ни кто не отказывается
этот код дважды транспонирет матрицу Нужно
либо кода транспонирования я вообще не нашел... -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
И еще -
я непонял зачем числа n и m вводить если матрица квадратная, имеет смысл оставить только одно из них. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
VAngeL86 |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: нет Всего: 1 |
Твой код не такой уж и большой
...но структура конечно ужасная...ну да ладно! Я верю ты исправишься! ![]() Теперь ошибки: 1. У тебя действительно есть процедура Транспонирования исходной матрицы (A)...вот только транспонирование это замена строк и столбцов местами, а у тебя простое приравнивание матрицы B к матрице A
Нужно так
2. Если пока не умеешь передавать процедуре параметр по ссылке, т.к. тебе нужно транспонировать сначала исходную матрицу, а потом и изменённую в соответствии с заданием (т.е. 2 разных матрицы) тебе нужно 2 процедуры Транспонирования что в принципе у тебя имеется, но вот названия они должны иметь разные!! Кстати во второй процедуре транспонирования ошибка аналогичная "1" (alexeis1 тебе на неё так же указывал). Но она не единственная! Нужно матрице D присваивать значения матрицы C, а не наоборот. 3. Ну и главное...процедуры то транспонирования ты написал, а использовать их кто будет?? ![]()
...здесь в процедуре Process_matrix используются 2 процедуры транспонирования, следовательно они в коде должны быть расположены выше процедуры Process_matrix! 4. На счет выстраивания матрицы в соответствии с суммами столбцов....я не проверял....но что то твой код мне не нравится...на сколько я визуально могу оценить, ты лишь ставишь столбец с максимальной суммой на 1 место, а с минимальной на последнее...а тебе нужно ОТСОРТИРОВАТЬ по убыванию! Для этого создай массив (одномерный ) с суммами по столбцам (т.е. massiv[1] = сумме элементов столбца исх.транспонир.матрицы). И сортируй по убыванию любым из известных тебе методом (метод вставок, пузерёк... ), но только когда будешь менять местами элементы меняй еще и соответствующие столбцы матрицы 5. У тебя процедура вывода матрица выводит лишь матрицу A, т.е исходную!! Здесь аналогия с "2"...не умеешь передавать по ссылке - пиши 2 процедуры! Результат у тебя должен быть матрица D. Вот её и выводи. ...а вообще у тебя очень много лишнего в программе! Но это твоё детище! Успехов! ![]() |
||||||||
|
|||||||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
А не снизойдет ли уважаемый и умеющий передавать параметры по ссылке VAngeL86 до объяснения нам, непонятливым, зачем, собственно, при ВЫВОДЕ матрицы, ее обязательно передавать по ссылке? Если я ее передам по значению, от этого что, многое изменится? Или просто, чтобы пост выглядел более внушительным, желательно добавить много страшных слов? Так вот, ЭТОГО делать не надо! Если не знаешь чего-то - лучше об этом не пиши... |
|||
|
||||
Anonymous |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 26.4.2006 Репутация: нет Всего: нет |
Вот я тут сделал это же, но без процедур.
Почему кроме ответа вывожу промежуточные операции? Это делаю для того, чтобы было видно, что, как и почему. Это сообщение отредактировал(а) Anonymous - 21.7.2006, 14:20 |
|||
|
||||
Alexeis |
|
||||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
VAngeL86, чтож вы так Anonymousа не любите ![]()
Проверьте что же получится в результате вашего преобразования! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Короче, вот рабочий исходник. Я проверял по твоему примеру - все работает.
|
|||
|
||||
VAngeL86 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 29.4.2006 Где: Хабаровск Репутация: нет Всего: 1 |
Я не хотел быть более внушительным, просто это так называется ....но в выводе матрицы на экран этого ДЕЙСТВИТЕЛЬНО можно не делать! Но вот в процедурах, где происходит изменение матрицы это делать следует ...или я не прав?
мда...мда....не повторится!.... |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi" | |
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |