singlepost

до-диез. вопросы. << На главную или назад  

в общем, я начал смотреть на шарп, потому что мне это показалось круче, чем ку-бейзик, и я понял, что в кажущемся был прав.

у меня созрело несколько вопросов:

1) сделать функцию(метод), при вызове которой при каком-то условии блок( то, что скрыто в скобках }, не знаю как это назвать) пропускается.
единственное что приходит на ум, так это
{
void DrawChildren(int x, int x1)
if (x<x1) goto 100// х1 – значение задается, 100 соответственно метка нужного выхода.

}

но умная девочка, которая писала учебник, написала, что надо стараться избегать гото, потому что это хреновая вещь и уменьшает удобочитаемость текста

если это правильно, то вопрос:
х и х1 функция будет брать из того места, где вызвана функция?

если неправильно, скажите, как лучше

ну впринципе, конечно, можно в каждом месте(а их немного) писать условие выхода, но это не круто.

2) глупый вопрос, но я что-то основательно туплю

у нас есть матрица М*N, надо, чтобы там были обычные значения(неважно, стринговые или числовые) И объекты с параметрами. причем при рандомной генерации матрицы эти параметры не указываются, они указываются потом.

как сделать?

заранее спасибо)

127 ответов в теме “до-диез. вопросы.”

  1. 57
    Николай Митропольский ответил:

    > #53 А на каком принципе основана твоя работа?
    Ну по сути это довольно забавный метод сегментации на основе метода сдвига среднего (mean shift который), ну а потом анализ и сопоставление сегментов.

    > Евгений KpoHyc Гаврин
    Ну да, кактотак)
    Спасиба, буду иметь ввиду. Сейчас пожалуй уже не надо, но всеравно, спасибо)

  2. 56
    Евгений Гаврин ответил:

    Предполагаемое развитие общения:

    Николай: на таком-то… Использую … и …
    Александр: да точно Вам говорю! Делалось уже.
    Константин: 2Александр – щас забаню. 2Николай – хм интересно, статью тут читал. Там похожие принципы используют.
    Александр: Хахахаха! Бугага! Я ж говорил. ЫЫ…

    [Александр уходит в БАН]

    Николай продолжает спокойно делать свой дисер ))) Защищает его на отлично и не парится по мелочам )))

    ———
    Николай, если потребуетсяконсультация – знаю человека одного. Он щас докторскую защищает по обработке изображений. Потребуется – могу свести.

  3. 55
    Константин Смотритель ответил:

    Блин, Александр, не засоряй форум. Если нечего сказать по существу – лучше промолчать.

    #2 ">> но умная девочка, которая писала учебник, написала, что надо
    >> стараться избегать go to
    Это не умная девочка написала, а в далекие далекие 80-е об этом говорили создатели языка "С" Б. Керниган и Д.Риччи и в общем то правы."

    Это никакие не К&R, это Дейкстра написал. В плане своих "заметок по структурному программированию". Всем срочно читать! Это основа всех основ. Удивительно, что есть "программисты" плохо себе представляющие единственно православный структурный подход.

    По поводу именно goto у Дейкстры есть куча рассуждений, включая разрешение использовать goto в качестве abort (понятно, что в современном языке типа С# это делается исключениями, но вот в том же Си такой приём приемлем более чем). А то тут скоро окажется, что БиллГейтс окна придумал =)))

  4. 54
    Константин Смотритель ответил:

    #53 А на каком принципе основана твоя работа?

  5. 53
    Николай Митропольский ответил:

    Ну а звать то его как?
    Ну конкретно для лиц можно придумать свои дескрипторы и по ним искать, всеж у меня немного не то…

    > гистология это жесть)
    Ну если честно, то хрен знает что из этого получится, надеюсь не только гистология)

  6. 52
    Александр Лищенер ответил:

    хз как звать)

  7. 51
    Александр Лищенер ответил:

    не знаю.
    мужик, который ведет курсы ИИ в малой академии МГУ, вот он и писал.
    смысл: распознать террориста по базе фотографий.

    гистология это жесть)

  8. 50
    Николай Митропольский ответил:

    > "явки, пароли" – не понимаю))
    Ну автор, название, еще лучше автореферат, совсем хорошо – pdf-ку самого диссера)

    > но то, что это сделано(опознание лиц по нескольким фотографиям) – однозначно)
    Ну вообще кое-как распознавать лица ща и виндавс умеет и всякие ноуты в качестве аутентификации, хотя не так чтоб это у них очень хорошо получалось. Я вообще не про лица пишу, больше про гистологию и в таком духе.

  9. 49
    Александр Лищенер ответил:

    "явки, пароли" – не понимаю))
    но то, что это сделано(опознание лиц по нескольким фотографиям) – однозначно)

  10. 48
    Евгений Гаврин ответил:

    > Тут ни дотнет ни сишарп не дает никаких особых преимуществ(
    Твоя правда.

  11. 47
    Николай Митропольский ответил:

    > ну ваша диссертация уже реализована
    по крайней мере моим знакомым, он тоже писал такую и сдал)

    Эм… явки, пароли? я хоть ознакомлюсь, а то вдруг правда? О_о ))

    > окошки для бухгалтеров… сайты… фиии неинтересно хД
    Ну не скажи… найти и/или создать удобные инструменты для этого дела, так чтоб сайт можно было удобно поддерживать и развивать – не простая задача. К томуж сайты разные бывают ) бывают нехилые веб порталы) а бывает например Google Docs или Google Maps – тоже сайты в каком-то смысле)

    Да и бухгалтеру угодить – ой какая нетривиальная задача)

    А так конечно мобильными торговать – оно интереснее)

  12. 46
    Николай Митропольский ответил:

    >функциональные языки это – ?
    Ну в моем случае это Haskell, а вообще
    //ru.wikipedia.org/wiki/Функциональное_программ...

    >а что вот пишет современный программист, можно узнать?
    Йа? Я пишу систему поиска и распознвания объектов на изображении, это моя диссертация) А вообще ну… в основном рисуют окошки для бухгалтеров всяких, вебинтерфейсы, сайты пишут, кто-то веб-сервисы… еще компьютерные игры пишут… тоже интересное дело… да много чего пишут)

    >оптимизации?
    ммм?

  13. 45
    Александр Лищенер ответил:

    ну ваша диссертация уже реализована
    по крайней мере моим знакомым, он тоже писал такую и сдал)

    окошки для бухгалтеров… сайты… фиии неинтересно хД

  14. 44
    Евгений Гаврин ответил:

    > С++.NET – штука страшная
    Тут согласен – это не для слабых духом )
    Впрочем, я имел ввиду, что существует возможность использования unmanаged кода. То есть берете ваши наработки на плюсах или чистом Си
    и смело используете у себя в коде – способы на то есть разные.

  15. 43
    Николай Митропольский ответил:

    > ну а вы на чем пишете)?

    Я пишу в основном на Java и Python, в целом испытываю к ним довольно теплые чувства )) Но в последнее время, отдавая дань моде, проникаюсь функциональными языками и склонен согласиться с тем что это тоже круто и интересно)

  16. 42
    Александр Лищенер ответил:

    функциональные языки это – ?
    а что вот пишет современный программист, можно узнать?
    оптимизации?

  17. 41
    Николай Митропольский ответил:

    > возможность использования unmanаged кода.
    ну P/Invokeом функции из дллки дергать – это так… только с винапи прокатывает) А для того чтоб серьезную библиотеку использовать всеравно придется писать врапперы классов и прочие. Тут ни дотнет ни сишарп не дает никаких особых преимуществ(

  18. 40
    Николай Митропольский ответил:

    > Шарп не отрицает другие языки
    Дотнет не отрицает. Впрочем С++.NET – штука страшная)
    Впрочем да, Оговорка по фрейду) – последние тенденции показывает что "Шарп не отрицает другие языки"…и есть опасения, чток версии 6.0 код на любом языке программирования можно будет считать валидным С# кодом)))

    > заимплементить
    это что подразумевается? переписать исходники? О_о

  19. 39
    Николай Митропольский ответил:

    > бросать шарп и выкидывать все книжки, или поучить его, пописать на неми, потом поучить +, пописать на нем и самому понять, что лучше?

    Хз… по мне так как первые языки они оба довольно фиговы. Впрочем вам после кубейсика уже ничего не страшно)) Потому учите шарп, на нем прогать проще и веселее. А с С++ если понадобится потом познакомитесь)

  20. 38
    Александр Лищенер ответил:

    ну а вы на чем пишете)?

    ладно, буду учить шарп, буду веселым
    хотя можно накуриться шмали
    хм…

  21. 37
    Евгений Гаврин ответил:

    Шарп не отрицает другие языки. Например код на плюсах совершенно спокойно и относительно безгемморойно можно заимплементить в свой.

    Таки забанить надо )

  22. 36
    Александр Лищенер ответил:

    спасибо
    нет, Николай, я лох
    и про С++ слышал ТОЛЬКО ПОНАСЛЫШКЕ
    а тут случайно купил много книжек по шарпу, и мне показалось, что он крутой(это не максималистичный термин, а синоним "нормально", что ли…)

    в общем, вопрос к умным людям один(дабы не разводить холивар)
    бросать шарп и выкидывать все книжки, или поучить его, пописать на неми, потом поучить +, пописать на нем и самому понять, что лучше?

  23. 35
    Николай Митропольский ответил:

    С++ вроде как лучше подходит для системного программирования. И в целом программы написанные на С++ работают быстрее и требуют меньше памяти. Еще на С++ написано много всяких библиотек и фреймоворков, это означает: а) много готовых решений которые просто будет использовать, и еще, что б) С++ рано или поздно всеравно придется выучить)

    А вообще, Александр {Desembra} Лищенер, вы все-таки тролль, про гоуту флейм не развели – разведем холивар C++ vs C# )

  24. 34
    Николай Митропольский ответил:

    > а чем, собственно, шарп отличается от ++?
    На самом деле, не смотря на то как Микрософт позиционирует шарп, общего у этих языков довольно мало.
    Шарп больше похож на джаву и делфи.

    Шарп проще, хотя и не так чтоб очень сильно. Однозначно одно – на шарпе проще писать программы. На С++ писать программы сложно, еще сложнее отлаживать.

    А вообще это довольно разные языки с разной философией.

    Для написания прикладного ПО (оконные приложения, веб, автоматизация предприятия, мат моделирование итп)Шарп подходит лучше.

  25. 33
    Евгений Гаврин ответил:

    > Шарп больше похож на джаву и делфи.
    Мы даже не будем говорить почему :)

  26. 32
    Евгений Гаврин ответил:

    Смело говорите Вашему приятелю, что он не прав. В грубой форме =)

    Крутость:
    Это довольно субъективный критерий – для всего есть свои задачи.
    Тут и кривые руки и…ну в общем понятно. Как на шарпе, так и на плюсах можно налячкать такое г-но, что не раскопать будет.

    Простота:
    Язык неимоверно прост в освоении. Тут и говорить нечего. И это тоже его плюс.

  27. 31
    Александр Лищенер ответил:

    спасибо, о Великий Константин ;)

    по сабжу:
    а чем, собственно, шарп отличается от ++?

    мне сказал парень, что шарп менее крут, но более прост
    это правда?

    хотя я думаю пока хватит(для такого ламера как я), но все же – на будущее?

  28. 30
    Константин Смотритель ответил:

    [Разбанил Александра - он вроде осознал проблему =) ]

  29. 29
    Евгений Гаврин ответил:

    Любомир,
    она по крайней мере производит такое впечатление.

  30. 28
    Любомир Семків ответил:

    2 Евгений KpoHyc Гаврин:

    Интересная книжка, думаю для школьников очень подходит.

  31. 27
    Николай Митропольский ответил:

    [даладно, весело же было ))]

  32. 26
    Константин Смотритель ответил:

    [Александр, поздравляю, ты забанен за тему "Квартира"]

  33. 25
    Александр Лищенер ответил:

    описать, имплементировать…
    блин, вот для такого и нужен умный человек рядом

    ладн, больше ничего не пишите, я напишу лабиринт, а потом вы меня поругаете

  34. 24
    Александр Лищенер ответил:

    ООП понимаю
    "реализовать класс"
    не понимаю))

    ладно))
    а напишу хД

  35. 23
    Николай Митропольский ответил:

    релизовать – в смысле описать его, имплементировать)

  36. 22
    Николай Митропольский ответил:

    Так… какие из слов вам не понятны?
    "реализовать класс"?

    что такое объектно-ориентированное программирование вы понимаете?

    Поковыряюсь, раз уж начал…пишите)

  37. 21
    Александр Лищенер ответил:

    вот опять
    я ничего не понимаю
    блин, ладно, не тратьте своего времени
    я попробую так и так
    потом напишу программу и выложу исходник
    потратите 10 минут, поковыряетесь, ок?
    ну я понимаю, конечно, что все скажут, что я лох хД

  38. 20
    Николай Митропольский ответил:

    Не понял, что такое объект внутри массива?
    Как реализовать класс Hole?

  39. 19
    Александр Лищенер ответил:

    и что мы получим?

    это все понятно

    я про то, как связывать дырки, т.е. как сделать объект внутри массива?

  40. 18
    Николай Митропольский ответил:

    Ну переводя на Шарп это будет както так:

    private void GenerateHoles(int holescount)
    {
    List<Hole> holeslist = new List<Hole>(holescount);
    for (int i = 0; i < holescount; i++)
    {
    Point p = GetRandomUnusedField();
    Hole hole = new Hole();
    worldmatrix[p.x, p.y] = hole;
    holeslist.Add(hole);
    }

    Random r = new Random();
    while (holeslist.Count > 0)
    {
    Hole h1 = holeslist[r.Next(holeslist.Count)];
    Hole h2 = holeslist[r.Next(holeslist.Count)];
    h1.bindWith(h2);
    holeslist.Remove(h1);
    holeslist.Remove(h2);
    }

    }

  41. 17
    Николай Митропольский ответил:

    … ну берете создаете список всех дырок, и пока в списке есть дырки берете из списка две случайные дырки, связываете их друг с другом и удаляете из списка обе.

  42. 16
    Александр Лищенер ответил:

    нет лучше все-таки свою голову иметь, а то я НИЧЕГО не понимаю из того, что вы все мне говорите хД

  43. 15
    Николай Митропольский ответил:

    Я подозреваю, что кактотак:

    Field[,] worldmatrix = new Field[m, n];

    Hole h1 = new Hole();
    Hole h2 = new Hole();
    h1.bindWith(h2);

    worldmatrix[0, 1] = h1;
    worldmatrix[4, 2] = h2;

    )

  44. 14
    Александр Лищенер ответил:

    это понятно
    а рандомную генерацию как делать?
    я думал просто натыкать дырок, а потом рандомом их связать

  45. 13
    Александр Лищенер ответил:

    Николай, проблемы нет, просто я недопонял, как заполнить клетку определенным классом с параметром

  46. 12
    Николай Митропольский ответил:

    Проблему не очень понял.

    В речке какая проблема? в связности клеток?
    А в дырках?

    Искать не занятые клетки можно простым перебором, если мир как вы говорите не очень большой.

  47. 11
    Александр Лищенер ответил:

    Евгений, вопрос про функцию дрочилдрен отменяется.
    я уважаю людей и книжки читал
    не догадался, да, я дурак!
    и что теперь?))

    а вот про матрицу, я туплю
    а вы злитесь и ругаетесь!

  48. 10
    Евгений Гаврин ответил:

    > а по сабжу?
    А по сабжу -
    Вы знаете что такое:

    break;
    continue;
    return;
    if(){}
    while() {}

    Если нет – то Вам как минимум надо прочитать эту книжку
    //go.microsoft.com/fwlink/?LinkId=160472&cl...
    Как максимум – научиться уважать людей, которые знают больше. И ту "умную тетеньку", книжку которой Вы прочли тоже.

    В общем, я зол.
    Читать никто не хочет.
    Думать никто не хочет.

  49. 9
    Александр Лищенер ответил:

    в общем, есть такая игра в поезде
    лабиринт
    есть поле М на Н, но обычно больше 6х6 не играют, да и 6х6 это уже ОЧЕНЬ жестко
    там есть речка, с течением, без течения, дырки, которые могут вести сами в себя, а могут в другие дырки, клад, который надо вынести из лабиринта(есть выход в одной главной стенке), есть больница, гангстер и арсенал(гангстер тебе рвет прямую кишку, в больнице тебя лечат, в арсенале дают бомбы для взрыва стенок).
    стенки могут быть между клетками, но их можно взрывать
    задача – вынести клад из лабиринта
    вот я эту игру для начала хочу на шарпе накалякать

    при рандомном заполнении лабиринта важно:
    1) чтоб был клад и выход
    2) чтобы были дырки
    3) если осталось место, то сделать гангстера+больницу
    4) если есть стенки, которые нужно сносить для прохода к кладу\к выходу, нужна больница
    5) речки: нужно проверить, можно ли сделать с течением, если можно, то думаем, делаем или нет, если нельзя течение, делаем БЕЗ течения
    6) нужно проверить, проходим ли лабиринт
    (т.е. нет ли такого положения, в котором ты НЕ МОЖЕШЬ ВЫИГРАТЬ)

    ну можно еще намеренно речку делать длинную, а дырки одиночные
    тож вариант
    но это эстетика
    а по сабжу

    т.е.
    надо заполнить объектами матрицу
    с больницей, арсеналом, гангстером все понятно
    а вот…
    с дыркой, речкой – не очень…

    про стенки я думаю надо создать другой массив, в котором каждому элементу из 1 массива будет соответствовать элемент 2 массива, и когда куда-то идешь, проверять второй массив(он будет побитовой – 1 или 0 – есть стенка в промежутке между клетками или нет) – не знаю, круто или нет, но как вариант – точно.

    а вот с дыркой и с речкой – подскажите, пожалуйста

  50. 8
    Александр Лищенер ответил:

    Николай, Женя, вы не очень поняли что я имел ввиду
    есть генерация лабиринта(массив м на н)
    надо после заполнения определенными элементами проверять, есть ли свободное место
    если его нет, то закончить генерацию лабиринта

  51. 7
    Андрей Ковалев ответил:

    если по типу игры пятнашки
    то есть пример в бесплатной книге для второго сильверлайта
    на сайте микрософта она лежит на русском, язык там как раз си шарп

  52. 6
    Николай Митропольский ответил:

    Александр {Desembra} Лищенер, фигасебе)
    В первом вашем посте ничего про лабиринт не было)

    Давайте еще раз и по порядку)
    при чем тут if и как вы так заполняете лабиринт…

  53. 5
    Женя Глебов ответил:

    void Ff()
    {
    if(…)
    {
    return; – это выход из ф-ии.
    }
    }

  54. 4
    Николай Митропольский ответил:

    Тонко! Хотя и не очень…

    пишете

    if(x<x1)
    {
    //какой-то код
    }

    какой-то код будет выполнен только если условие x<x1 верно.
    Если нужно наоборот то if(!x<x1)

    > х и х1 функция будет брать из того места, где вызвана функция?
    Да, это так.

  55. 3
    Николай Митропольский ответил:

    С матрицами не очень понял, ну создайте матрицу базового типа object или как его там в сишарпе…

  56. 2
    Александр Лищенер ответил:

    а по сабжу?

  57. 1
    Cyber Max ответил:

    >> но умная девочка, которая писала учебник, написала, что надо
    >> стараться избегать go to
    Это не умная девочка написала, а в далекие далекие 80-е об этом говорили создатели языка "С" Б. Керниган и Д.Риччи и в общем то правы.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.