Advertisement
Guest User

pocisk

a guest
Jan 28th, 2015
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include "winbgi2.h"
  5. double funkcja(double M, double g, double t, double s);
  6.  
  7. void main()
  8. {
  9.  
  10. double M, g, tp, tk, tb, sp, sk, ds,ds2, pom, n,nn, rad, *x, *y, *xx, *yy, *t,*tt,smax,smin;
  11. int i, k,l;
  12.  
  13. printf("podaj predkosc pocisku M>1\n");
  14. czytaj:
  15. scanf_s("%lf", &M);
  16. if (M <= 1) { printf(" Podano niepoprawna predkosc pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj; }
  17.  
  18. printf("podaj wspolczynnik gamma. gamma>1\n");
  19. czytaj1:
  20. scanf_s("%lf", &g);
  21. if (g <= 1) { printf(" Podano nieopoprawna wpsolczynnik gamma. Wprowadz dana jeszcze raz\n"); goto czytaj1; }
  22.  
  23. printf("podaj poczatkowy kat teta w stopniach. 0<teta<90\n");
  24. czytaj2:
  25. scanf_s("%lf", &tp);
  26. if (tp<0 || tp>90) { printf("Podano nieopoprawny kat poczatkowy teta. Wprowadz dana jeszcze raz\n"); goto czytaj2; }
  27.  
  28. printf("podaj koncowy tak teta w stopniach. 0<teta<09\n");
  29. czytaj0:
  30. scanf_s("%lf", &tk);
  31. if (tk > 90 || tk < tp)
  32. {
  33. ("Podano nieopoprawny kat koncowy teta. Wprowadz dana jeszcze raz\n"); goto czytaj0;
  34. }
  35.  
  36. printf("podaj paczatkowy kat fali uderzeniowej sigma w stopniach. 0<sigma<90\n");
  37. czytaj3:
  38. scanf_s("%lf", &sp);
  39. if (sp<0 || sp>=90) { printf("Podano nieopoprawny paczatkowy kat fali uderzeniowej pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj3; }
  40.  
  41. printf("podaj koncowy kat fali uderzeniowej sigma w stopniach. 0<sigma<90\n");
  42. czytaj4:
  43. scanf_s("%lf", &sk);
  44. if (sk<=sp || sk>=90) { printf("Podano nieopoprawny koncowy kat fali uderzeniowej pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj4; }
  45.  
  46. printf("Podaj dokladnosc . ds>0 \n");
  47. czytaj5:
  48. scanf_s("%lf", &ds);
  49. if (ds<=0) { printf("Podano nieopoprawna dokladnosc . Wprowadz dana jeszcze raz\n"); goto czytaj5; }
  50.  
  51. rad = 180. / (4.*atan(1.));
  52. tp = tp / rad;
  53. tk = tk / rad;
  54. sp = sp / rad;
  55. sk = sk / rad;
  56.  
  57. n = (sk - sp) / ds;
  58. nn = (tk - tp) / ds;
  59.  
  60. x = (double*)malloc((n+1)*sizeof(double));
  61. y = (double*)malloc((n+1)*sizeof(double));
  62. xx = (double*)malloc((n+1)*sizeof(double));
  63. yy = (double*)malloc((n+1)*sizeof(double));
  64. t = (double*)malloc((nn + 1)*sizeof(double));
  65. tt = (double*)malloc((nn + 1)*sizeof(double));
  66. printf("%lf %lf\n", n, nn);
  67. tb = tp;
  68. l = 0;
  69. for (tb; tb <=tk; tb=tb+ds)
  70. {
  71.  
  72. pom = sp;
  73. i = 0;
  74. for (pom; pom <=sk; pom=pom+ds)
  75. {
  76. x[i] = pom;
  77. y[i] = funkcja(M, g, tb, pom);
  78. i=i++;
  79. if (((pom + ds)>sk) && (pom!=sk)) pom = sk - ds;
  80. }
  81.  
  82. k = 0;
  83. for (i = 1; i < n - 1; i++) if (y[i - 1] < y[i]) k = i;
  84.  
  85.  
  86.  
  87. t[l] = tb;
  88. tt[l] = x[k];
  89. l = l + 1;
  90. if (((tb + ds)>tk) &&(tb!=tk)) tb = tk - ds;
  91. }
  92. smin = tt[0];
  93. smax = tt[0];
  94. for (l = 1; l < nn; l++)
  95. {
  96. if (tt[l] > smax) smax = tt[l];
  97. if (tt[l] < smin) smin = tt[l];
  98. }
  99. graphics(600, 600);
  100. scale(tp, smin, tk, smax);
  101.  
  102. for (l = 0; l < (nn-1); l++)
  103. {
  104. printf("teta= %.2lf sigma= %.2lf \n", t[l]*rad, tt[l]*rad);
  105. line(t[l], tt[l], t[l + 1], tt[l + 1]);
  106. }
  107.  
  108.  
  109.  
  110. /*scale(0, funkcja(M, g, t, sp)*0.5, sk*2, funkcja(M, g, t, xx[k])*2);
  111. for (i = 0; i < n-1; i++) line(x[i], y[i], x[i + 1], y[i + 1]);
  112. printf("maksymalna wartosc funkcji=%lf dla sigma=%lf", yy[k], xx[k]);*/
  113.  
  114. wait();
  115. }
  116.  
  117. double funkcja(double M, double g, double t, double s)
  118. {
  119. double f;
  120. f = tan(s - t) / (tan(s))-2./((g+1)*M*M*sin(s)*sin(s))-(g-1)/(g+1);
  121. return f;
  122.  
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement