в общем, я начал смотреть на шарп, потому что мне это показалось круче, чем ку-бейзик, и я понял, что в кажущемся был прав.
у меня созрело несколько вопросов:
1) сделать функцию(метод), при вызове которой при каком-то условии блок( то, что скрыто в скобках }, не знаю как это назвать) пропускается.
единственное что приходит на ум, так это
{
void DrawChildren(int x, int x1)
if (x<x1) goto 100// х1 – значение задается, 100 соответственно метка нужного выхода.
}
но умная девочка, которая писала учебник, написала, что надо стараться избегать гото, потому что это хреновая вещь и уменьшает удобочитаемость текста
если это правильно, то вопрос:
х и х1 функция будет брать из того места, где вызвана функция?
если неправильно, скажите, как лучше
ну впринципе, конечно, можно в каждом месте(а их немного) писать условие выхода, но это не круто.
2) глупый вопрос, но я что-то основательно туплю
у нас есть матрица М*N, надо, чтобы там были обычные значения(неважно, стринговые или числовые) И объекты с параметрами. причем при рандомной генерации матрицы эти параметры не указываются, они указываются потом.
как сделать?
заранее спасибо)
7 ноября 2009 в 18:03
> #53 А на каком принципе основана твоя работа?
Ну по сути это довольно забавный метод сегментации на основе метода сдвига среднего (mean shift который), ну а потом анализ и сопоставление сегментов.
> Евгений KpoHyc Гаврин
Ну да, кактотак)
Спасиба, буду иметь ввиду. Сейчас пожалуй уже не надо, но всеравно, спасибо)
7 ноября 2009 в 17:00
Предполагаемое развитие общения:
Николай: на таком-то… Использую … и …
Александр: да точно Вам говорю! Делалось уже.
Константин: 2Александр – щас забаню. 2Николай – хм интересно, статью тут читал. Там похожие принципы используют.
Александр: Хахахаха! Бугага! Я ж говорил. ЫЫ…
[Александр уходит в БАН]
Николай продолжает спокойно делать свой дисер ))) Защищает его на отлично и не парится по мелочам )))
———
Николай, если потребуетсяконсультация – знаю человека одного. Он щас докторскую защищает по обработке изображений. Потребуется – могу свести.
7 ноября 2009 в 16:05
Блин, Александр, не засоряй форум. Если нечего сказать по существу – лучше промолчать.
#2 ">> но умная девочка, которая писала учебник, написала, что надо
>> стараться избегать go to
Это не умная девочка написала, а в далекие далекие 80-е об этом говорили создатели языка "С" Б. Керниган и Д.Риччи и в общем то правы."
Это никакие не К&R, это Дейкстра написал. В плане своих "заметок по структурному программированию". Всем срочно читать! Это основа всех основ. Удивительно, что есть "программисты" плохо себе представляющие единственно православный структурный подход.
По поводу именно goto у Дейкстры есть куча рассуждений, включая разрешение использовать goto в качестве abort (понятно, что в современном языке типа С# это делается исключениями, но вот в том же Си такой приём приемлем более чем). А то тут скоро окажется, что БиллГейтс окна придумал =)))
7 ноября 2009 в 16:05
#53 А на каком принципе основана твоя работа?
7 ноября 2009 в 15:01
Ну а звать то его как?
Ну конкретно для лиц можно придумать свои дескрипторы и по ним искать, всеж у меня немного не то…
> гистология это жесть)
Ну если честно, то хрен знает что из этого получится, надеюсь не только гистология)
7 ноября 2009 в 15:01
хз как звать)
7 ноября 2009 в 14:05
не знаю.
мужик, который ведет курсы ИИ в малой академии МГУ, вот он и писал.
смысл: распознать террориста по базе фотографий.
гистология это жесть)
7 ноября 2009 в 13:02
> "явки, пароли" – не понимаю))
Ну автор, название, еще лучше автореферат, совсем хорошо – pdf-ку самого диссера)
> но то, что это сделано(опознание лиц по нескольким фотографиям) – однозначно)
Ну вообще кое-как распознавать лица ща и виндавс умеет и всякие ноуты в качестве аутентификации, хотя не так чтоб это у них очень хорошо получалось. Я вообще не про лица пишу, больше про гистологию и в таком духе.
7 ноября 2009 в 13:00
"явки, пароли" – не понимаю))
но то, что это сделано(опознание лиц по нескольким фотографиям) – однозначно)
7 ноября 2009 в 3:01
> Тут ни дотнет ни сишарп не дает никаких особых преимуществ(
Твоя правда.
7 ноября 2009 в 2:01
> ну ваша диссертация уже реализована
по крайней мере моим знакомым, он тоже писал такую и сдал)
Эм… явки, пароли? я хоть ознакомлюсь, а то вдруг правда? О_о ))
> окошки для бухгалтеров… сайты… фиии неинтересно хД
Ну не скажи… найти и/или создать удобные инструменты для этого дела, так чтоб сайт можно было удобно поддерживать и развивать – не простая задача. К томуж сайты разные бывают ) бывают нехилые веб порталы) а бывает например Google Docs или Google Maps – тоже сайты в каком-то смысле)
Да и бухгалтеру угодить – ой какая нетривиальная задача)
А так конечно мобильными торговать – оно интереснее)
7 ноября 2009 в 2:00
>функциональные языки это – ?
Ну в моем случае это Haskell, а вообще
//ru.wikipedia.org/wiki/Функциональное_программ...
>а что вот пишет современный программист, можно узнать?
Йа? Я пишу систему поиска и распознвания объектов на изображении, это моя диссертация) А вообще ну… в основном рисуют окошки для бухгалтеров всяких, вебинтерфейсы, сайты пишут, кто-то веб-сервисы… еще компьютерные игры пишут… тоже интересное дело… да много чего пишут)
>оптимизации?
ммм?
7 ноября 2009 в 2:00
ну ваша диссертация уже реализована
по крайней мере моим знакомым, он тоже писал такую и сдал)
окошки для бухгалтеров… сайты… фиии неинтересно хД
7 ноября 2009 в 1:05
> С++.NET – штука страшная
Тут согласен – это не для слабых духом )
Впрочем, я имел ввиду, что существует возможность использования unmanаged кода. То есть берете ваши наработки на плюсах или чистом Си
и смело используете у себя в коде – способы на то есть разные.
7 ноября 2009 в 1:05
> ну а вы на чем пишете)?
Я пишу в основном на Java и Python, в целом испытываю к ним довольно теплые чувства )) Но в последнее время, отдавая дань моде, проникаюсь функциональными языками и склонен согласиться с тем что это тоже круто и интересно)
7 ноября 2009 в 1:05
функциональные языки это – ?
а что вот пишет современный программист, можно узнать?
оптимизации?
7 ноября 2009 в 1:05
> возможность использования unmanаged кода.
ну P/Invokeом функции из дллки дергать – это так… только с винапи прокатывает) А для того чтоб серьезную библиотеку использовать всеравно придется писать врапперы классов и прочие. Тут ни дотнет ни сишарп не дает никаких особых преимуществ(
7 ноября 2009 в 1:04
> Шарп не отрицает другие языки
Дотнет не отрицает. Впрочем С++.NET – штука страшная)
Впрочем да, Оговорка по фрейду) – последние тенденции показывает что "Шарп не отрицает другие языки"…и есть опасения, чток версии 6.0 код на любом языке программирования можно будет считать валидным С# кодом)))
> заимплементить
это что подразумевается? переписать исходники? О_о
7 ноября 2009 в 1:04
> бросать шарп и выкидывать все книжки, или поучить его, пописать на неми, потом поучить +, пописать на нем и самому понять, что лучше?
Хз… по мне так как первые языки они оба довольно фиговы. Впрочем вам после кубейсика уже ничего не страшно)) Потому учите шарп, на нем прогать проще и веселее. А с С++ если понадобится потом познакомитесь)
7 ноября 2009 в 1:04
ну а вы на чем пишете)?
ладно, буду учить шарп, буду веселым
хотя можно накуриться шмали
хм…
7 ноября 2009 в 1:03
Шарп не отрицает другие языки. Например код на плюсах совершенно спокойно и относительно безгемморойно можно заимплементить в свой.
Таки забанить надо )
7 ноября 2009 в 1:03
спасибо
нет, Николай, я лох
и про С++ слышал ТОЛЬКО ПОНАСЛЫШКЕ
а тут случайно купил много книжек по шарпу, и мне показалось, что он крутой(это не максималистичный термин, а синоним "нормально", что ли…)
в общем, вопрос к умным людям один(дабы не разводить холивар)
бросать шарп и выкидывать все книжки, или поучить его, пописать на неми, потом поучить +, пописать на нем и самому понять, что лучше?
7 ноября 2009 в 1:02
С++ вроде как лучше подходит для системного программирования. И в целом программы написанные на С++ работают быстрее и требуют меньше памяти. Еще на С++ написано много всяких библиотек и фреймоворков, это означает: а) много готовых решений которые просто будет использовать, и еще, что б) С++ рано или поздно всеравно придется выучить)
А вообще, Александр {Desembra} Лищенер, вы все-таки тролль, про гоуту флейм не развели – разведем холивар C++ vs C# )
7 ноября 2009 в 1:00
> а чем, собственно, шарп отличается от ++?
На самом деле, не смотря на то как Микрософт позиционирует шарп, общего у этих языков довольно мало.
Шарп больше похож на джаву и делфи.
Шарп проще, хотя и не так чтоб очень сильно. Однозначно одно – на шарпе проще писать программы. На С++ писать программы сложно, еще сложнее отлаживать.
А вообще это довольно разные языки с разной философией.
Для написания прикладного ПО (оконные приложения, веб, автоматизация предприятия, мат моделирование итп)Шарп подходит лучше.
7 ноября 2009 в 1:00
> Шарп больше похож на джаву и делфи.
Мы даже не будем говорить почему
7 ноября 2009 в 0:05
Смело говорите Вашему приятелю, что он не прав. В грубой форме =)
Крутость:
Это довольно субъективный критерий – для всего есть свои задачи.
Тут и кривые руки и…ну в общем понятно. Как на шарпе, так и на плюсах можно налячкать такое г-но, что не раскопать будет.
Простота:
Язык неимоверно прост в освоении. Тут и говорить нечего. И это тоже его плюс.
7 ноября 2009 в 0:03
спасибо, о Великий Константин
по сабжу:
а чем, собственно, шарп отличается от ++?
мне сказал парень, что шарп менее крут, но более прост
это правда?
хотя я думаю пока хватит(для такого ламера как я), но все же – на будущее?
7 ноября 2009 в 0:00
[Разбанил Александра - он вроде осознал проблему =) ]
5 ноября 2009 в 21:00
Любомир,
она по крайней мере производит такое впечатление.
5 ноября 2009 в 20:05
2 Евгений KpoHyc Гаврин:
Интересная книжка, думаю для школьников очень подходит.
5 ноября 2009 в 20:00
[даладно, весело же было ))]
5 ноября 2009 в 19:05
[Александр, поздравляю, ты забанен за тему "Квартира"]
5 ноября 2009 в 18:01
описать, имплементировать…
блин, вот для такого и нужен умный человек рядом
ладн, больше ничего не пишите, я напишу лабиринт, а потом вы меня поругаете
5 ноября 2009 в 18:00
ООП понимаю
"реализовать класс"
не понимаю))
ладно))
а напишу хД
5 ноября 2009 в 18:00
релизовать – в смысле описать его, имплементировать)
5 ноября 2009 в 17:05
Так… какие из слов вам не понятны?
"реализовать класс"?
что такое объектно-ориентированное программирование вы понимаете?
Поковыряюсь, раз уж начал…пишите)
5 ноября 2009 в 17:01
вот опять
я ничего не понимаю
блин, ладно, не тратьте своего времени
я попробую так и так
потом напишу программу и выложу исходник
потратите 10 минут, поковыряетесь, ок?
ну я понимаю, конечно, что все скажут, что я лох хД
5 ноября 2009 в 17:00
Не понял, что такое объект внутри массива?
Как реализовать класс Hole?
5 ноября 2009 в 16:05
и что мы получим?
это все понятно
я про то, как связывать дырки, т.е. как сделать объект внутри массива?
5 ноября 2009 в 16:03
Ну переводя на Шарп это будет както так:
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);
}
}
5 ноября 2009 в 16:01
… ну берете создаете список всех дырок, и пока в списке есть дырки берете из списка две случайные дырки, связываете их друг с другом и удаляете из списка обе.
5 ноября 2009 в 16:01
нет лучше все-таки свою голову иметь, а то я НИЧЕГО не понимаю из того, что вы все мне говорите хД
5 ноября 2009 в 16:00
Я подозреваю, что кактотак:
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;
)
5 ноября 2009 в 16:00
это понятно
а рандомную генерацию как делать?
я думал просто натыкать дырок, а потом рандомом их связать
5 ноября 2009 в 15:03
Николай, проблемы нет, просто я недопонял, как заполнить клетку определенным классом с параметром
5 ноября 2009 в 14:03
Проблему не очень понял.
В речке какая проблема? в связности клеток?
А в дырках?
Искать не занятые клетки можно простым перебором, если мир как вы говорите не очень большой.
5 ноября 2009 в 13:05
Евгений, вопрос про функцию дрочилдрен отменяется.
я уважаю людей и книжки читал
не догадался, да, я дурак!
и что теперь?))
а вот про матрицу, я туплю
а вы злитесь и ругаетесь!
5 ноября 2009 в 13:04
> а по сабжу?
А по сабжу -
Вы знаете что такое:
break;
continue;
return;
if(){}
while() {}
Если нет – то Вам как минимум надо прочитать эту книжку
//go.microsoft.com/fwlink/?LinkId=160472&cl...
Как максимум – научиться уважать людей, которые знают больше. И ту "умную тетеньку", книжку которой Вы прочли тоже.
В общем, я зол.
Читать никто не хочет.
Думать никто не хочет.
5 ноября 2009 в 13:02
в общем, есть такая игра в поезде
лабиринт
есть поле М на Н, но обычно больше 6х6 не играют, да и 6х6 это уже ОЧЕНЬ жестко
там есть речка, с течением, без течения, дырки, которые могут вести сами в себя, а могут в другие дырки, клад, который надо вынести из лабиринта(есть выход в одной главной стенке), есть больница, гангстер и арсенал(гангстер тебе рвет прямую кишку, в больнице тебя лечат, в арсенале дают бомбы для взрыва стенок).
стенки могут быть между клетками, но их можно взрывать
задача – вынести клад из лабиринта
вот я эту игру для начала хочу на шарпе накалякать
при рандомном заполнении лабиринта важно:
1) чтоб был клад и выход
2) чтобы были дырки
3) если осталось место, то сделать гангстера+больницу
4) если есть стенки, которые нужно сносить для прохода к кладу\к выходу, нужна больница
5) речки: нужно проверить, можно ли сделать с течением, если можно, то думаем, делаем или нет, если нельзя течение, делаем БЕЗ течения
6) нужно проверить, проходим ли лабиринт
(т.е. нет ли такого положения, в котором ты НЕ МОЖЕШЬ ВЫИГРАТЬ)
ну можно еще намеренно речку делать длинную, а дырки одиночные
тож вариант
но это эстетика
а по сабжу
т.е.
надо заполнить объектами матрицу
с больницей, арсеналом, гангстером все понятно
а вот…
с дыркой, речкой – не очень…
про стенки я думаю надо создать другой массив, в котором каждому элементу из 1 массива будет соответствовать элемент 2 массива, и когда куда-то идешь, проверять второй массив(он будет побитовой – 1 или 0 – есть стенка в промежутке между клетками или нет) – не знаю, круто или нет, но как вариант – точно.
а вот с дыркой и с речкой – подскажите, пожалуйста
5 ноября 2009 в 13:01
Николай, Женя, вы не очень поняли что я имел ввиду
есть генерация лабиринта(массив м на н)
надо после заполнения определенными элементами проверять, есть ли свободное место
если его нет, то закончить генерацию лабиринта
5 ноября 2009 в 13:01
если по типу игры пятнашки
то есть пример в бесплатной книге для второго сильверлайта
на сайте микрософта она лежит на русском, язык там как раз си шарп
5 ноября 2009 в 13:01
Александр {Desembra} Лищенер, фигасебе)
В первом вашем посте ничего про лабиринт не было)
Давайте еще раз и по порядку)
при чем тут if и как вы так заполняете лабиринт…
5 ноября 2009 в 12:03
void Ff()
{
if(…)
{
return; – это выход из ф-ии.
}
}
5 ноября 2009 в 12:02
Тонко! Хотя и не очень…
пишете
if(x<x1)
{
//какой-то код
}
какой-то код будет выполнен только если условие x<x1 верно.
Если нужно наоборот то if(!x<x1)
> х и х1 функция будет брать из того места, где вызвана функция?
Да, это так.
5 ноября 2009 в 12:02
С матрицами не очень понял, ну создайте матрицу базового типа object или как его там в сишарпе…
5 ноября 2009 в 12:01
а по сабжу?
5 ноября 2009 в 12:00
>> но умная девочка, которая писала учебник, написала, что надо
>> стараться избегать go to
Это не умная девочка написала, а в далекие далекие 80-е об этом говорили создатели языка "С" Б. Керниган и Д.Риччи и в общем то правы.