1. Список говнокодов пользователя cat_code

    Всего: 4

  2. C++ / Говнокод #24917

    0

    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
    void testing_dot(int N)
    {
    	Vector_type<float> X(N), Y(N);
    	for (int i = 0; i < N; ++i)
    	{
    		X[i] = sin(i);
    		Y[i] = cos(i);
    	}
    	int Ntest = 20;
    	float taxpyseq = 0.0, t;
    	const float axpyflop = Ntest*Ntest*N * 3 * 1E-9;
    	printf("testing sequential ops:\n");
    	omp_set_num_threads(1);
    	for (int i = 0; i < Ntest; i++) {
    		t = omp_get_wtime();
    		for (int j = 0; j < Ntest; j++) dot(X, Y);
    		taxpyseq += omp_get_wtime() - t;
    	}
    	printf("Sequential ops timing: \n");
    	printf("dot time=%6.3fs GFLOPS=%6.2f\n", taxpyseq, axpyflop / taxpyseq);
    	//parallel mode
    	const int NTR = omp_get_num_procs();
    	for (int ntr = 2; ntr <= NTR; ntr += 2) {
    		for (int i = 0; i < N; ++i)
    		{
    			X[i] = sin(i);
    			Y[i] = cos(i);
    		}
    		printf("testing parallel ops for ntr=%d:\n", ntr);
    		omp_set_num_threads(ntr);
    		float taxpypar = 0.0;
    		for (int i = 0; i < Ntest; i++) {
    			t = omp_get_wtime();
    			for (int j = 0; j < Ntest; j++); dot(X, Y);//действительно небывалое ускорение!!!
    			taxpypar += omp_get_wtime() - t;
    		}
    		printf("dot time=%6.3fs GFLOPS=%6.2f Speedup=%6.2fX \n",
    			taxpypar, axpyflop / taxpypar, taxpyseq / taxpypar);
    	}
    }

    когда ты доказываешь закащику, что твой алгоритм реально лучше...

    cat_code, 13 Октября 2018

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

    0

    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
    class MyClass
    {
    public:
    	MyClass() {};
    	MyClass(const MyClass & M1) {
    		MyClass * T = this;
    		delete this; 
    		T = new MyClass(M1);
    	}
    	~MyClass() {};
    private:
    };
    
    int main(int argc, char *argv[])
    {
    	MyClass A1;
    	MyClass *B=new MyClass(A1);
    }

    ОНО РАБОТАЕТ!...вечно правда...НО ПОЧЕМУ ЭТА ТВАРЬ РАБОТАЕТ??? какого можно удалять память... ещё не выделенную... если кто мне объяснит, я буду счастлив (ах да код появился при решении одной забавной задачки, что произойдёт с конструктором копирования при удалении указателя на свой же экземпляр класса)

    cat_code, 13 Октября 2018

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

    0

    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
    Vector_type(const Vector_type& m1) {
    		if (this->size != m1.size) {
    			if (this->size != 0)
    				destroy_memmory();
    			this->size = m1.size;
    			this->M = new m_type[size];
    			for (int i = 0; i < size; i++)
    				this->M[i] = m1.M[i];
    		}
    		else {
    			for (int i = 0; i < size; i++)
    				this->M[i] = m1.M[i];
    		}
    	};
    	Vector_type& operator = (const Vector_type& m1) {
    		if (this->size != m1.size)
    			throw "not right =";
                   this(m1);
    		return *this;
    	};

    Действительно что могло пойти не так? просто копировать приравнять, копировать, приравнять, копировать...

    cat_code, 12 Октября 2018

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

    0

    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
    Vector_type(const Vector_type& m1) {
    		if (this->size != m1.size) {
    			if (this->size != 0)
    				destroy_memmory();
    			this->size = m1.size;
    			this->M = new m_type[size];
    			for (int i = 0; i < size; i++)
    				this->M[i] = m1.M[i];
    		}
    		else {
    			for (int i = 0; i < size; i++)
    				this->M[i] = m1.M[i];
    		}
    	};
    	Vector_type& operator = (const Vector_type& m1) {
    		if (this->size != m1.size)
    			throw "not right =";
    		for (int i = 0; i < size; i++)
    			this->M[i] = m1.M[i];
    		return *this;
    	};

    Действительно что могло пойти не так? просто копировать приравнять, копировать, приравнять, копировать...

    cat_code, 12 Октября 2018

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