прощу помощи знатоков

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

soulthiefer
Сообщения: 39
Зарегистрирован: 21 сен 2007, 15:05

всем доброго дня!
помогите решить задачу пожалуйста оч нужно

собственно задача :
вбиваются пары фамилий людей которые знают друг друга например :
я - петров петров - иванов иванов-сидоров сидоров-жуков жуков-петров козлов-жуков козлов-спиридонов

нужно : ввожу фамилию человека с которым хочу познакомиться например ЖУКОВ а обратно мне выдается варианты через кого я могу познакомиться с ним -> Жуков-петров-я , жуков-сидоров-иванов-петров-я И варианты которые до меня не доведут но все равно существуют Жуков-козлов-спиридонов,

помогите пожалуйста кто знает как организовать!
заранее всем спасибо
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте soulthiefer.
В каком приложении Вы планируете "решить задачу"?
Вероятность получения помощи будет больше, если выложить с вопросом архив с файлом - наработкой.
Евгений.
soulthiefer
Сообщения: 39
Зарегистрирован: 21 сен 2007, 15:05

хочу решить эту задачу в excel VB т к имею небольшой опыт программирования макросов ! но с этим мне не справиться ((( не хочу думать что нельзя с помощью VB решить !
пример файла прикрепил.
в первой форме вводится пара фамилий ( люди которые знаю друр друга ) на второй вкладке вводится фамилия человека с которым нужно познакомиться ! пример вывода результата чуть правее колонки с фамилиями выделен желтым цветом! результат я думаю будет разумно выводить в msgbox.
вот как решить эту задачу не знаю вообще (
Вложения
Книга1.zip
(12.48 КБ) 55 скачиваний
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а): имею небольшой опыт программирования макросов ! но с этим мне не справиться
Имея опыт, не справишься? Кончай прикалываться, с такой задачей можно справится не имея опыта. Давай мне спецификацию стандарта языка, которого я не знаю, через месяц я и на нём тебе это решу. Кроме низкого уровня, конечно.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
soulthiefer
Сообщения: 39
Зарегистрирован: 21 сен 2007, 15:05

выкладываю файл в котором сделал все что мог .. в принципе все кроме поиска о котором прошу (
на первой вкладке : вводится пара фамилий ... в текстбоксах вводится если фамилии нет еще в списке в сомбобоксе выбирается из списка если существует фамилия ! Кнопка ЗАПИСАТЬ добавляет фамилии из полей в соответствующие колонки ( текстбоксы имеют приоритет перед комбо)
на второй вкладке : как раз и должен быть нужный мне поиск ( под кнопкой ПОИСК ВАРИАНТОВ расположен лэйбл3 в нем и должны выводится варианты ! пример запроса и ответов на него на самом листе справа от столбиков фамилий !
ПОМОГИТЕ пожалуйста с этим самым поиском!!!

===через месяц я и на нём тебе это решу===
через месяц я и сам решу !!!! мне нужно как можно быстрее потому и прошу помощи у знающих людей!!!
Вложения
2.zip
(17.3 КБ) 55 скачиваний
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):через месяц я и сам решу !!!! мне нужно как можно быстрее потому и прошу помощи у знающих людей!!!
Месяц - это на освоение, а на решение - меньше одного дня. Читай внимательнее: не "за меясяц", а "через месяц". Ты же пишешь, что язык уже знаешь и имеешь опыт писанины на нём.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
soulthiefer
Сообщения: 39
Зарегистрирован: 21 сен 2007, 15:05

сеньор девелопер вы можете мне помочь с кодом или нет ?!
я не знаю даже как подобраться к логике поиска поэтому и прошу ЗНАЮЩИХ людей помоч ! а не проверять мои знания !
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Ну, это банальнейшая задача маршрутизации графа.
Строим массив A(NxN), где N - количество народу, A(x,y)=1, если люди x и y знакомы, 0 в противном случае. Зеркалим таблицу (т.е. чтобы для любого x,y выполнялось A(x,y)=A(y,x)). Это техническая реализация.
Алгоритмически - строим рекурсивную процедуру. Назовем: А - человек, которого мы проверяем в данный момент, Х - человек, с которым мы хотим познакомиться, Список - некий массив. Псевдокод

Код: Выделить всё

НайтиЗнакомого(А, Список, Х)
  для всех В, которые знакомы с А:
      Если В в списке - пропустить
      Если В=Х - вывести Список+Х
      В противном случае - выполнить НайтиЗнакомого(В, Список+А, Х)
Запускаем с первоначальными данными НайтиЗнакомого (Я, пустой список, Жуков).
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
soulthiefer
Сообщения: 39
Зарегистрирован: 21 сен 2007, 15:05

Хыиуду, а как будет выполнятся условие вывода нескольких веток знакомства ? это обязательное условие (
хотя бы для поиска жуков есть 2 ветки развития ( : Я Петров Жуков и Я Петров Иванов Сидоров Жуков
и
вариантов ведь может в итоге не быть ! а может быть несколько !как это отследить?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
к сожалению задача оказалась не такой уж банальнейшей (((
неужели знатоки сдались (
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

&quot писал(а):вариантов ведь может в итоге не быть ! а может быть несколько !как это отследить?
Это не надо отслеживать. Оно само получится. А самая сложность в отсечении петель. То есть варианты типа "жуков-сидоров-иванов-петров-сидорров-комаров-я" должны исключаться, так как грозят бескончным циклом. Да и как ответы врядли тебя устроят. Проверяй влево на совпадения с добавляемым узлом. Остальное не стоит внимания.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить