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

    +61

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    HRESULT ReInitCOMAsSTA()
    	{
    		__AUTO_TRACE__(__FUNCTION__)
    		HRESULT hr = E_FAIL;
    		while (!SUCCEEDED(hr = CoInitialize(NULL)))
    		{
    			CoUninitialize(); // мочим КОМ, пока не даст нам проинициализироваться однопоточно
    		}	
    		return hr;
    	}

    laMer007, 13 Апреля 2015

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

    +53

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for(;!isCancel(); [&]{
    			for(int i = 0; (i < settrings.getValue(Settings::Updater::Period, 60)) && !isCancel(); ++i)
    			{
    				Concurrency::wait(1000);
    			}}())
    			{

    laMer007, 13 Апреля 2015

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

    +144

    1. 1
    class User : public database

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

    amyznikov, 10 Апреля 2015

    Комментарии (9)
  4. 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)
  5. 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)
  6. C++ / Говнокод #17958

    +134

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

    artembegood, 08 Апреля 2015

    Комментарии (6)
  7. 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)
  8. 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)
  9. 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)
  10. 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)