Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include "winbgi2.h"
- double funkcja(double M, double g, double t, double s);
- void main()
- {
- double M, g, tp, tk, tb, sp, sk, ds,ds2, pom, n,nn, rad, *x, *y, *xx, *yy, *t,*tt,smax,smin;
- int i, k,l;
- printf("podaj predkosc pocisku M>1\n");
- czytaj:
- scanf_s("%lf", &M);
- if (M <= 1) { printf(" Podano niepoprawna predkosc pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj; }
- printf("podaj wspolczynnik gamma. gamma>1\n");
- czytaj1:
- scanf_s("%lf", &g);
- if (g <= 1) { printf(" Podano nieopoprawna wpsolczynnik gamma. Wprowadz dana jeszcze raz\n"); goto czytaj1; }
- printf("podaj poczatkowy kat teta w stopniach. 0<teta<90\n");
- czytaj2:
- scanf_s("%lf", &tp);
- if (tp<0 || tp>90) { printf("Podano nieopoprawny kat poczatkowy teta. Wprowadz dana jeszcze raz\n"); goto czytaj2; }
- printf("podaj koncowy tak teta w stopniach. 0<teta<09\n");
- czytaj0:
- scanf_s("%lf", &tk);
- if (tk > 90 || tk < tp)
- {
- ("Podano nieopoprawny kat koncowy teta. Wprowadz dana jeszcze raz\n"); goto czytaj0;
- }
- printf("podaj paczatkowy kat fali uderzeniowej sigma w stopniach. 0<sigma<90\n");
- czytaj3:
- scanf_s("%lf", &sp);
- if (sp<0 || sp>=90) { printf("Podano nieopoprawny paczatkowy kat fali uderzeniowej pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj3; }
- printf("podaj koncowy kat fali uderzeniowej sigma w stopniach. 0<sigma<90\n");
- czytaj4:
- scanf_s("%lf", &sk);
- if (sk<=sp || sk>=90) { printf("Podano nieopoprawny koncowy kat fali uderzeniowej pocisku. Wprowadz dana jeszcze raz\n"); goto czytaj4; }
- printf("Podaj dokladnosc . ds>0 \n");
- czytaj5:
- scanf_s("%lf", &ds);
- if (ds<=0) { printf("Podano nieopoprawna dokladnosc . Wprowadz dana jeszcze raz\n"); goto czytaj5; }
- rad = 180. / (4.*atan(1.));
- tp = tp / rad;
- tk = tk / rad;
- sp = sp / rad;
- sk = sk / rad;
- n = (sk - sp) / ds;
- nn = (tk - tp) / ds;
- x = (double*)malloc((n+1)*sizeof(double));
- y = (double*)malloc((n+1)*sizeof(double));
- xx = (double*)malloc((n+1)*sizeof(double));
- yy = (double*)malloc((n+1)*sizeof(double));
- t = (double*)malloc((nn + 1)*sizeof(double));
- tt = (double*)malloc((nn + 1)*sizeof(double));
- printf("%lf %lf\n", n, nn);
- tb = tp;
- l = 0;
- for (tb; tb <=tk; tb=tb+ds)
- {
- pom = sp;
- i = 0;
- for (pom; pom <=sk; pom=pom+ds)
- {
- x[i] = pom;
- y[i] = funkcja(M, g, tb, pom);
- i=i++;
- if (((pom + ds)>sk) && (pom!=sk)) pom = sk - ds;
- }
- k = 0;
- for (i = 1; i < n - 1; i++) if (y[i - 1] < y[i]) k = i;
- t[l] = tb;
- tt[l] = x[k];
- l = l + 1;
- if (((tb + ds)>tk) &&(tb!=tk)) tb = tk - ds;
- }
- smin = tt[0];
- smax = tt[0];
- for (l = 1; l < nn; l++)
- {
- if (tt[l] > smax) smax = tt[l];
- if (tt[l] < smin) smin = tt[l];
- }
- graphics(600, 600);
- scale(tp, smin, tk, smax);
- for (l = 0; l < (nn-1); l++)
- {
- printf("teta= %.2lf sigma= %.2lf \n", t[l]*rad, tt[l]*rad);
- line(t[l], tt[l], t[l + 1], tt[l + 1]);
- }
- /*scale(0, funkcja(M, g, t, sp)*0.5, sk*2, funkcja(M, g, t, xx[k])*2);
- for (i = 0; i < n-1; i++) line(x[i], y[i], x[i + 1], y[i + 1]);
- printf("maksymalna wartosc funkcji=%lf dla sigma=%lf", yy[k], xx[k]);*/
- wait();
- }
- double funkcja(double M, double g, double t, double s)
- {
- double f;
- f = tan(s - t) / (tan(s))-2./((g+1)*M*M*sin(s)*sin(s))-(g-1)/(g+1);
- return f;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement