1. C++ / Говнокод #17971

    +144

    1. 1
    class User : public database

    суслик - это разновидность зоопарка.

    amyznikov, 10 Апреля 2015

    Комментарии (9)
  2. C++ / Говнокод #17964

    +137

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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>
    
    template <typename T>
    struct Symbol {};
    
    template <>
    struct Symbol<int> {
        static constexpr const char value = 'd';
    };
    template <>
    struct Symbol<float> {
        static constexpr const char value = 'f';
    };
    
    template<std::size_t N, typename T>
    constexpr bool check_arg_part(const char (&s)[N], size_t i, T d)
    {
        if (i == N)
            return true;
    
        if (i < N - 1) {
            if (s[i] == '%') {
                if (s[i + 1] != Symbol<T>::value)
                    return false;
            }
        }
        return check_arg_part(s, i + 1, d);
    }
    
    template<std::size_t N, typename T>
    constexpr bool check_arg(const char (&s)[N], T d) {
        return check_arg_part(s, 0, d);
    }
    
    int main(int , char*[]) {
        std::boolalpha(std::cout);
    
    
        constexpr bool r = check_arg("foo is int: %d", 1);
        std::cout << "Argument integer is correct: " << r << std::endl;
        constexpr bool r1 = check_arg("foo is float:  %f", 1.0f);
        std::cout << "Argument float is correct: " << r1 << std::endl;
        constexpr bool r2 = check_arg("foo is float: %f", 1);
        std::cout << "Argument int is correct: " << r2 << std::endl;
    
        return 0;
    }

    По мотивам http://govnokod.ru/17925:

    Функция в compile time проверяет соответствие типов. Работает на clang и почему-то валится на gcc.

    gorthauer87, 09 Апреля 2015

    Комментарии (10)
  3. C++ / Говнокод #17961

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Bool_vector::operator«(int) // сдвиг
    {
    int i;
    for (i=0;i<this->n;i++)
    cout»(*this)[i];
    }

    Человек далёк от программирования.
    Пытается написать лабу.
    Не блондинко.
    Я при виде этого не сдержался.

    mittorn, 08 Апреля 2015

    Комментарии (29)
  4. C++ / Говнокод #17958

    +134

    1. 1
    static_cast<Vampire*>(&attacker)->suckHpFrom(attacked, damage * Vampire::hpSuckRatio);

    artembegood, 08 Апреля 2015

    Комментарии (6)
  5. C++ / Говнокод #17949

    +46

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    #include <Windows.h>
    #include <stdio.h> 
    #include <stdlib.h>
    #include <math.h>
    #include <iostream>
    #include <fstream>
    #include <iostream>
    #include <string>
    using namespace std;
    
    
    
    
    double f(double x, double y)
    {
    	return y*y-2*x;
    }
    
    double f2(double x)
    {
    	return  sqrt(2*x+1);
    }
    
    int main(void) {
    	std::ofstream out;
    	out.open("out.txt");
    
    	double xn = 0, yn = 1, a = 0, b = 1, h = 0.2, x, y, n;
    	int i;
    	n = (b - a) / h;
    	y = yn;
    	x = a;
    
    	printf("x[0]=%.4f  ", x);
    	printf("y[0]=%.4f\n\n", y);
    	double k1, k2, k3, k4, dy, y1;
    	
    	cout << " i   " << "x[i]     " << "y[i]     " << "y[x[i]]  " << "E" << endl;
    
    	for (i = 1; i <= n; ++i)
    
    	{
    		x = xn + i*h;
    		k1 = h*f(x, y);
    		k2 = h*f((x + (h / 2)), (y + (1 / 2 * k1)));
    		k3 = h*f((x + (h / 2)), (y + (1 / 2 * k2)));
    		k4 = h*f((x + h), (y + k3));
    		dy = (k1 + 2 * k2 + 2 * k3 + k4) / 6;
    		y = y + dy;
    		y1 = f2(x);
    
    
    		printf("%2d.  ", i);
    		printf("%.5f  ", x);
    		printf("%.5f  ", y);
    		printf("%.5f  ", y1);
    		printf("%.9f\n", abs(y-y1));	
    		
    		
    	
    	}
    
    	out << y1 << '\n'; 
    	out.close();
    	
    	
    	
    	return 0;
    }

    В out выводится только последнее значение y1.
    Сам цикл проходит (в данном случае) 5 раз
    Соответственно, 5 значений y1
    Как сделать, чтобы он показывал все пять значений?

    misha3977, 06 Апреля 2015

    Комментарии (15)
  6. C++ / Говнокод #17946

    +54

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    #include <iostream>
    
    using namespace std;
    
    int sumc(int n) {
    	int res = 0;
    	while (n != 0) {
    		int tmp = n % 10;
    		n /= 10;
    		res += tmp * tmp;
    	}
    	return res;
    }
    
    int main () {
    	freopen("input.txt", "rt", stdin);
    	freopen("output.txt", "wt", stdout);
    	int x;
    	cin >> x;
    	int i;
    	for (i = x + 1; sumc(i) % 7; ++i);
    	cout << i;
            //код рабочий, а в комментах изначальный говно-вариант
    	/*int a[5];
    	a[0]=0;
    	a[1]=0;
    	a[2]=0;
    	a[3]=0;
    	a[4]=0;
    	int n = 4;
    	while (x > 0) {
    		a[n] = x%10;
    		x=x/10;
    		n--;
    	}
    	while (1 == 1) {
    		if ((a[0]*a[0]+a[1]*a[1]+a[2]*a[2]+a[3]*a[3]+a[4]*a[4])%7 == 0)
    			break;
    		a[n]++;
    		for (int j=n; n>0; j--) {if (a[j]=10) {
    			a[j-1]++; 
    			a[j] = 0;
    		};
    		};
    
    	};
    	int j=-1;
    	while (1) {
    
    		++j;
    		if (a[j] != 0) break;
    	};
    	for (int l=j; l<5; l++){
    		cout << a[l];
    	};*/
    	return 0;
    }

    код рабочий, а в комментах изначальный говно-вариант

    yury99, 06 Апреля 2015

    Комментарии (13)
  7. C++ / Говнокод #17933

    +53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    void ServerList::ParseServers(char *response, int len){
            numservers = 0;
         
            int i;
            QHostAddress srvadr;
            const char *info = "\xFF\xFF\xFF\xFFgetinfo\x00";
            for(i = 23; i < len; i+=7){
                quint16 port = (((* (quint8 *)(response + i + 4)) << 8) | (* (quint8 *)(response + i + 5)));
                quint32 addr = (((* (quint8 *)(response + i)) << 24)|((* (quint8 *)(response + i + 1)) << 16)|((* (quint8 *)(response + i + 2)) << 8)|(* (quint8 *)(response + i + 3))); //XD
                srvadr.setAddress(addr);
                qDebug() << srvadr << " : " << port;
                  if(getinfo->writeDatagram(info, 15, srvadr, port) <0 ){
                   qDebug() << "FAILED";
                  }
                  numservers++;
             }
            serverlist->setRowCount(numservers);
            qDebug() << numservers;
        }

    Пздц.

    gost, 04 Апреля 2015

    Комментарии (6)
  8. C++ / Говнокод #17928

    +56

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    std::map<int, int> aSummator; //Массив частичных сумм
    std::vector<int> v; //Исходный массив
    
    void InitSummator()
    {
        aSummator[0] = v[0];
        aSummator[-1] = 0;
    
        for(int i = 1; i < int(v.size()); i++)
        {
            aSummator[i] = aSummator[i - 1] + v[i];
        }
    }
    
    int GetSum(int l, int r)
    {
        return aSummator[r] - aSummator[l - 1]; 
    }

    Как я писал сумматор 0.1 года назад. Вместо того, чтобы написать один if, я использовал std::map, что увеличило ассимптотику алгоритма на запрос с O(1) до O(log(n)). Но задачу при тех ограничениях (в массиве до 100000 элементов, запросов не более 100000) алгоритм решил. Преподу, естественно, показывать забоялся.

    Janycz, 03 Апреля 2015

    Комментарии (18)
  9. C++ / Говнокод #17925

    +57

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    #include <iostream>
    #include <stdexcept>
    
    template<std::size_t N>
    static int constexpr date_component(const char (&s)[N], int i, bool last, int max) {
      return 
        (i + 2 + (last ? 0 : 1) >= N) 
            ? throw std::logic_error("Too short date string") :
        (!last && s[i + 2] != ':') 
            ? throw std::logic_error("Cannot find delimiter") :
        (s[i] < '0' || s[i] > '9' ||  s[i + 1] < '0' || s[i + 1] > '9') 
            ? throw std::logic_error("Not a number") :
        ((s[i] - '0') * 10 + (s[i + 1] - '0') > max) 
            ? throw std::logic_error("Too large number") :
                (s[i] - '0') * 10 + (s[i + 1] - '0');
    }
    
    struct time { 
        int hour; int minute; int second; 
        
        template<std::size_t N>
        constexpr time(const char (&datestr)[N]) :
            hour(date_component(datestr, 0, false, 24)), 
            minute(date_component(datestr, 3, false, 60)),
            second(date_component(datestr, 6, true, 60)) 
        {}
    };
    
    struct time constexpr midnight("00:00:00");
    struct time constexpr afternoon("12:00:00");
    
    int main(int argc, char* argv[]) {
        std::cout << "Midnight hour is " << midnight.hour << std::endl;
        std::cout << "Afternoon hour is " << afternoon.hour << std::endl;
    }

    C++ и даты времени компиляции

    myaut, 03 Апреля 2015

    Комментарии (21)
  10. C++ / Говнокод #17922

    +53

    1. 1
    for ( ; currnet->prev != NULL; (*this)-- );

    медод везвращения итератора к началу

    artembegood, 03 Апреля 2015

    Комментарии (337)