Кресты / Говнокод #21408 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
#include <iostream>
using namespace std;

class cs{protected: int t;int fs(){return t;}   cs(int p):t(p){} ~cs(){cout<<"\n~cs"<<this;} friend void sh(cs*);};

class cn:protected cs {protected: int t  /* ,z */ ; cn(int p, int ps):cs(ps), t(p){} int fs(){return t+cs::fs();}};

class ct:protected cn, protected cs {protected: int t;int fs(){return t+cs::fs()+cn::fs();} friend int sm( ct*  x){return x->fs();}
friend void sh(ct*);
public: ct(int p, int ps, int pns, int pn):cs(ps), t(p), cn(pn,pns){} //void setZ(int pz){z=pz;} int getZ(){return z;}
		~ct(){cout<<"\n~ct";}};

void sh(ct* x){cout <<endl<<x<<' '<<x->t<<' '<<x->cs::t<<' '<<x->cn::t<<' '<<x->cn::cs::t;}

void shcs(cs* x){ cout <<endl<<x; sh(x);}
void sh(cs* x){cout <<endl<<x<<' '<<x->t;}

struct ss {int t;ss(int p):t(p){}  void sh(){cout<<"\nsst="<<t;}~ss(){cout<<"\n~ss"<<this<<' '<<sizeof(*this);}};// no distructor for *this

struct sn: ss { int t; sn(int p, int ps):ss(ps), t(p){} };

struct st: sn,  ss { int t; st(int p, int ps, int pns, int pn):ss(ps), t(p), sn(pn,pns){}  ~st(){cout<<"\n~st"<<' '<<sizeof(*this);}};

void main()
{
	ct* pct = new ct(1,2,4,8);cout <<sm(pct);
//	pct->setZ(77);cout <<pct->getZ()<<endl;

	for (int t= sizeof(*pct)/sizeof(int) ,sm=0, *pi=(int*)pct;t--; sm+= *pi++,cout<<' '<<sm);//4 12 14

	cout<<"\ncalling shcs";sh(pct);shcs((cs*)pct);shcs((cs*)(cn*)pct);

	delete pct;


	st* pst = new st(1,2,4,8);
	sn* psn=0;
	ss* pss;  cout <<"\n ss* ->t="<<(pss /*  = psn  */ = pst)->t<<' '<<pss<<' '<<psn<<' '<<' '<<pst; // different pss' addresses 
	cout <<"\n ss* ->t="<<(pss=(sn*)pst)->t<<' '<<pss<<' '<<pst;

	st* ps2= (st*)pss; cout<<"\nst* ps2 = (st*) pss"<<ps2;// not existing instant on that address - CAN CRASH!!!

	/* pss=pst; */  delete /*(st*)(sn*)*/  pss;//??????

	system("pause");

}

Изучение бинарных деревьев. Компьютерная Академия "ШАГ" Киевский филиал

Запостил: KARTON KARTON, (Updated )

Комментарии (59) RSS

  • сука

    как меня бесит что школоту с необсохшим на губах маёнозом учат крестам

    нахуя??

    зачем бинарные деревья проходить на крестах? блядь
    вы еще массивы на окамле изучайте
    Ответить
      • все в норме

        а Вы считаете что ребенку стоит изучать программирование с окамла?
        Ответить
        • Вполне. Не обязательно же сразу в хардкор со структурным ООП, функторами, DI в компайлтайме и метапрограммированием на camlp4.
          Там вполне человеческое IO, отличная модульная система (в отличие от всяких JS), понятная модель исполнения, и можно срать в массивы без unsafePerformIO и ST-монад. Можно и DSL-ек при желании написать, чтобы сгладить кривую вхождения для детей.
          В общем, не сильно отличается от паскаля, с которого я начинал. Только скобки при вызове функций писать не нужно.
          Ответить
          • У меня весной будет вводный курс проги для шестиклашек. Может, попробовать?
            Ответить
                • да, отличная мысль про asm.

                  --папа, а как написать программу чтобы компьютер вывел мое имя на экран?
                  --Делаешь строку, терминированную нолем, потом кладешь на стек в порядке слева-на-право(stdcall) хендл консоли, адрес этой строки, 32битное число с ее длиной, потом указатель на шмат памяти куда писать сколько символов записалось, и потмо еще нул. Смотришь потом чтобы в EAX была единица (это типа ретурн по стдколу, единица это тру) и не забудь почистить стек потом.
                  --Папа, а что такое терминаторную?
                  Ответить
                  • Да, на первом курсе нам препод примерно так и рассказывал. И, имхо, правильно делал.
                    Ответить
                    • правда? а где такое было?

                      Вообще говоря что-то в этом есть. С одной стороны я понимаю что начинать нужно со строгого, четкого языка с простыми конструкциями (кстати паскаль прекрасен как учебный язык).

                      С другой стороны ВВЕРХ всегда идти проще, чем вниз. Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)

                      А вот обратное не верно, к сожалению.

                      Потому мне не очень нравится современная тенденция учить сразу питон или джаву, и уж конечно полный идиотизм писать на С++ когда ты не умеешь даже бинарные деревья.
                      Ответить
                      • >со строгого, четкого языка с простыми конструкциями (кстати паскаль прекрасен как учебный язык).
                        Жава тоже соответствует критериям + гц.

                        >Если студент осилил си с ее указательной арифметикой, сторадж классами, управлением памятью итд, то уж питончик-то он всегда освоит)
                        И будет хуярить си напитоне.
                        Ответить
                        • Жава не соответствуте. Во-первых много грязи. Вся стандартная либлиотека очень засрана всякими антипаттернами.

                          Во-вторых много ненужной хуйни.
                          Первая программа начинается словами "public static void main".
                          Сразу нихуя не понятно что это блядтьтакое.

                          >>И будет хуярить си напитоне.
                          Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
                          Ответить
                          • >Жава не соответствуте. Во-первых много грязи. Вся стандартная либлиотека очень засрана всякими антипаттернами.
                            И тут ты с пруфами.

                            >Первая программа начинается словами "public static void main".
                            Сразу нихуя не понятно что это блядтьтакое.
                            И это самое главное. Жава не для прог в 1 файл.

                            >Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)
                            Замечательно работает и в обратном направлении.
                            Ответить
                            • >>И тут ты с пруфами.
                              Возьми книгу Блоха "эффектив джава" и сразу все узнаешь.
                              про readObject(), про Date(), про StringBuilder и StringBuffer итд.

                              >>Жава не для прог в 1 файл.
                              Совершенно верно. А учиться нужно с них.

                              >>Замечательно работает и в обратном направлении.
                              Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
                              Ответить
                              • Да нет уж, давай нормальные цитаты или ссылку на скачивание с номерами страниц.

                                >А учиться нужно с них.
                                Учиться можно и так. Тем более, рыбу генерит эклипс если поставить одну галочку или по шаблону main.

                                >Не-а. Начинавшие с JS горе-программисты так на нём и кодят. И если им понадобится хотя бы просто понять код на сях, то они сразу же крякнут, потому что даже не знают обычно сколько бит в байте.
                                >Прочитает одну книжечку, посмотрит на годные либы, потренируется годик и не будет)

                                Харэ демагогию разводить. Скажи в каких вузах на программиста обучение начинается с асма.
                                Ответить
                                • >>, давай нормальные цитаты или ссылку на скачивание с номерами страниц.

                                  Да пошел ты нахуй, обезьяна безрукая. Книжки ты читать не умеешь, темой вопроса не владеешь (Если бы ты хоть один день писал на джаве, то вопроса бы не возникло) и хочешь чтобы я тут доказывал тебе что черное это черное.

                                  >>Тем более, рыбу генерит эклипс
                                  Ну, охуеннно.

                                  "Ребята, 80% символов на этом экране вы пока не понимаете, ну и хуй с ними.". Очень удобно так учиться.

                                  >>Скажи в каких вузах на программиста обучение начинается с асма.
                                  Это к хуесте вопрос: Он сказал что его так учили.

                                  В моем детстве путь был такой: паскаль ->си+асм.
                                  Сейчас не знаю как.
                                  Ответить
                  • Ну вот кстати нифига подобного... Асм - это как кубики или конструктор. Примитивные блоки, из которых можно сложить что-то нужное. Не то что всякие жабы, где надо кучу высокоуровневых концепций понять. Детям, имхо, должен неплохо заходить.

                    Только вместо навороченных и обросших говном х86 и винапи надо взять что-то подружелюбнее и попроще - какую-нибудь ардуинку например.
                    Ответить
                    • Кмк, языки для обучения детей и для универов должны быть немного разные.
                      Чтобы заинтересовать детей, старт должен быть интересным. Чтобы можно было делать крутые штуки, лучше всего — анимацию, роботов или игры. Тут подойдёт язык, в котором легко склеивать "блоки". Вот почему я упомянул написание eDSL для этих целей. Ассемблер в теории тоже подойдёт, если сделать его весёлым, показать на наглядных примерах. В частности, вот эту штуку я считаю неплохим введением в ассемблер http://tomorrowcorporation.com/humanresourcemachine
                      Для универов важно показать идею абстрактных типов данных и как правильно разделять и переиспользовать код. Паскаль был хорош для этого, но с обобщёнными алгоритмами у него не очень. Окамл в принципе весьма хорош для этих целей.
                      Ответить
                      • Игра неплохая, но отсутствие нормального IDE раздражает. Особенно когда ты хочешь переставить пару блоков кода, скопировать часть кода и вставить в другое место.

                        А после этой игры, сразу TIS-100. Чтобы сразу убить всё желание, которое могло появиться.

                        Или SHENZHEN I/O. Тоже вроде неплохая^w мозгоубивающая.
                        Ответить
                      • Я продолжаю любить лого как первый язык. Обычно на нём детям неплохо заходят все базовые процедурные концепции и любовь к декомпозиции.
                        Ответить
                        • > любовь к декомпозиции
                          А если я в детстве любил всё раскручивать - это проявление любви к декомпозиции?
                          Ответить
                        • Что думаешь про PascalABC?
                          По мне годнота, вроде современного турбопаса. Меня как-то просили учить школьников. Это, конечно, кончилось плохо (в смысле ничем), но дело было скорее в мне, а не в этой среде.
                          Ответить
                          • В моем децтве паскаль был не только учебный ЯП, но и рабочий. В теплые 90е я мог написать на нем всё, что угодно. И даже взрослые дяди на нем писали.

                            А что сейчас пишут на PascalABC?

                            Хотя он же по .NEt, так что наверное можно под винду не плохо писать
                            Ответить
                          • > но дело было скорее в мне
                            Хотел учить школьниц, а прислали школьников?
                            Ответить
                            • Как ты мог такое подумать. Мерзкое 3D же. Это просто не было интересно ни мне, ни им.
                              Ответить
                              • Хех, где бы найти 2D школьниц, которые хотят учиться программированию...
                                Ответить
                                • Bormand, за такие стремление к просвещению молодежи и посадить могут
                                  Ответить
                                • Могу только мерзкое тридэ предложить. К тому же это тебе до академа ездить.
                                  Ответить
                          • Ну вот он сейчас стандарт де факто для школьного паскаля. У нас тут острая проблема в том, что людей, которые одновременно готовы учить школьников, умеют хорошо кодить и согласны вести паскаль, нет.

                            Сишечку семиклассникам вводить и то больше желающих.
                            Ответить
                            • Вообще говоря, у меня о Pascal весьма тёплые воспоминания. Первый язык всё-таки... Первые игрушки, спрайты, зашитые в код...
                              Ответить
                            • >>Сишечку семиклассникам вводить и то больше желающих.

                              Что бы к выпускному борода пробилась?
                              Ответить
                    • завидую я тем, кто учил асм под z80) им куда проще было, гг
                      Ответить
                      • > завидую я тем, кто учил асм под z80
                        Присоединяйся к ардуинщикам, у avr асм тоже тёплый, ламповый и восьмибитный. Разве что регистров побольше.
                        Ответить
                        • >> Разве что регистров побольше.
                          Чем в x86 long mode?;))))

                          Вообще мне кажется что угодно имеет более приятный ISA чем x86
                          Ответить
                          • > Чем в x86 long mode
                            Внезапно, но да (если sse не считать). 32 штуки. Но вроде речь шла про z80?
                            Ответить
                            • почему это не считать sse? Очень даже считать. Их там сотня)
                              Ответить
                              • 16 штук всего. Мы же не байты считаем, а регистры? А ну ок, ещё +16 новых от AVX...
                                Ответить
                                • Я не про SSE, а вообще про самый последний x86 в long mode.
                                  А еще прибавь сюда плавающую курочку (там же тоже регистры есть) и всякие полудокументированные, и нормально будет. Сотня наберется)
                                  Ответить
                                  • Да гдеж сотня то? 16 обычных, 8 fpu/mmx, 32 sse/avx и... кончились. Или ты ещё предлагаешь всякие control/debug и MSR считать?
                                    Ответить
                                    • Может быть, он посчитал ещё половинки, четвертинки и осьмушки регистров (всякие EAX/AX/AL)?

                                      In 64-bit mode, eight new GPRs are added to the eight legacy GPRs, all 16 GPRs are 64 bits wide, and the low bytes of all registers are accessible. Figure 3-3 on page 27 shows the GPRs, flags register, and
                                      instruction-pointer register available in 64-bit mode. The GPRs include:
                                      • Sixteen 8-bit low-byte registers (AL, BL, CL, DL, SIL, DIL, BPL, SPL, R8B, R9B, R10B, R11B, R12B, R13B, R14B, R15B).
                                      • Four 8-bit high-byte registers (AH, BH, CH, DH), addressable only when no REX prefix is used.
                                      • Sixteen 16-bit registers (AX, BX, CX, DX, DI, SI, BP, SP, R8W, R9W, R10W, R11W, R12W, R13W, R14W, R15W).
                                      • Sixteen 32-bit registers (EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D).
                                      • Sixteen 64-bit registers (RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14, R15).
                                      Ответить
                                    • Кстати, почему не придумали SIH, DIH, SPH, BPH? Ряд регистров на -H выглядит слишком скромно.
                                      Ответить
  • Хммм, а как называется этот стиль форматирования? void main() - ну блин, я сам ничего против компиляторов майкрософта не имею, но они хоть знают зачем есть int main()?
    Ответить
      • А как тогда винда будет выводить сообщение «эта программа возможно работает неправильно» без кода возврата?
        Ответить
          • По докам exit(x) — то же самое, что и return x; из main. main ничего не возвращает, ergo параметр exit игнорируется тоже (а должн быть ошибкой компиляции).
            Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8