2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
||||||
1 | ||||||
Исключить строку и столбец, на пересечении которых находится минимальный элемент главной диагонали18.06.2013, 23:46. Показов 1766. Ответов 16
Метки нет (Все метки)
Задана матрица n*n. Исключить строку и столбец, на пересечении которых находится минимальный элемент главной диагонали.
Не могу понять как исключить строку и столбец/сделать новый массив без строки столбца, где минимальный диагональный элемент. Написал только пока это:
0
|
18.06.2013, 23:46 | |
Ответы с готовыми решениями:
16
Удалить из матрицы строку и столбец, на пересечении которых находится минимальный элемент Обнулить строку и столбец матрицы, на пересечении которых находится её максимальный элемент Строку и столбец матрицы, на пересечении которых находится мин. элемент, заменить нулями Удалить из матрицы строку или столбец, на пересечении которых расположен наименьший по модулю элемент |
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
||||||
19.06.2013, 12:01 | 2 | |||||
Если еще нужно...
Здесь несколько моментов. 1. Присваивание переменным зарезервированных имен (Min) может плохо закончится! Переименовал на mMin. 2. Нужно следить за Option base. Иногда из-за этого нужно делать кучу лишних движений. Здесь это сделано при обявлении массивов (e.g. Dim matrixA(1 To 5, 1 To 5) As Integer). 3. Паралельно запись значений на лист при генерации - лишнее. 4. Переименовал/убрал/добавил некоторые переменные с более понятными именами. 5. Изменил тип некоторых из Byte на Long. Лучше сразу привыкат - меньше ошибок в будущем. Все остальное - где-то так:
1
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 19:01 [ТС] | 3 |
Спасибо. Но думаю переменная c лишняя, т.к. матрица квадратная
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
19.06.2013, 19:26 | 4 |
Вы полностью правы. А вобщем, в таких случаях я подключаю к массивам, например, коллекции (легче работать комплексно с рядом или столбцом), или что-то еще (по ситуации). Показать?
0
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 19:54 [ТС] | 5 |
Мне вот непонятно почему в самом начале 3 if и 2 end if, а конце программы end if нет вообще?
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
||||||
19.06.2013, 20:01 | 6 | |||||
Вы еще лучше выкладываете свои мысли, чем я!!! Мне аж завидно стало!!!
Но если я понял правильно, то Вас интересует такая форма записи:
0
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
||||||
19.06.2013, 20:13 [ТС] | 7 | |||||
Понял. Спасибо. Переделал немного под себя, тип long использовать тоже не вижу смысла, когда у меня числа ограничены значениями -3 до 45.
Убрал вывод с with и др. незнакомыми мне функциями. В итоге получилось вот:
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
19.06.2013, 20:38 | 8 |
Вот почему через раз - идите пошагово. И проверьте ч/з Locals.
В этом Вы очень ошибаетесь: А что у Вас такая симпатия к Cells(20, 1)? Не проще железку научить самой принимать решения? Добавлено через 9 минут Вот Вам конкретно. У Вас pin As Byte. Откуда у Вас такая уверенность, что генератор выдает в Вашем случае от 0 до 255?
0
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 20:42 [ТС] | 9 |
В смысле? Что есть locals?
Да дело в том, что 21 у меня экзамен по информатике, нужно прийти и решить пару задач по VBA. Это последний семестр информатики. Поэтому в дебри не хочу лезть, да и к vba особой симпатии я не проявляю. Добавлено через 2 минуты Поправил. Заметил когда в матрице первый элемент наименьший, то программа не срабатывает. Точнее значение k определяется как 0. В начало программы добавил k=1. Но теперь когда наименьшим элементом диагонали является матрица(5,5) последний, программа не срабатывает.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
19.06.2013, 20:51 | 10 |
Весело! Не хочу Вас переубеждать по любви к VBA и не знаю, какая у Вас специальность. Но... Большинству людей, поверьте, по барабану красивые, заумные приложения. Им главное быстро и эфективно выполнять ежедневные задачи, и понимать, что они делают. На сегодня - VBA одно из лучших решений "для каждого и на каждый день". От учителя грамматики, ....., и до инженера.
0
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 20:56 [ТС] | 11 |
Надеюсь, что время мне в будущем не преподнесет сюрпризы с VBA. Специальность: промышленное и гражданское строительство.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
19.06.2013, 21:02 | 12 |
Идите пошагово (F8). Locals - это дополнительное информативное окно для отладки VBA (View >> Locals Window), где можно видеть состояние Ваших переменных (массивов, коллекций, ...) на данный момент.
Добавлено через 2 минуты "Специальность:... ". Вот теперь могу утверждать на 100% - точно потом сюрпризы будут!!!
1
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 21:09 [ТС] | 13 |
Все понял в чем косяк. Дело в том что когда минимальный элемент главной диагонали является matrixA(5,5), то при формировании нового нужно учитывать, что перескакивать не нужно.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
|
19.06.2013, 21:12 | 14 |
Ну все... Достали...Сейчас выдам... Есть у меня друг - гинеколог. Нарадоваться не может, что выучил VBA (я ему помогал! ). Чаще стал с мной на пиво ходить. Отдых - безподобный!!!! Я про роботу после работы - ни слова (что его интересует!). Принцып у меня такое (немного, но есть). А про то, что меня интересует - ему этика запрещает... Вот мы молча так: выпили, покурили, помолчали, налили... Что может быть лучше - природа, молчание, пиво, друзья...
0
|
2 / 2 / 0
Регистрация: 02.10.2012
Сообщений: 69
|
|
19.06.2013, 21:28 [ТС] | 16 |
Спасибо за помощь. Разобрался все работает. (условие: If k = 5 Then k = k - 1). Хотя, нет. Не то. Удаляет предыдущий столбец, когда нужно чтобы удалил пятый. Добавлено через 9 минут Подправил условие, все работает.
0
|
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
|
||||||
19.06.2013, 21:29 | 17 | |||||
Пока Вы думали, я накидал с коллекцией. Попробуйте. Хоть это так, приблизительно.
0
|
19.06.2013, 21:29 | |
19.06.2013, 21:29 | |
Помогаю со студенческими работами здесь
17
Поменять местами строку и столбец, в которых находится максимальный элемент Определить во сколько раз отличаются максимальный элемент на главной диагонали и минимальный элемент на не главной диагонали Записать нули в ту строку и столбец, где находится элемент Найти сумму элементов столбца и строки матрицы, на пересечении которых находится максимальный элемент матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |