|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.03.2010, 20:49 | #1 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Работа с двумерными массивами (visual basic)
Сформировать произвольно двумерный массив R(8,3) Найти и вывести значение и индексы элемента, являющегося одновременно наименьшим в своей строке и наибольшим в своем столбце. При отсутствии такого элемента вывести сообщение.
Как реализовать алгоритм поиска седловой точки? Я видел, что подобная тема есть, но там другой язык и немного другое. Как я понял этот элемент называется - седловая точка. Ещё я понял, что их может быть несколько. Проблема заключается в том, что я не знаю как эту процедуру составить. То что в неё массив будет передаваться и что там будут циклы - это ясно. Помогите пожалуйста, а то я уже столько над этим сижу... |
13.03.2010, 20:56 | #2 |
Пользователь
Регистрация: 25.02.2010
Сообщений: 17
|
Завтра код пришлю.
Контактная ин-фа 479-275-762, DmitriK181988@gmail.com
|
13.03.2010, 21:32 | #3 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
На языке Дельфи это будет так:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
14.03.2010, 00:10 | #4 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Rusat это было бы хорошо.
В процедуру передаётся сам массив(по значению) и листбокс(по ссылке). Вот пока что у меня на у уме: 1) Находим минимальный элемент первой строки и записываем его индексы в переменные. 2) Зная индексы его второго измерения мы сравниваем его со всеми элемента в его столбце при чём в этом цикле мы добавляем новую переменную, которая при положительном сравнении прибавляется на единицу 3) Потом если эта новая переменная равна (числу строк - 1), то выводим в листбокс этот массив и его значение. 4) Находим минимальный элемент второй строки и опять то же самое делаем. ппц, 1-ый курс только, а голова кипит как будто атомную бомбу изобретаю P.S. Если что, то нам запретили использовать встроенные ф-ции min и max. Хотя мне кажется они здесь не нужны... Последний раз редактировалось Mikle1990; 14.03.2010 в 00:12. |
14.03.2010, 14:49 | #5 |
Пользователь
Регистрация: 25.02.2010
Сообщений: 17
|
Извиняюсь за опоздание, не совсем конечно уверен, но посмотри:
Sub Main() Dim a(4, 4) As Integer 'объявляем массив Dim i, j, k, max, imax, min, jmin As Integer 'для циклов For i = 1 To 4 For j = 1 To 4 'заполняем массив случайными числами a(i, j) = Int(Rnd() * 8) 'Задаем значение Console.Write(a(i, j) & " ") 'и сразу же печатаем Next Console.WriteLine() Next For j = 1 To 4 max = a(1, j) imax = 1 For i = 1 To 4 If a(i, j) > max Then max = a(i, j) imax = i End If Next min = a(imax, 1) jmin = 1 For k = 1 To 4 If a(imax, j) < min Then min = a(imax, j) jmin = j End If Next Next If min = max Then Console.WriteLine(imax) 'искомая строка Console.WriteLine(jmin) 'искомый столбец ElseIf (j = 4) And (min <> max) Then Console.Write("Ne takogo stolbca") End If Console.ReadLine() End Sub
Контактная ин-фа 479-275-762, DmitriK181988@gmail.com
|
14.03.2010, 16:15 | #6 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Почти то, что нужно и даже чуть больше.
Надо было мне наверно сразу написать, но я написал потом и не всё(, и Вы видно не заметили. Вот что хочу сказать: 1) Значения элементов массива уже задано. Так как "Сформировать произвольно" имелось ввиду, что самому надо данные вбивать. Такую процедуру я уже написал(и даже сделал вывод в листбокс) 2) Процедура которая нужна выглядит так: Код:
3) Как я понял при нахождении седловой точки она(её индексы и значение) должны вставляться в какуе-то переменную с типом string... И надо учесть, что седловых точек может быть несколько. 4) На всякий случай привожу процедуру вывода массива, дабы показать как нас учат делать. Код:
Ну вот такие дела. Если есть возможность, то подправьте пожалуйста Ваш код к моему примеру, а я уже буду отлаживать и напишу результат. |
14.03.2010, 17:40 | #7 |
Пользователь
Регистрация: 25.02.2010
Сообщений: 17
|
ппц, 1-ый курс только, а голова кипит как будто атомную бомбу изобретаю
Понимаю. На с++ не легче
Контактная ин-фа 479-275-762, DmitriK181988@gmail.com
|
14.03.2010, 20:10 | #8 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Попробую блок-схему составить. Так думаю... сделать то я кое-как смогу. Но уверен в том, что если сделаю как сам желаю, а не по каком-ту известному алгоритму нахождению седловой точки, то заставят переделывать( А у меня заочка тем более, времени на переделывание будет очень мало.
Пока сделаем паузу в теме. Посмотрим что выйдет после попытки создания блок-схемы. Как что-то похожее на нужное составлю, так или фотку блок схемы выложу или уже "готовый" код. |
15.03.2010, 15:01 | #9 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Оказывается то, про что я говорил - это не седловая точка, хотя почти она.
Вот я даже не могу справится с поиском наименьшей точки в строке. ( Код:
|
15.03.2010, 16:02 | #10 |
Пользователь
Регистрация: 13.03.2010
Сообщений: 16
|
Вот как я передумал:
Код:
P.S. Удивительно, но код-то вроде работает) Интересно, меня в инсте отругают за такой алгоритм или похвалят) Последний раз редактировалось Mikle1990; 15.03.2010 в 16:08. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с двумерными массивами | curly182 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 16.05.2009 17:56 |
Подпрограммы(работа с двумерными массивами) | DimoniusX | Помощь студентам | 0 | 15.04.2009 09:52 |
задача Visual Basic. Работа с массивами | ProgramBad | Помощь студентам | 3 | 14.02.2009 02:10 |
Работа с двумерными массивами | KJIOyH | Помощь студентам | 4 | 03.11.2007 20:03 |