1. 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)
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. C++ / Говнокод #17922

    +53

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

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

    artembegood, 03 Апреля 2015

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

    +149

    1. 1
    -

    onnanon, 02 Апреля 2015

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

    +60

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for(int i=0;i<m;i++){
        if(i>0 && a[i-1][j]>=a[i][j])continue;
        if(i+1<n && a[i+1][j]>=a[i][j])continue;
        if(j>0 && a[i][j-1]>=a[i][j])continue;
        if(j+1<m && a[i][j+1]>=a[i][j])continue;}

    Я так и не понял, в чем смысл этого цикла, ну да ладно.

    Negovnokoder, 02 Апреля 2015

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

    +62

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    struct ErrorCodes
    {
        #define ERROR_ISNT_TEMPLATE_FILE        -1
        #define ERROR_ISNT_VALID_TEMPLATE_FILE  -2
    };

    cerevra, 02 Апреля 2015

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

    +49

    1. 1
    (*items)[item] += 1;

    указатель на map + operator[]
    такое

    artembegood, 01 Апреля 2015

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