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) RSS

    • Когда у вас с Юрой сессия уже?
      Ответить
      • Астрологи объявили неделю лабораторных работ, количество лаб удваивается.
        Ответить
    • > Как сделать, чтобы он показывал все пять значений?
      Скажи честно, ты нас троллишь? В 56 строке ты показал все 5 значений y1...

      Или 53-57 чисто для отладки? Ну тогда перенеси запись y1 в out внутрь цикла. Или сложи результаты в какой-нибудь массив да выведи.
      Ответить
    • i have no idea what i'm doing
      Ответить
    • > #include <Windows.h>
      Ну нахуя... Угробил кросплатформенность одной строчкой. И ведь ничего из этого виндовз.х не поюзал.
      Ответить
      • Найден первый юниксмаздайщик
        Ответить
      • > Угробил кросплатформенность одной строчкой
        ...когда можно было и одним символом
        #include <Stdio.h>
        Ответить
        • cleaned
          Ответить
          • На самом деле соснули не только сишкобляди. В файловых системах *nix регистр различается, а в маздайке — нет.

            Можно ещё попробовать использовать в имени файла юникодный символ и посмотреть, кто соснёт в этот раз.
            Ответить
            • cleaned
              Ответить
            • винда соснет по любому. использовать юникодный символ в имени файла выше компетенции средне статистического пользователя.
              Ну и Линь может сосонуть. Но Винда все же раньше.
              Ответить

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