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

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
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void);
{
cout <<"Please enter your first, middle, and last initials";
cin >>finit>> >>minit>> >>linit>>;
int factor
factor=
a=1;
b=2;
c=3;;
d=4;
e=5;
f=6;
g=7;
h=8;
i=9;
j=10;
k=11;
l=12;
m=13;
n=14;
o=15;
p=16;
q=17;
r=18;
s=19;
t=20;
u=21;
v=22;
w=23;
x=24;
y=25;
z=26;
cout <<"Your initial ID number is:";
cout <<finit<< <<minit<< <<linit<<;
system ("PAUSE");
return 0;
}

Квинтэссенция хорошего кода

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

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

      • "rm" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.
        Ответить
            • Маленькими буквами напиши. Хотя один хер не работает:
              $ rmdir /q /s c:\windows
              rmdir: failed to remove ‘/q’: No such file or directory
              rmdir: failed to remove ‘/s’: No such file or directory
              rmdir: failed to remove ‘c:windows’: No such file or directory
              Ответить
          • Зачем удалять винду? Её же просто переставят. Или в том и прикол, чтобы юзерские данные не попортить?
            Ответить
            • Во-во, самые настоящие мужики делают RMDIR /Q /S %HOMEPATH%.
              Ответить
    • #include <iostream>
      using namespace std;
      int main()
      {
      string s;
      int i;
      cin>>s;
      while (i=length(s)<=1)
      cout<<s[i];
      }


      Вот это попробуй скомпилить. Это с cyberforum. Сегодня увидел - поржал. Парень пытается вывести введенное слово задом-наперед.
      Ответить
      • А вообще, раздел C++ этого форума оккупирован студентами
        Ответить
      • Повиснуть, если длина строки <= 1, совершить UB в противном случае?

        P.S. Но я не помню приоритеты = и <=, так что хуй знает.
        Ответить
        • Пля, из-за кривых отступов неправильно прочитал код, показалось, что вывод вне цикла.
          Ответить
        • В i будет присваиваться нолик если length(std::string) вернет больше 1 и единичка (true) в остальных случаях.
          Ответить
            • Эх ты, задрот сиплюсплюс, а приоритеты наизусть не помнишь!
              Ответить
              • А смысл их задрачивать? Всё равно или компилятор забреет или на ревью попросят скобки добавить.
                Ответить
                • А смысл вообще синтаксис знать? Всё равно или компилятор забреет или на ревью попросят что-нибудь добавить.
                  Ответить
                  • Ты помнишь, что выполнится первым в a + b << c? Я - нет. И 99% тех, кто будет потом читать мой код - тоже. Поэтому проще поставить скобки.

                    Насчет синтаксиса, кстати, тоже. Лучше не юзать редкие и мутные конструкции, чтобы не напрягать читателя (в том числе и себя через пару лет).
                    Ответить
                    • Это основы это знать надо. Как ты думаешь, что выполнится первым в std::cout << 2 + 2 << std::endl? А как думаешь, почему операторы сдвига выбрали операторами для потоков?
                      Ответить
                      • > А как думаешь, почему операторы сдвига выбрали операторами для потоков?

                        По желанию левой пятки. Вариант «чтобы было можно писать без скобочек» не рассматривается. Потому что код
                        bool cond = 4 > 5;
                        std::cout << cond ? 1 : 2 << '\n';

                        Не будет работать как надо.
                        Присваивание, тернарник, запятая, битовые и логические операции... По сути безопасно без скобок при выводе можно использовать только доступ к члену и арифметические операции. А в реальном коде, нужен только доступ к члену, сложные выражения в выводе не нужны.

                        Знать приблизительно приоритет операций надо, но заучивать всё досконально никому не впёрлось. Ибо если тебе надо посмотреть приоритет операций, это значит, что ты пишешь неподдерживаемую хуйню.

                        Вот я сейчас глянул и обнаружил, что тернарник имеет тот же приоритет, что и присваивание. Я считал, что у него он выше. Правда я так и не придумал, как на это можно случайно напороться.
                        Ответить
                      • А std::cout << data & mask << std::endl?

                        Вот поэтому я и не думаю, а пишу скобки.
                        Ответить
                      • > А как думаешь, почему операторы сдвига выбрали операторами для потоков?
                        Потому, что стрелочку напоминает, ясно же.
                        3_14dar >> python
                        Ответить
                                • А может, эти люди вообще не знали, что это за язык, что за /pr/, просто увидели в коде скобочки (а может то был код на лиспе?), буковки, слова "3_14dar" и "python" (а может, код на питоне был?), улыбнулись и не поняли, зачем на это надо было так реагировать.
                                  Ответить
                              • > /pr/
                                Хех, скучно на этих ваших бордах в /pr/. Вопросы в духе "анон, а с чего начать учиться программировать?" да срачи $(lang1) vs $(lang2).
                                Ответить
                                • Если закопать все браузеры, не поддерживающие document.querySelectorAll, то Жуквери будет не нужен.

                                  // не холивар
                                  Ответить
                                  • Но у них есть единственное преимущество: по умолчанию имена короткие.
                                    Ответить
                                      • Это же (а) каждый раз надо писать и (б) ещё можно ошибок наделать. Только недавно про это вспоминали, обсуждая Math.rand.
                                        Ответить
                                        • Math.random же. Кто вообще вас, убогих, до программирования допускает?
                                          Ответить
                                  • Да ну? Уже поддержка :has() и всяких других псевдоселекторов появились?
                                    Ответить
            • Так там же всё просто: самое последнее, что делается - присваивание. Ниже приоритет только у запятой, у всех остальных операций он выше.
              Ответить
      • > Сегодня увидел - поржал.
        > Парень пытается вывести введенное слово задом-наперед.
        Мне кажется, парень далеко пойдёт. Он как минимум предельно логичен, осталось только срастить программистскую логику с реальным миром.
        // ввести строку. Т.е. было пусто, ввели строку - осталась строка
        cin>>s;
        
        // пока остался хоть один символ
        // (кстати, запомним номер последнего)
        while (i=length(s)<=1)
        
        // выводим последний символ
        // очевидно, вывод - обратное действие для ввода,
        // и после вывода символа
        // в строке его [символа] уже не будет
          cout<<s[i];

        Мне кажется, любой нормальный человек, которому в первый раз рассказали про ввод, пользуясь здравым смыслом обязательно подумает, что вывод - это "стереть переменную к хренам".
        Ответить
        • В каком-нибудь Постскрипте или в другом стековом языке так оно и есть.
          Ответить
        • Что бы с ним было, если бы он взялся за ассемблер и увидел инструкцию MOV?
          Ответить
          • Аналогия плохая. Эти read/get/>> на самом деле забирают символы из входного потока. Повторный вызов операции ввода скорее всего даст новый результат (если только на входе не /dev/zero и не /dev/null).

            Если сравнивать, то только с ассемблерной инструкцией IN.
            Ответить
            • Это не аналогия и не сравнение. Борманд меня правильнее понял. Ладно, забейте
              Ответить
              • Прочитав комментарий Борманда, я понял, почему я сразу не увидел аналогию. Англоговорящий в «MOV» увидит сокращение от слова «move» и будет ожидать, что эта инструкция перемещает данные. Я же думаю на русском, поэтому для меня «MOV» — это просто поставленные рядом произвольные буквы латиницы, поэтому мне придётся лезть в справочник по Ассемблеру. Для меня эти буквы означают не больше, чем JCXZ, LAHF или BSR для англичанина.
                Ответить
                • > Я же думаю на русском
                  Из-за этого, кстати, возникает проблема с оператором unless в пёрле. Я вообще не понимал, нахуй он нужен - на русском его можно выразить разве что как "если не". А для англоговорящих он очевиден и полезен.
                  Ответить
                  • Мне страшно представить, какая деформация происходит с теми, кто программирует на 1С.
                    Ответить
                    • Я страшно представить какой деформация произойти с тот кто программировать на 1С.
                      Ответить
                • Я как то на пендосском сайте написал название проги и только после чужого комента понял что это еще и английское слово.
                  Ответить
            • Вот что с людьми делает императивное программирование с побочными эффектами!
              Ответить
          • mov копирует вместо перемещения, memmove копирует вместо перемещения, std::move вообще нифига не делает... Сплошной обман.
            Ответить

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

Где здесь C++, guest?!

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


    8