2024. január 19., péntek

Rakéta röppálya közelítő számítása.

A katonai műveletket C# programozási nyelven

1 /* Röppálya közelítő számítása.
2 *Drón által kilőtt
3 *hőkövető rakéta
4 *röppálya
5 */ közelítő számítás
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9# Megsemmisítő rakéta repülés közbeni pályamódosítása 
10 i n t main () {
11 d o u bl e v0 , vx , vy , alfa ;
12 /* TESZT */ v0 = 10.0;
13 /* TESZT */ alfa = 30.0;
14 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
15 /* TESZT */ printf ("Függő leges ␣ kezd ő sebess ég␣(vy ):␣%lf␣m/s\n", vy );
16 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
17 /* TESZT */ printf ("Ví zszintes ␣ kezd ő sebess ég␣(vx ):␣%lf␣m/s\n", vx );
18 r e t u r n 0;
19 }

----------
1 /* Röppálya közelítő számítása.
2 *
3 *
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 10.0
11
12 i n t main () {
13 d o u bl e v0 , vx , vy , alfa , t;
14 /* TESZT */ v0 = 10.0;
15 /* TESZT */ alfa = 30.0;
16 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
17 /* TESZT */ printf ("Függő leges ␣ kezd ő sebess ég␣(vy ):␣%lf␣m/s\n", vy );
18 t = vy / G;
19 /* TESZT */ printf (" Rep ülési␣idő␣a␣csú cspontig :␣%lf␣s\n", t);
20 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
21 /* TESZT */ printf ("Ví zszintes ␣ kezd ő sebess ég␣(vx ):␣%lf␣m/s\n", vx );
22 r e t u r n 0;
23 }

----------

1 /* Röppálya közelítő számítása.
2 * Lefelé zuhanva
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 10.0
11
12 i n t main () {
13 d o u bl e v0 , vx , vy , alfa , t;
14 /* TESZT */ v0 = 10.0;
15 /* TESZT */ alfa = -30.0;
16 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
17 /* TESZT */ printf ("Függő leges ␣ kezd ő sebess ég␣(vy ):␣%lf␣m/s\n", vy );
18 t = vy / G;
19 /* TESZT */ printf (" Rep ülési␣idő␣a␣csú cspontig :␣%lf␣s\n", t);
20 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
21 /* TESZT */ printf ("Ví zszintes ␣ kezd ő sebess ég␣(vx ):␣%lf␣m/s\n", vx );
22 r e t u r n 0;
23 }


---------

1 /* Röppálya közelítő számítása.
2 * Határ értéke
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 10.0
11
12 i n t main () {
13 d o u bl e v0 , vx , vy , alfa , t;
14 /* TESZT */ v0 = 10.0;
15 /* TESZT */ alfa = -30.0;
16 i f (0.0 <= alfa && alfa <= 90.0 && 0.0 <= v0) {
17 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
18 /* TESZT */ printf ("Függő leges ␣ kezd ő sebess ég␣(vy ):␣%lf␣m/s\n", vy );
19 t = vy / G;
20 /* TESZT */ printf (" Rep ülési␣idő␣a␣csú cspontig :␣%lf␣s\n", t);
21 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
22 /* TESZT */ printf ("Ví zszintes ␣ kezd ő sebess ég␣(vx ):␣%lf␣m/s\n", vx );
23 } e l s e {
24 printf (" Hib ás␣ adatok !\n");
25 }
26 r e t u r n 0;
27 }

----------
1 /* Röppálya közelítő számítása.
2 *
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 10.0
11
12 i n t main () {
13 d o u bl e v0 , vx , vy , alfa , t, sx , sy;
14 /* TESZT */ v0 = 10.0;
15 /* TESZT */ alfa = 45.0;
16 i f (0.0 <= alfa && alfa <= 90.0 && 0.0 <= v0) {
17 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
18 t = vy / G;
19 sy = G / 2.0 * t * t;
20 printf ("A␣röppá lya␣ legnagyobb ␣ magas ága:␣%lf␣m\n", sy );
21 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
22 sx = vx * 2.0 * t;
23 printf ("A␣lö ved ék␣tá vols ága␣fö ldet éré skor :␣%lf␣m\n", sx );
24 } e l s e {
25 printf (" Hib ás␣ adatok !\n");
26 }
27 r e t u r n 0;
28 }

-----------

1 /* Röppalya közelítő számítása.
2 *
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 9.80665
11
12 i n t main () {
13 d o u bl e v0 , vx , vy , alfa , t, sx , sy;
14 printf (" Kezd ő sebess ég␣(m/s)?␣"); scanf ("%lf", &v0 );
15 printf ("Szög␣( fok )?␣"); scanf ("%lf", & alfa );
16 i f (0.0 <= alfa && alfa <= 90.0 && 0.0 <= v0) {
17 vy = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
18 t = vy / G;
19 sy = G / 2.0 * t * t;
20 printf ("A␣röppá lya␣ legnagyobb ␣ magas ága:␣%lf␣m\n", sy );
21 vx = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
22 sx = vx * 2.0 * t;
23 printf ("A␣lö ved ék␣tá vols ága␣fö ldet éré skor :␣%lf␣m\n", sx );
24 } e l s e {
25 printf (" Hib ás␣ adatok !\n");
26 }
27 r e t u r n 0;
28 }

----------
Szimuláció

7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 9.80665
11
12 t y p e d e f s t r u c t {
13 d o u bl e x;
14 d o u bl e y;
15 } vektor_t ;
17 i n t main () {
18 d o u bl e v0 , alfa , dt , t;
19 vektor_t v, s;
20 s.x = s.y = t = 0.0;
21 printf (" Kezd ő sebess ég␣(m/s)?␣"); scanf ("%lf", &v0 );
22 printf ("Szög␣( fok )?␣"); scanf ("%lf", & alfa );
23 printf (" Delta ␣t␣(s)?␣"); scanf ("%lf", &dt );
24 v.x = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
25 v.y = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
26 w h i l e (s.y >= 0.0) {
27 printf ("%lf␣ sec :␣ poz (%lf ,␣%lf );␣ seb [%lf ,␣%lf ]\n", t, s.x, s.y, v.x, v.y);
28 s.x += v.x * dt;
29 s.y += v.y * dt - G / 2.0 * dt * dt;
30 v.y -= G * dt;
31 t += dt;
32 }
33 r e t u r n 0;
34 }
--------
1 /* Röppálya közelítő számítása.
2 *
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8
9 i n t main () {
10 d o u bl e v0 , alfa , dt;
11 printf (" Kezd ő sebess ég␣(m/s)?␣"); scanf ("%lf", &v0 );
12 printf ("Szög␣( fok )?␣"); scanf ("%lf", & alfa );
13 printf (" Delta ␣t␣(s)?␣"); scanf ("%lf", &dt );
14 /* TESZT */ printf (" Kezd ő sebess ég␣%lf␣m/s.\n", v0 );
15 /* TESZT */ printf ("Szög␣%lf␣ fok .\n", alfa );
16 /* TESZT */ printf (" Delta ␣t␣%lf␣s.\n", dt );
17 r e t u r n 0;
18 }


----------
1 /* Röpp á lya kö zel ítő számítása.
2 *
3 *
4 *
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 9.80665
11
12 t y p e d e f s t r u c t {
13 d o u bl e x;
14 d o u bl e y;
15 } vektor_t ;

17 i n t main () {
18 d o u bl e v0 , alfa , dt , t, tmax ;
19 vektor_t v;
20 t = 0.0;
21 printf (" Kezd ő sebess ég␣(m/s)?␣"); scanf ("%lf", &v0 );
22 printf ("Szög␣( fok )?␣"); scanf ("%lf", & alfa );
23 printf (" Delta ␣t␣(s)?␣"); scanf ("%lf", &dt );
24 v.x = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
25 v.y = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
26 tmax = 2.0 * v.y / G;
27 w h i l e (t <= tmax ) {
28 printf ("%lf␣ sec :␣ seb [%lf ,␣%lf ]\n", t, v.x, v.y);
29 v.y -= G * dt;
30 t += dt;
31 }
32 r e t u r n 0;
33 }


---------
Felesleges előre kiszámolni a repülési időt, elég, ha a tárgy aktuális
magasságát figyeljük.

1 /* Röpp á lya kö zel ítő számítása.
2 *
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < math .h >
9
10#d e f i n e G 9.80665
11
12 t y p e d e f s t r u c t {
13 d o u bl e x;
14 d o u bl e y;
15 } vektor_t ;
17 i n t main () {
18 d o u bl e v0 , alfa , dt , t;
19 vektor_t v, s;
20 s.x = s.y = t = 0.0;
21 printf (" Kezd ő sebess ég␣(m/s)?␣"); scanf ("%lf", &v0 );
22 printf ("Szög␣( fok )?␣"); scanf ("%lf", & alfa );
23 printf (" Delta ␣t␣(s)?␣"); scanf ("%lf", &dt );
24 v.x = v0 * cos ( alfa / 90.0 * M_PI / 2.0);
25 v.y = v0 * sin ( alfa / 90.0 * M_PI / 2.0);
26 w h i l e (s.y >= 0.0) {
27 printf ("%lf␣ sec :␣ poz (%lf ,␣%lf );␣ seb [%lf ,␣%lf ]\n", t, s.x, s.y, v.x, v.y);
28 s.x += v.x * dt;
29 s.y += v.y * dt - G / 2.0 * dt * dt;
30 v.y -= G * dt;
31 t += dt;
32 }
33 r e t u r n 0;
34 }

--------
1 /* Csúszóátlag számítása fixméretű tömbön.
2 *
3 * 
4 *
5 */
6
7#i n c l u d e < stdio .h >
8
9#d e f i n e N 15
10
11 d o u bl e atlag3 ( d o u bl e v1 , d o u bl e v2 , d o u bl e v3) {
12 r e t u r n (v1 + v2 + v3) / 3;
13 }
14
15 i n t main () {
16 d o u bl e ertektomb [N], atlagtomb [N - 2];
17 f o r ( i n t i = 0; i < N; ++i) {
18 printf ("?␣"); scanf ("%lf", &( ertektomb [i ]));
19 }
20 f o r ( i n t i = 0; i < N - 2; ++i)
21 atlagtomb [i] = atlag3 ( ertektomb [i], ertektomb [i + 1] , ertektomb [i + 2]);
22 f o r ( i n t i = 0; i < N - 2; ++i)
23 printf ("%lf;", atlagtomb [i ]);
24 putchar (’\n’);
25 r e t u r n 0;
26 }


------

1 /* Csúszóátlag számítása fix méretű tömbön.
2 *
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8
9#d e f i n e N 15
10
11 i n t main () {
12 d o u bl e ertektomb [N], atlagtomb [N - 2];
13 f o r ( i n t i = 0; i < N; ++i) {
14 printf ("?␣"); scanf ("%lf", &( ertektomb [i ]));
15 }
16 /* TESZT */ f o r ( i n t i = 0; i < N; ++i)
17 /* TESZT */ printf ("%lf;", ertektomb [i ]);
18 /* TESZT */ printf ("\n");
19 r e t u r n 0;
20 }


--------
1 /* Adott egy ( linuxos ) útvonal leírás, nyerjük ki belőle
2 * a fájl nev ét (az útvonal nélkül).
3 *
4 * 
5 * 
6 */
7
8#i n c l u d e < stdio .h >
9
10#d e f i n e N 32
11
12 v o i d basename ( c h a r path [] , c h a r base []) {
13 i n t i = 0, lastsep = -1;
14 f o r (; path [i] != 0; ++i) {
15 i f ( path [i] == ’/’) {
16 lastsep = i;
17 }
18 }
19 ++ lastsep ;
20 i = 0;
21 w h i l e ( path [ lastsep ] != 0) {
22 base [i ++] = path [ lastsep ++];
23 }
24 base [i] = 0;
25 }

----------
Tér
1 /* A háromdimenziós tér pontjai közül keress ük meg a két legtávolabbit !
2 *Adott a térben, melyik a két legtávolabbi pont?
3 * 
4 * 
5 */
6
7#i n c l u d e < stdio .h >
8#i n c l u d e < stdlib .h >
9#i n c l u d e < math .h >
10
11 t y p e d e f s t r u c t { /* A tér egy há romdimenzi ós pontj á nak tí pusa */
12 d o u bl e x, y, z;
13 } pont_t ;
14
15 pont_t read_pont () {
16 pont_t p = {0.0 , 0.0 , 0.0};
17 scanf ("%lf␣%lf␣%lf", &p.x, &p.y, &p.z);
18 r e t u r n p;
19 }
20
21 v o i d write_pont ( pont_t p) {
22 printf ("(%lf ,␣%lf ,␣%lf)", p.x, p.y, p.z);
23 }
24
25 d o u bl e tav ( pont_t p, pont_t q) {
26 r e t u r n sqrt ((p.x - q.x) * (p.x - q.x) +
27 (p.y - q.y) * (p.y - q.y) +
28 (p.z - q.z) * (p.z - q.z ));
29 }
31 v o i d legtavolabb ( i n t n, pont_t p[] , pont_t *egyik , pont_t * masik ) {
32 d o u bl e max = -1.0;
33 f o r ( i n t i = 0; i < n - 1; ++i) {
34 f o r ( i n t j = i + 1; j < n; ++j) {
35 i f ( tav (p[i] , p[j]) > max ) {
36 max = tav(p[i], p[j ]);
37 * egyik = p[i];
38 * masik = p[j];
39 }
40 }
41 }
42 }
43
44 i n t main () {
45 i n t darab , i;
46 pont_t *tomb , p1 , p2;
47 scanf ("%d", & darab );
48 tomb = malloc ( darab * s i z e o f (* tomb ));
49 f o r (i = 0; i < darab ; ++i) {
50 tomb [i] = read_pont ();
51 }
52 legtavolabb (darab , tomb , &p1 , &p2 );
53 printf ("A␣ legt á volabbi ␣ pontok :\n");
54 printf ("␣␣␣␣␣␣"); write_pont (p1 ); printf ("␣és\n");
55 printf ("␣␣␣␣␣␣"); write_pont (p2 ); putchar (’\n’);
56 free ( tomb );
57 r e t u r n 0;
58 }



Nincsenek megjegyzések:

Megjegyzés küldése