Napíšte program v jazyku C, ktorý bude simulovať proces pristávania sondy na zvolenom vesmírnom objekte (napr. Mesiac). Budeme používať zjednodušený fyzikálny model a kvôli jednoduchosti/prehľadnosti budeme zámerne viaceré fyzikálne zákonistosti zanedbávať. Váš program bude fungovať ako konzolová/terminálová aplikácia.
Cieľom zadania je formátovaný výpis informácií do konzoly, ktoré popisujú simuláciu pristávania sondy pri dodaných vstupných parametroch. Váš program vypisuje údaje na štandardný výstup v presnom formáte podľa pokynov zadania. Hlavná inšpirácia pri tvorbe zadania bola čerpaná z dokumentu Simulating a Lunar Landing od autorov z Australian Space Academy. Odporúčame si túto literatúru preštudovať, nakoľko vám určite pomôže pochopiť problémy a vyriešiť otázky súvisiace so zadaním.
Najprv trochu teórie potrebnej na vyriešenie hlavného problému. Na proces pristávania sondy na zvolenom vesmírnom objekte (napr. Mesiac) sa môžeme pozerať ako na proces, ktorý pozostáva z 2 hlavných fáz:
Na začiatku simulácie máme sondu, ktorej cieľom je pristátie na povrchu vesmírneho objektu. Sonda sa na začiatku simulácie nachádza vo výške $ H $ nad povrchom a padá voľným pádom na povrch.
Na začiatku tejto fázy má sonda počiatočnú rýchlosť $ v_0 $ (v zadaní budeme počítať s hodnotou $ v_0 $ = 0 m/s). Zrýchlenie voľného pádu sondy je vyjadrené pomocou parametra $ g $ (je to gravitačné zrýchlenie vesmírneho objektu, na ktorý sonda pristáva). V tejto fáze sa bude zvyšovať rýchlosť padajúcej sondy v zápornom smere (ak by sa sonda vzďaľovala od povrchu, jej rýchlosť by bola kladná) a výška sondy nad povrchom sa bude postupne zmenšovať.
Počas voľného pádu sondy nastane moment, kedy sonda musí zapnúť svoj motor, aby dokázala jeho ťahom vykompenzovať svoj voľný pád a bezpečne tak pristáť. Tento moment prichádza v čase, keď sonda prekročí kritickú výšku $ d_e $ nad povrchom. Dĺžka trajektórie voľného pádu sondy od počiatočnej výšky $ H $ až do úrovne $ d_e $ nad povrchom sa bude označovať ako $ d_f $.
Pre bezpečné pristátie je kľúčové vypočítať optimálnu hodnotu $ d_f $. Urobíme tak pomocou vzťahu (1).
\begin{equation} d_f = \frac{(A-g) \cdot H}{A} \end{equation}Parameter $ A $ vo vzťahu (1) predstavuje zrýchlenie sondy po zapnutí jej motora a vypočítame ho vzťahom (2). Zrýchlenie $ A $ má opačný smer ako zrýchlenie $ g $. Parameter $ T $ (z angl. thrust) je ťah motora (v N) a $ m $ je hmotnosť sondy (v kg). Budeme predpokladať, že $ T $ je počas celej simulácie konštantné.
\begin{equation} A = \frac{T}{m} \end{equation}Celková dráha, ktorú sonda prejde od začiatku simulácie až po pristátie sa teda skladá z dvoch častí, čo je vyjadrené vzťahom (3).
\begin{equation} d_f + d_e = H \end{equation}Od momentu kedy sonda svojim klesaním prekoná kritickú výšku $ d_e $ začína 2. fáza - riadené pristávanie.
Pri dosiahnutí kritickej výšky $ d_e $ nad povrchom, musí sonda zapnúť svoj motor a zabrzdiť tak strmý pád. Túto fázu označujeme ako motorom riadený pristávací manéver. Je dôležité si uvedomiť, že ak by sonda nezapla svoj motor v momente prekonania výšky $ d_e $, nestihne spomaliť na bezpečnú rýchlosť a havaruje.
Sonda drží svoj motor zapnutý až do momentu, kedy jej aktuálna zostupová rýchlosť nebude v intervale $ [v_{soft},0) $, čo považujeme za bezpečnú rýchlosť klesania, ktorá zaručí bezpečné pristátie. V realite by parameter $ v_{soft} $ mal byť dostatočne malé záporné číslo, aby kontakt sondy s povrchom nebol príliš silný a nespôsobil jej haváriu. Avšak $ v_{soft} $ vstúpi do vášho programu ako parameter zadávaný z klávesnice.
Od momentu dosiahnutia bezpečnej rýchlosti, jemne riadime pristávanie pomocou vhodného zapínania/vypínania motora tak, aby sme stále udržovali bezpečnú rýchlosť v intervale $ [v_{soft},0) $ (vyhneme sa tak havárii alebo nechcenému vzďaľovaniu sa sondy od povrchu). Toto jemné riadenie zostupu vykonávame až po kontakt s povrchom. Simulácia končí v momente pristátia.
Na obrázku 3 vidíme časový vývoj niektorých sledovaných veličín počas pristávania sondy. Môžeme si všimnúť ako sa rýchlosť sondy (fialová krivka), ktorá vo fáze voľného pádu nadobudla výrazne zápornú hodnotu, vplyvom riadeného pristávania pomaly približuje k hodnote 0. Rovnako vidíme ako sa v čase zmenšuje výška sondy nad povrchom (zelená krivka) a ako sa vo fáze tesne pred pristátím striedavo zapína/vypína motor, aby reguloval bezpečnú zostupovú rýchlosť (červená krivka).
Zoznam vstupných parametrov programu, ktoré sú zadané z klávesnice:
$ m $ | hmotnosť sondy (kg) |
$ T $ | ťah motora (N) |
$ H $ | počiatočná výška sondy nad povrchom vesmírneho objektu/planéty (m) |
$ g $ | gravitačné zrýchlenie vesmírneho objektu/planéty (m/$ s^2 $) |
$ v_{soft} $ | maximálna povolená rýchlosť sondy v okamihu pristávania potrebná na bezpečné pristátie (m/s) |
$ \Delta t $ | časový krok simulácie, v každom kroku sa vypočíta a zobrazí stav simulácie (s) |
Pre každú simuláciu platí $v_{0}=0$. Pre všetky parametre použite dátový typ double
,
aby ste mohli pracovať s desatinnou presnosťou vyžadovanou vo výpisoch simulácie. Všetky vstupné parametre sa
musia načítať zo štandardného vstupu (z klávesnice) v rovnakom poradí ako sú uvedené v zozname vyššie.
Cieľom zadania je formátovaný výpis požadovaných údajov, ktoré sa týkajú procesu pristávania sondy. Váš program vypisuje údaje v 4 krokoch.
Formát výpisu:
m=17110.000
T=90000.000
H=126.000
g=4.000
vsoft=-5.000
dt=0.040
Musíte dodržať stanovený formát. Poradie
parametrov sa nesmie
vo výpise meniť. Parametre sú oddelené novým riadkom. Každé číslo je vypísané na 3 desatinné miesta.
Výpis neobsahuje žiadne medzery. Parametre sú udané a vypísané v ich základných jednotkách. Výpis dt
predstavuje parameter $ \Delta t $.
Formát výpisu:
de=95.816
Musíte dodržať stanovený formát. Hodnotu $ d_e $ musíte najprv vypočítať zo vstupných parametrov. Výpis neobsahuje medzery a je ukončený novým riadkom. Hodnota je zobrazená na 3 desatinné miesta.
Toto je najdôležitejšia časť zadania, ohodnotená najväčším počtom bodov. Výpis simulácie prebieha od počiatočnej výšky $ H $ až po kontakt sondy s povrchom. Časový krok pre výpis simulácie je daný parametrom $ \Delta t $. Motor sondy je na začiatku simulácie vypnutý (aj v prípade, keď by sonda začínala v počiatočnej výške, pre ktorú platí $H < d_e$, pretože počiatočná rýchlosť sondy je 0 m/s).
V každej iterácii simulácie sa vykonajú kroky v tomto poradí:
1. Výpočet stavu motora (môže byť 0/1). Tento stav bude platný počas celého trvania časového úseku $ \Delta t $. Stav motora sa určí podľa aktuálnej výšky sondy a pri zohľadnení $ v_{soft}$, t.j. ak pre aktuálnu výšku sondy platí $ h \leq d_e $, tak sonda zapne svoj motor ak platí $ v \lt v_{soft}$.
2. Vypíše sa štvorica $ \{s,h,t,v\} $ podľa stanoveného formátu.
3. Výpočet novej výšky $ h $ , t.j. výšky na konci časového úseku $ \Delta t $, podľa vzorca (4). Parameter $ a $ predstavuje zrýchlenie sondy.
\begin{equation} h_{new} = h + v \cdot \Delta t + \frac{a \cdot \Delta t^2}{2} \end{equation}
4. Výpočet novej rýchlosti $ v $ , t.j. rýchlosti na konci časového úseku $ \Delta t $, podľa vzorca (5). Parameter $ a $ predstavuje zrýchlenie sondy.
\begin{equation} v_{new} = v + a \cdot \Delta t \end{equation}
5. Aktualizácia uplynutého času simulácie o časový úsek $ \Delta t $.
Pre uvedené vzťahy (4) a (5) je potrebné zaviesť nasledovnú substitúciu:
Formát výpisu:
s=0 h=0126.000 t=0.000 v=0.000
s=0 h=0125.997 t=0.040 v=-0.160
s=0 h=0125.987 t=0.080 v=-0.320
s=0 h=0125.971 t=0.120 v=-0.480
s=0 h=0125.949 t=0.160 v=-0.640
s=0 h=0125.920 t=0.200 v=-0.800
s=0 h=0125.885 t=0.240 v=-0.960
s=0 h=0125.843 t=0.280 v=-1.120
s=0 h=0125.795 t=0.320 v=-1.280
s=0 h=0125.741 t=0.360 v=-1.440
s=0 h=0125.680 t=0.400 v=-1.600
s=0 h=0125.613 t=0.440 v=-1.760
s=0 h=0125.539 t=0.480 v=-1.920
s=0 h=0125.459 t=0.520 v=-2.080
s=0 h=0125.373 t=0.560 v=-2.240
s=0 h=0125.280 t=0.600 v=-2.400
s=0 h=0125.181 t=0.640 v=-2.560
s=0 h=0125.075 t=0.680 v=-2.720
s=0 h=0124.963 t=0.720 v=-2.880
s=0 h=0124.845 t=0.760 v=-3.040
s=0 h=0124.720 t=0.800 v=-3.200
s=0 h=0124.589 t=0.840 v=-3.360
s=0 h=0124.451 t=0.880 v=-3.520
s=0 h=0124.307 t=0.920 v=-3.680
s=0 h=0124.157 t=0.960 v=-3.840
s=0 h=0124.000 t=1.000 v=-4.000
s=0 h=0123.837 t=1.040 v=-4.160
s=0 h=0123.667 t=1.080 v=-4.320
s=0 h=0123.491 t=1.120 v=-4.480
s=0 h=0123.309 t=1.160 v=-4.640
s=0 h=0123.120 t=1.200 v=-4.800
s=0 h=0122.925 t=1.240 v=-4.960
s=0 h=0122.723 t=1.280 v=-5.120
s=0 h=0122.515 t=1.320 v=-5.280
s=0 h=0122.301 t=1.360 v=-5.440
s=0 h=0122.080 t=1.400 v=-5.600
s=0 h=0121.853 t=1.440 v=-5.760
s=0 h=0121.619 t=1.480 v=-5.920
s=0 h=0121.379 t=1.520 v=-6.080
s=0 h=0121.133 t=1.560 v=-6.240
s=0 h=0120.880 t=1.600 v=-6.400
s=0 h=0120.621 t=1.640 v=-6.560
s=0 h=0120.355 t=1.680 v=-6.720
s=0 h=0120.083 t=1.720 v=-6.880
s=0 h=0119.805 t=1.760 v=-7.040
s=0 h=0119.520 t=1.800 v=-7.200
s=0 h=0119.229 t=1.840 v=-7.360
s=0 h=0118.931 t=1.880 v=-7.520
s=0 h=0118.627 t=1.920 v=-7.680
s=0 h=0118.317 t=1.960 v=-7.840
s=0 h=0118.000 t=2.000 v=-8.000
s=0 h=0117.677 t=2.040 v=-8.160
s=0 h=0117.347 t=2.080 v=-8.320
s=0 h=0117.011 t=2.120 v=-8.480
s=0 h=0116.669 t=2.160 v=-8.640
s=0 h=0116.320 t=2.200 v=-8.800
s=0 h=0115.965 t=2.240 v=-8.960
s=0 h=0115.603 t=2.280 v=-9.120
s=0 h=0115.235 t=2.320 v=-9.280
s=0 h=0114.861 t=2.360 v=-9.440
s=0 h=0114.480 t=2.400 v=-9.600
s=0 h=0114.093 t=2.440 v=-9.760
s=0 h=0113.699 t=2.480 v=-9.920
s=0 h=0113.299 t=2.520 v=-10.080
s=0 h=0112.893 t=2.560 v=-10.240
s=0 h=0112.480 t=2.600 v=-10.400
s=0 h=0112.061 t=2.640 v=-10.560
s=0 h=0111.635 t=2.680 v=-10.720
s=0 h=0111.203 t=2.720 v=-10.880
s=0 h=0110.765 t=2.760 v=-11.040
s=0 h=0110.320 t=2.800 v=-11.200
s=0 h=0109.869 t=2.840 v=-11.360
s=0 h=0109.411 t=2.880 v=-11.520
s=0 h=0108.947 t=2.920 v=-11.680
s=0 h=0108.477 t=2.960 v=-11.840
s=0 h=0108.000 t=3.000 v=-12.000
s=0 h=0107.517 t=3.040 v=-12.160
s=0 h=0107.027 t=3.080 v=-12.320
s=0 h=0106.531 t=3.120 v=-12.480
s=0 h=0106.029 t=3.160 v=-12.640
s=0 h=0105.520 t=3.200 v=-12.800
s=0 h=0105.005 t=3.240 v=-12.960
s=0 h=0104.483 t=3.280 v=-13.120
s=0 h=0103.955 t=3.320 v=-13.280
s=0 h=0103.421 t=3.360 v=-13.440
s=0 h=0102.880 t=3.400 v=-13.600
s=0 h=0102.333 t=3.440 v=-13.760
s=0 h=0101.779 t=3.480 v=-13.920
s=0 h=0101.219 t=3.520 v=-14.080
s=0 h=0100.653 t=3.560 v=-14.240
s=0 h=0100.080 t=3.600 v=-14.400
s=0 h=0099.501 t=3.640 v=-14.560
s=0 h=0098.915 t=3.680 v=-14.720
s=0 h=0098.323 t=3.720 v=-14.880
s=0 h=0097.725 t=3.760 v=-15.040
s=0 h=0097.120 t=3.800 v=-15.200
s=0 h=0096.509 t=3.840 v=-15.360
s=0 h=0095.891 t=3.880 v=-15.520
s=1 h=0095.267 t=3.920 v=-15.680
s=1 h=0094.641 t=3.960 v=-15.630
s=1 h=0094.017 t=4.000 v=-15.579
s=1 h=0093.395 t=4.040 v=-15.529
s=1 h=0092.775 t=4.080 v=-15.478
s=1 h=0092.156 t=4.120 v=-15.428
s=1 h=0091.540 t=4.160 v=-15.378
s=1 h=0090.926 t=4.200 v=-15.327
s=1 h=0090.314 t=4.240 v=-15.277
s=1 h=0089.704 t=4.280 v=-15.226
s=1 h=0089.096 t=4.320 v=-15.176
s=1 h=0088.490 t=4.360 v=-15.126
s=1 h=0087.886 t=4.400 v=-15.075
s=1 h=0087.284 t=4.440 v=-15.025
s=1 h=0086.684 t=4.480 v=-14.974
s=1 h=0086.086 t=4.520 v=-14.924
s=1 h=0085.490 t=4.560 v=-14.874
s=1 h=0084.896 t=4.600 v=-14.823
s=1 h=0084.304 t=4.640 v=-14.773
s=1 h=0083.714 t=4.680 v=-14.722
s=1 h=0083.126 t=4.720 v=-14.672
s=1 h=0082.541 t=4.760 v=-14.622
s=1 h=0081.957 t=4.800 v=-14.571
s=1 h=0081.375 t=4.840 v=-14.521
s=1 h=0080.795 t=4.880 v=-14.470
s=1 h=0080.217 t=4.920 v=-14.420
s=1 h=0079.641 t=4.960 v=-14.370
s=1 h=0079.068 t=5.000 v=-14.319
s=1 h=0078.496 t=5.040 v=-14.269
s=1 h=0077.926 t=5.080 v=-14.218
s=1 h=0077.358 t=5.120 v=-14.168
s=1 h=0076.793 t=5.160 v=-14.117
s=1 h=0076.229 t=5.200 v=-14.067
s=1 h=0075.667 t=5.240 v=-14.017
s=1 h=0075.108 t=5.280 v=-13.966
s=1 h=0074.550 t=5.320 v=-13.916
s=1 h=0073.994 t=5.360 v=-13.865
s=1 h=0073.441 t=5.400 v=-13.815
s=1 h=0072.889 t=5.440 v=-13.765
s=1 h=0072.340 t=5.480 v=-13.714
s=1 h=0071.792 t=5.520 v=-13.664
s=1 h=0071.247 t=5.560 v=-13.613
s=1 h=0070.703 t=5.600 v=-13.563
s=1 h=0070.162 t=5.640 v=-13.513
s=1 h=0069.622 t=5.680 v=-13.462
s=1 h=0069.085 t=5.720 v=-13.412
s=1 h=0068.549 t=5.760 v=-13.361
s=1 h=0068.016 t=5.800 v=-13.311
s=1 h=0067.484 t=5.840 v=-13.261
s=1 h=0066.955 t=5.880 v=-13.210
s=1 h=0066.427 t=5.920 v=-13.160
s=1 h=0065.902 t=5.960 v=-13.109
s=1 h=0065.379 t=6.000 v=-13.059
s=1 h=0064.857 t=6.040 v=-13.009
s=1 h=0064.338 t=6.080 v=-12.958
s=1 h=0063.821 t=6.120 v=-12.908
s=1 h=0063.305 t=6.160 v=-12.857
s=1 h=0062.792 t=6.200 v=-12.807
s=1 h=0062.281 t=6.240 v=-12.757
s=1 h=0061.771 t=6.280 v=-12.706
s=1 h=0061.264 t=6.320 v=-12.656
s=1 h=0060.759 t=6.360 v=-12.605
s=1 h=0060.256 t=6.400 v=-12.555
s=1 h=0059.755 t=6.440 v=-12.505
s=1 h=0059.255 t=6.480 v=-12.454
s=1 h=0058.758 t=6.520 v=-12.404
s=1 h=0058.263 t=6.560 v=-12.353
s=1 h=0057.770 t=6.600 v=-12.303
s=1 h=0057.279 t=6.640 v=-12.253
s=1 h=0056.790 t=6.680 v=-12.202
s=1 h=0056.303 t=6.720 v=-12.152
s=1 h=0055.818 t=6.760 v=-12.101
s=1 h=0055.335 t=6.800 v=-12.051
s=1 h=0054.854 t=6.840 v=-12.001
s=1 h=0054.375 t=6.880 v=-11.950
s=1 h=0053.898 t=6.920 v=-11.900
s=1 h=0053.423 t=6.960 v=-11.849
s=1 h=0052.950 t=7.000 v=-11.799
s=1 h=0052.479 t=7.040 v=-11.749
s=1 h=0052.010 t=7.080 v=-11.698
s=1 h=0051.543 t=7.120 v=-11.648
s=1 h=0051.078 t=7.160 v=-11.597
s=1 h=0050.615 t=7.200 v=-11.547
s=1 h=0050.154 t=7.240 v=-11.497
s=1 h=0049.695 t=7.280 v=-11.446
s=1 h=0049.238 t=7.320 v=-11.396
s=1 h=0048.784 t=7.360 v=-11.345
s=1 h=0048.331 t=7.400 v=-11.295
s=1 h=0047.880 t=7.440 v=-11.245
s=1 h=0047.431 t=7.480 v=-11.194
s=1 h=0046.985 t=7.520 v=-11.144
s=1 h=0046.540 t=7.560 v=-11.093
s=1 h=0046.097 t=7.600 v=-11.043
s=1 h=0045.656 t=7.640 v=-10.992
s=1 h=0045.218 t=7.680 v=-10.942
s=1 h=0044.781 t=7.720 v=-10.892
s=1 h=0044.346 t=7.760 v=-10.841
s=1 h=0043.914 t=7.800 v=-10.791
s=1 h=0043.483 t=7.840 v=-10.740
s=1 h=0043.054 t=7.880 v=-10.690
s=1 h=0042.628 t=7.920 v=-10.640
s=1 h=0042.203 t=7.960 v=-10.589
s=1 h=0041.781 t=8.000 v=-10.539
s=1 h=0041.360 t=8.040 v=-10.488
s=1 h=0040.942 t=8.080 v=-10.438
s=1 h=0040.525 t=8.120 v=-10.388
s=1 h=0040.111 t=8.160 v=-10.337
s=1 h=0039.698 t=8.200 v=-10.287
s=1 h=0039.288 t=8.240 v=-10.236
s=1 h=0038.879 t=8.280 v=-10.186
s=1 h=0038.473 t=8.320 v=-10.136
s=1 h=0038.068 t=8.360 v=-10.085
s=1 h=0037.666 t=8.400 v=-10.035
s=1 h=0037.266 t=8.440 v=-9.984
s=1 h=0036.867 t=8.480 v=-9.934
s=1 h=0036.471 t=8.520 v=-9.884
s=1 h=0036.077 t=8.560 v=-9.833
s=1 h=0035.684 t=8.600 v=-9.783
s=1 h=0035.294 t=8.640 v=-9.732
s=1 h=0034.906 t=8.680 v=-9.682
s=1 h=0034.519 t=8.720 v=-9.632
s=1 h=0034.135 t=8.760 v=-9.581
s=1 h=0033.753 t=8.800 v=-9.531
s=1 h=0033.373 t=8.840 v=-9.480
s=1 h=0032.994 t=8.880 v=-9.430
s=1 h=0032.618 t=8.920 v=-9.380
s=1 h=0032.244 t=8.960 v=-9.329
s=1 h=0031.872 t=9.000 v=-9.279
s=1 h=0031.502 t=9.040 v=-9.228
s=1 h=0031.134 t=9.080 v=-9.178
s=1 h=0030.768 t=9.120 v=-9.128
s=1 h=0030.403 t=9.160 v=-9.077
s=1 h=0030.041 t=9.200 v=-9.027
s=1 h=0029.681 t=9.240 v=-8.976
s=1 h=0029.323 t=9.280 v=-8.926
s=1 h=0028.967 t=9.320 v=-8.876
s=1 h=0028.613 t=9.360 v=-8.825
s=1 h=0028.261 t=9.400 v=-8.775
s=1 h=0027.911 t=9.440 v=-8.724
s=1 h=0027.563 t=9.480 v=-8.674
s=1 h=0027.217 t=9.520 v=-8.624
s=1 h=0026.873 t=9.560 v=-8.573
s=1 h=0026.531 t=9.600 v=-8.523
s=1 h=0026.192 t=9.640 v=-8.472
s=1 h=0025.854 t=9.680 v=-8.422
s=1 h=0025.518 t=9.720 v=-8.372
s=1 h=0025.184 t=9.760 v=-8.321
s=1 h=0024.852 t=9.800 v=-8.271
s=1 h=0024.522 t=9.840 v=-8.220
s=1 h=0024.194 t=9.880 v=-8.170
s=1 h=0023.869 t=9.920 v=-8.120
s=1 h=0023.545 t=9.960 v=-8.069
s=1 h=0023.223 t=10.000 v=-8.019
s=1 h=0022.903 t=10.040 v=-7.968
s=1 h=0022.586 t=10.080 v=-7.918
s=1 h=0022.270 t=10.120 v=-7.867
s=1 h=0021.956 t=10.160 v=-7.817
s=1 h=0021.645 t=10.200 v=-7.767
s=1 h=0021.335 t=10.240 v=-7.716
s=1 h=0021.027 t=10.280 v=-7.666
s=1 h=0020.722 t=10.320 v=-7.615
s=1 h=0020.418 t=10.360 v=-7.565
s=1 h=0020.116 t=10.400 v=-7.515
s=1 h=0019.817 t=10.440 v=-7.464
s=1 h=0019.519 t=10.480 v=-7.414
s=1 h=0019.224 t=10.520 v=-7.363
s=1 h=0018.930 t=10.560 v=-7.313
s=1 h=0018.639 t=10.600 v=-7.263
s=1 h=0018.349 t=10.640 v=-7.212
s=1 h=0018.062 t=10.680 v=-7.162
s=1 h=0017.776 t=10.720 v=-7.111
s=1 h=0017.493 t=10.760 v=-7.061
s=1 h=0017.211 t=10.800 v=-7.011
s=1 h=0016.932 t=10.840 v=-6.960
s=1 h=0016.655 t=10.880 v=-6.910
s=1 h=0016.379 t=10.920 v=-6.859
s=1 h=0016.106 t=10.960 v=-6.809
s=1 h=0015.834 t=11.000 v=-6.759
s=1 h=0015.565 t=11.040 v=-6.708
s=1 h=0015.298 t=11.080 v=-6.658
s=1 h=0015.033 t=11.120 v=-6.607
s=1 h=0014.769 t=11.160 v=-6.557
s=1 h=0014.508 t=11.200 v=-6.507
s=1 h=0014.249 t=11.240 v=-6.456
s=1 h=0013.991 t=11.280 v=-6.406
s=1 h=0013.736 t=11.320 v=-6.355
s=1 h=0013.483 t=11.360 v=-6.305
s=1 h=0013.232 t=11.400 v=-6.255
s=1 h=0012.983 t=11.440 v=-6.204
s=1 h=0012.736 t=11.480 v=-6.154
s=1 h=0012.490 t=11.520 v=-6.103
s=1 h=0012.247 t=11.560 v=-6.053
s=1 h=0012.006 t=11.600 v=-6.003
s=1 h=0011.767 t=11.640 v=-5.952
s=1 h=0011.530 t=11.680 v=-5.902
s=1 h=0011.295 t=11.720 v=-5.851
s=1 h=0011.062 t=11.760 v=-5.801
s=1 h=0010.831 t=11.800 v=-5.751
s=1 h=0010.602 t=11.840 v=-5.700
s=1 h=0010.375 t=11.880 v=-5.650
s=1 h=0010.150 t=11.920 v=-5.599
s=1 h=0009.927 t=11.960 v=-5.549
s=1 h=0009.706 t=12.000 v=-5.499
s=1 h=0009.487 t=12.040 v=-5.448
s=1 h=0009.270 t=12.080 v=-5.398
s=1 h=0009.055 t=12.120 v=-5.347
s=1 h=0008.842 t=12.160 v=-5.297
s=1 h=0008.631 t=12.200 v=-5.247
s=1 h=0008.423 t=12.240 v=-5.196
s=1 h=0008.216 t=12.280 v=-5.146
s=1 h=0008.011 t=12.320 v=-5.095
s=1 h=0007.808 t=12.360 v=-5.045
s=0 h=0007.607 t=12.400 v=-4.995
s=1 h=0007.404 t=12.440 v=-5.155
s=1 h=0007.199 t=12.480 v=-5.104
s=1 h=0006.996 t=12.520 v=-5.054
s=1 h=0006.795 t=12.560 v=-5.003
s=0 h=0006.596 t=12.600 v=-4.953
s=1 h=0006.394 t=12.640 v=-5.113
s=1 h=0006.191 t=12.680 v=-5.062
s=1 h=0005.989 t=12.720 v=-5.012
s=0 h=0005.790 t=12.760 v=-4.962
s=1 h=0005.588 t=12.800 v=-5.122
s=1 h=0005.384 t=12.840 v=-5.071
s=1 h=0005.183 t=12.880 v=-5.021
s=0 h=0004.983 t=12.920 v=-4.970
s=1 h=0004.781 t=12.960 v=-5.130
s=1 h=0004.577 t=13.000 v=-5.080
s=1 h=0004.374 t=13.040 v=-5.030
s=0 h=0004.174 t=13.080 v=-4.979
s=1 h=0003.972 t=13.120 v=-5.139
s=1 h=0003.767 t=13.160 v=-5.089
s=1 h=0003.565 t=13.200 v=-5.038
s=0 h=0003.364 t=13.240 v=-4.988
s=1 h=0003.161 t=13.280 v=-5.148
s=1 h=0002.956 t=13.320 v=-5.098
s=1 h=0002.754 t=13.360 v=-5.047
s=0 h=0002.553 t=13.400 v=-4.997
s=1 h=0002.350 t=13.440 v=-5.157
s=1 h=0002.144 t=13.480 v=-5.106
s=1 h=0001.941 t=13.520 v=-5.056
s=1 h=0001.740 t=13.560 v=-5.006
s=0 h=0001.541 t=13.600 v=-4.955
s=1 h=0001.339 t=13.640 v=-5.115
s=1 h=0001.136 t=13.680 v=-5.065
s=1 h=0000.934 t=13.720 v=-5.014
s=0 h=0000.735 t=13.760 v=-4.964
s=1 h=0000.533 t=13.800 v=-5.124
s=1 h=0000.329 t=13.840 v=-5.074
s=1 h=0000.127 t=13.880 v=-5.023
Posledný riadok simulácie pristávania, predstavuje riadok, pre ktorý ako posledný platí $ h > 0$.
Musíte dodržať stanovený formát. Parametre sú od seba oddelené 1 medzerou (okrem toho vo výpise nie sú iné medzery). Všetky parametre sú vyjadrené v základných jednotkách.
.
a 3 miesta pre desatinnú časť). Celá časť je zarovnaná doprava a prázdne miesta v nej sú doplnené znakom
0
.
---Landed---
h =-000.073
t = 13.920
v = -4.973
total= 241
max = 212
Skladá sa zo 4 častí:
---Landed---
=
je rezervované miesto s fixnou šírkou 5 znakov a text je
zarovnaný doľava.
Číselná hodnota nasledujúca po znaku =
má šírku 8 miest, z toho 4 miesta
sú vyhradené pre celú časť (vrátane znamienka -
), 1 miesto pre desatinnú
bodku a 3 miesta pre desatinnú časť. Číselná hodnota je zarovnaná doprava.
Hodnota $h$ má celú časť doplnenú znakom 0
.
h =-000.073
t = 13.920
v = -4.973
=
je rezervované miesto s fixnou šírkou 5 znakov
a text je zarovnaný doľava. Číselná hodnota nasledujúca po znaku =
má
šírku 4 miesta a je zarovnaná doprava.
total= 241
=
je rezervované miesto s fixnou šírkou 5 znakov
a text je zarovnaný doľava. Číselná hodnota nasledujúca po znaku =
má
šírku 4 miesta a je zarovnaná doprava.
max = 212
Na funkčnú implementáciu celej simulácie vám postačí zopár riadkov kódu. To samozrejme platí, v prípade, že si váš zdrojový kód dobre navrhnete. Implementácia zadania je kompletne vo vašej réžii. Avšak rovnako ako sonda, aj vy potrebujete navigáciu a zopár rád, ktoré vám pomôžu začať s implementáciou a dobre si rozdeliť zdrojový kód do logických celkov. Odporúčame držať sa dole uvedenej kostry riešenia, aby ste získali výstupy totožné so správnymi výstupmi.
// KOSTRA RIESENIA
// Priestor pre definicie vasich pomocnych funkcii.
int main() {
// [1] Nacitanie a vypis vstupnych parametrov
// v stanovenom formate.
// [2] Vypocet a vypis kritickej vysky 'de'
// v stanovenom formate.
// [3] Cyklus pre simulaciu pristavania sondy,
// v ktorom sa budu vypisovat riadky v
// stanovenom formate a s casovym krokom 'dt'.
while( /*...pokial je sonda nad povrchom ...*/ ){
// Jedna iteracia cyklu predstavuje casovy usek 'dt'.
// Na zaciatku useku 'dt' sa zapne alebo vypne motor sondy
// a ten je pocas trvania celeho useku 'dt' v tomto stave
// az do dalsej aktualizacie, ktora sa odohra v dalsej
// iteracii simulacneho cyklu.
// POSTUPNOST KROKOV, ktore treba vykonat v iteracii cyklu:
// [3.a] Vypocet stavu motora 's' na zaciatku casoveho useku 'dt'.
// Stav motora moze byt 0/1 (vypnuty/zapnuty).
// Vypocet 's' zavisi od aktualnej 'h' a treba zohladnit bezpecnu
// pristavaciu rychlost 'vsoft'.
// [3.b] Formatovany vypis stvorice {'s','h','t','v'} (vid pokyny vyssie).
// 's' - stav motora, ktory bol vypocitany v kroku [3.a].
// 'h' - aktualna vyska sondy (na zaciatku casoveho useku 'dt')
// 't' - uplynuty cas simulacie (na zaciatku casoveho useku 'dt')
// 'v' - aktualna rychlost sondy (na zaciatku casoveho useku 'dt')
// [3.c] Vypocet novej vysky 'h' (t.j. vysky na konci casoveho useku 'dt')
// podla vzorca (4).
// [3.d] Vypocet novej rychlosti 'v' (t.j. rychlosti na konci casoveho useku 'dt')
// podla vzorca (5).
// [3.e] Aktualizacia uplynuteho casu simulacie o casovy usek 'dt'.
// HINT: Na vypocet 's', 'h' a 'v' si napiste a zavolajte vlastne funkcie.
}
// [4] Zaverecny vypis.
return 0;
}
Uvedený príklad vám poslúži na porovnanie si vašich výstupov so správnym výstupom. Predpokladáme, že máme správne
vypracované zadanie uložené v súbore z1.c
.
Postup overenia funkčnosti programu v termináli:
z1
.
gcc z1.c -o z1 -Wall
./z1
diff file1.txt file2.txt
si viete overiť,
či sú obsahy dvoch zvolených súborov identické, resp. kde sa líšia. Môžete to využiť
pri overovaní výstupov vašich programov, ak si dáte v termináli presmerovať štandardný výstup
do textového súboru pomocou operátora >
.
m=10000.000
T=50000.000
H=254.000
g=4.100
vsoft=-3.900
dt=0.110
de=208.280
s=0 h=0254.000 t=0.000 v=0.000
s=0 h=0253.975 t=0.110 v=-0.451
s=0 h=0253.901 t=0.220 v=-0.902
s=0 h=0253.777 t=0.330 v=-1.353
s=0 h=0253.603 t=0.440 v=-1.804
s=0 h=0253.380 t=0.550 v=-2.255
s=0 h=0253.107 t=0.660 v=-2.706
s=0 h=0252.785 t=0.770 v=-3.157
s=0 h=0252.412 t=0.880 v=-3.608
s=0 h=0251.991 t=0.990 v=-4.059
s=0 h=0251.520 t=1.100 v=-4.510
s=0 h=0250.999 t=1.210 v=-4.961
s=0 h=0250.428 t=1.320 v=-5.412
s=0 h=0249.808 t=1.430 v=-5.863
s=0 h=0249.138 t=1.540 v=-6.314
s=0 h=0248.419 t=1.650 v=-6.765
s=0 h=0247.650 t=1.760 v=-7.216
s=0 h=0246.831 t=1.870 v=-7.667
s=0 h=0245.963 t=1.980 v=-8.118
s=0 h=0245.045 t=2.090 v=-8.569
s=0 h=0244.078 t=2.200 v=-9.020
s=0 h=0243.061 t=2.310 v=-9.471
s=0 h=0241.994 t=2.420 v=-9.922
s=0 h=0240.878 t=2.530 v=-10.373
s=0 h=0239.712 t=2.640 v=-10.824
s=0 h=0238.497 t=2.750 v=-11.275
s=0 h=0237.232 t=2.860 v=-11.726
s=0 h=0235.917 t=2.970 v=-12.177
s=0 h=0234.553 t=3.080 v=-12.628
s=0 h=0233.139 t=3.190 v=-13.079
s=0 h=0231.676 t=3.300 v=-13.530
s=0 h=0230.162 t=3.410 v=-13.981
s=0 h=0228.600 t=3.520 v=-14.432
s=0 h=0226.987 t=3.630 v=-14.883
s=0 h=0225.325 t=3.740 v=-15.334
s=0 h=0223.614 t=3.850 v=-15.785
s=0 h=0221.853 t=3.960 v=-16.236
s=0 h=0220.042 t=4.070 v=-16.687
s=0 h=0218.182 t=4.180 v=-17.138
s=0 h=0216.272 t=4.290 v=-17.589
s=0 h=0214.312 t=4.400 v=-18.040
s=0 h=0212.303 t=4.510 v=-18.491
s=0 h=0210.244 t=4.620 v=-18.942
s=1 h=0208.136 t=4.730 v=-19.393
s=1 h=0206.008 t=4.840 v=-19.294
s=1 h=0203.891 t=4.950 v=-19.195
s=1 h=0201.785 t=5.060 v=-19.096
s=1 h=0199.690 t=5.170 v=-18.997
s=1 h=0197.606 t=5.280 v=-18.898
s=1 h=0195.532 t=5.390 v=-18.799
s=1 h=0193.470 t=5.500 v=-18.700
s=1 h=0191.418 t=5.610 v=-18.601
s=1 h=0189.378 t=5.720 v=-18.502
s=1 h=0187.348 t=5.830 v=-18.403
s=1 h=0185.329 t=5.940 v=-18.304
s=1 h=0183.321 t=6.050 v=-18.205
s=1 h=0181.324 t=6.160 v=-18.106
s=1 h=0179.338 t=6.270 v=-18.007
s=1 h=0177.362 t=6.380 v=-17.908
s=1 h=0175.398 t=6.490 v=-17.809
s=1 h=0173.444 t=6.600 v=-17.710
s=1 h=0171.502 t=6.710 v=-17.611
s=1 h=0169.570 t=6.820 v=-17.512
s=1 h=0167.649 t=6.930 v=-17.413
s=1 h=0165.739 t=7.040 v=-17.314
s=1 h=0163.840 t=7.150 v=-17.215
s=1 h=0161.952 t=7.260 v=-17.116
s=1 h=0160.074 t=7.370 v=-17.017
s=1 h=0158.208 t=7.480 v=-16.918
s=1 h=0156.352 t=7.590 v=-16.819
s=1 h=0154.508 t=7.700 v=-16.720
s=1 h=0152.674 t=7.810 v=-16.621
s=1 h=0150.851 t=7.920 v=-16.522
s=1 h=0149.039 t=8.030 v=-16.423
s=1 h=0147.238 t=8.140 v=-16.324
s=1 h=0145.448 t=8.250 v=-16.225
s=1 h=0143.669 t=8.360 v=-16.126
s=1 h=0141.900 t=8.470 v=-16.027
s=1 h=0140.143 t=8.580 v=-15.928
s=1 h=0138.396 t=8.690 v=-15.829
s=1 h=0136.660 t=8.800 v=-15.730
s=1 h=0134.935 t=8.910 v=-15.631
s=1 h=0133.221 t=9.020 v=-15.532
s=1 h=0131.518 t=9.130 v=-15.433
s=1 h=0129.826 t=9.240 v=-15.334
s=1 h=0128.145 t=9.350 v=-15.235
s=1 h=0126.474 t=9.460 v=-15.136
s=1 h=0124.815 t=9.570 v=-15.037
s=1 h=0123.166 t=9.680 v=-14.938
s=1 h=0121.529 t=9.790 v=-14.839
s=1 h=0119.902 t=9.900 v=-14.740
s=1 h=0118.286 t=10.010 v=-14.641
s=1 h=0116.681 t=10.120 v=-14.542
s=1 h=0115.087 t=10.230 v=-14.443
s=1 h=0113.503 t=10.340 v=-14.344
s=1 h=0111.931 t=10.450 v=-14.245
s=1 h=0110.369 t=10.560 v=-14.146
s=1 h=0108.819 t=10.670 v=-14.047
s=1 h=0107.279 t=10.780 v=-13.948
s=1 h=0105.750 t=10.890 v=-13.849
s=1 h=0104.232 t=11.000 v=-13.750
s=1 h=0102.725 t=11.110 v=-13.651
s=1 h=0101.229 t=11.220 v=-13.552
s=1 h=0099.744 t=11.330 v=-13.453
s=1 h=0098.269 t=11.440 v=-13.354
s=1 h=0096.806 t=11.550 v=-13.255
s=1 h=0095.353 t=11.660 v=-13.156
s=1 h=0093.912 t=11.770 v=-13.057
s=1 h=0092.481 t=11.880 v=-12.958
s=1 h=0091.061 t=11.990 v=-12.859
s=1 h=0089.652 t=12.100 v=-12.760
s=1 h=0088.254 t=12.210 v=-12.661
s=1 h=0086.866 t=12.320 v=-12.562
s=1 h=0085.490 t=12.430 v=-12.463
s=1 h=0084.124 t=12.540 v=-12.364
s=1 h=0082.770 t=12.650 v=-12.265
s=1 h=0081.426 t=12.760 v=-12.166
s=1 h=0080.093 t=12.870 v=-12.067
s=1 h=0078.771 t=12.980 v=-11.968
s=1 h=0077.460 t=13.090 v=-11.869
s=1 h=0076.160 t=13.200 v=-11.770
s=1 h=0074.871 t=13.310 v=-11.671
s=1 h=0073.593 t=13.420 v=-11.572
s=1 h=0072.325 t=13.530 v=-11.473
s=1 h=0071.069 t=13.640 v=-11.374
s=1 h=0069.823 t=13.750 v=-11.275
s=1 h=0068.588 t=13.860 v=-11.176
s=1 h=0067.364 t=13.970 v=-11.077
s=1 h=0066.151 t=14.080 v=-10.978
s=1 h=0064.949 t=14.190 v=-10.879
s=1 h=0063.758 t=14.300 v=-10.780
s=1 h=0062.577 t=14.410 v=-10.681
s=1 h=0061.408 t=14.520 v=-10.582
s=1 h=0060.249 t=14.630 v=-10.483
s=1 h=0059.102 t=14.740 v=-10.384
s=1 h=0057.965 t=14.850 v=-10.285
s=1 h=0056.839 t=14.960 v=-10.186
s=1 h=0055.724 t=15.070 v=-10.087
s=1 h=0054.620 t=15.180 v=-9.988
s=1 h=0053.527 t=15.290 v=-9.889
s=1 h=0052.444 t=15.400 v=-9.790
s=1 h=0051.373 t=15.510 v=-9.691
s=1 h=0050.312 t=15.620 v=-9.592
s=1 h=0049.263 t=15.730 v=-9.493
s=1 h=0048.224 t=15.840 v=-9.394
s=1 h=0047.196 t=15.950 v=-9.295
s=1 h=0046.179 t=16.060 v=-9.196
s=1 h=0045.173 t=16.170 v=-9.097
s=1 h=0044.178 t=16.280 v=-8.998
s=1 h=0043.193 t=16.390 v=-8.899
s=1 h=0042.220 t=16.500 v=-8.800
s=1 h=0041.257 t=16.610 v=-8.701
s=1 h=0040.306 t=16.720 v=-8.602
s=1 h=0039.365 t=16.830 v=-8.503
s=1 h=0038.435 t=16.940 v=-8.404
s=1 h=0037.516 t=17.050 v=-8.305
s=1 h=0036.608 t=17.160 v=-8.206
s=1 h=0035.711 t=17.270 v=-8.107
s=1 h=0034.824 t=17.380 v=-8.008
s=1 h=0033.949 t=17.490 v=-7.909
s=1 h=0033.084 t=17.600 v=-7.810
s=1 h=0032.231 t=17.710 v=-7.711
s=1 h=0031.388 t=17.820 v=-7.612
s=1 h=0030.556 t=17.930 v=-7.513
s=1 h=0029.735 t=18.040 v=-7.414
s=1 h=0028.925 t=18.150 v=-7.315
s=1 h=0028.126 t=18.260 v=-7.216
s=1 h=0027.337 t=18.370 v=-7.117
s=1 h=0026.560 t=18.480 v=-7.018
s=1 h=0025.793 t=18.590 v=-6.919
s=1 h=0025.038 t=18.700 v=-6.820
s=1 h=0024.293 t=18.810 v=-6.721
s=1 h=0023.559 t=18.920 v=-6.622
s=1 h=0022.836 t=19.030 v=-6.523
s=1 h=0022.124 t=19.140 v=-6.424
s=1 h=0021.423 t=19.250 v=-6.325
s=1 h=0020.733 t=19.360 v=-6.226
s=1 h=0020.053 t=19.470 v=-6.127
s=1 h=0019.385 t=19.580 v=-6.028
s=1 h=0018.727 t=19.690 v=-5.929
s=1 h=0018.080 t=19.800 v=-5.830
s=1 h=0017.444 t=19.910 v=-5.731
s=1 h=0016.819 t=20.020 v=-5.632
s=1 h=0016.205 t=20.130 v=-5.533
s=1 h=0015.602 t=20.240 v=-5.434
s=1 h=0015.010 t=20.350 v=-5.335
s=1 h=0014.428 t=20.460 v=-5.236
s=1 h=0013.858 t=20.570 v=-5.137
s=1 h=0013.298 t=20.680 v=-5.038
s=1 h=0012.750 t=20.790 v=-4.939
s=1 h=0012.212 t=20.900 v=-4.840
s=1 h=0011.685 t=21.010 v=-4.741
s=1 h=0011.169 t=21.120 v=-4.642
s=1 h=0010.664 t=21.230 v=-4.543
s=1 h=0010.169 t=21.340 v=-4.444
s=1 h=0009.686 t=21.450 v=-4.345
s=1 h=0009.213 t=21.560 v=-4.246
s=1 h=0008.752 t=21.670 v=-4.147
s=1 h=0008.301 t=21.780 v=-4.048
s=1 h=0007.861 t=21.890 v=-3.949
s=0 h=0007.432 t=22.000 v=-3.850
s=1 h=0006.984 t=22.110 v=-4.301
s=1 h=0006.516 t=22.220 v=-4.202
s=1 h=0006.060 t=22.330 v=-4.103
s=1 h=0005.614 t=22.440 v=-4.004
s=1 h=0005.179 t=22.550 v=-3.905
s=0 h=0004.755 t=22.660 v=-3.806
s=1 h=0004.311 t=22.770 v=-4.257
s=1 h=0003.848 t=22.880 v=-4.158
s=1 h=0003.396 t=22.990 v=-4.059
s=1 h=0002.955 t=23.100 v=-3.960
s=0 h=0002.525 t=23.210 v=-3.861
s=1 h=0002.076 t=23.320 v=-4.312
s=1 h=0001.607 t=23.430 v=-4.213
s=1 h=0001.149 t=23.540 v=-4.114
s=1 h=0000.702 t=23.650 v=-4.015
s=1 h=0000.265 t=23.760 v=-3.916
---Landed---
h =-000.160
t = 23.870
v = -3.817
total= 171
max = 157
main
vráti
hodnotu 0).
Odovzdávací systém otestuje a ohodnotí nasledovné oblasti funkcionality vášho programu. Na získanie bodov z konkrétneho testovacieho scenára je nutné, aby testom prešli všetky testovacie prípady v danom scenári.
Scenár 1
Kontrola výpisu vstupných parametrov.
|
1 b |
Scenár 2
Kontrola výpisu kritickej výšky $ d_e $.
|
2 b |
Scenár 3
Kontrola výpisu riadkov simulácie.
|
4 b |
Scenár 4
Kontrola záverečného výpisu - trojica $\{h,t,v\}$.
|
1 b |
Scenár 5
Kontrola záverečného výpisu - počet riadkov simulácie, kedy bol
motor sondy
počas letu zapnutý.
|
1 b |
Scenár 6
Kontrola záverečného výpisu - najdlhší časový úseku, kedy bol motor
zapnutý.
|
1 b |
Súčet | 10 b |
Aby váš program prešiel automatizovaným testovaním, jeho výstup musí mať nasledovnú štruktúru a výpisy sa musia zobrazovať na očakávaných pozíciách.
Vstupné parametre:
$ m = 10000 $
$ T = 82000 $
$ H = 6000 $
$ g = 3.711 $
$ v_{soft} = -5.0 $
$ \Delta t = 0.02 $
Vstupné parametre:
$ m = 10000 $
$ T = 50000 $
$ H = 254 $
$ g = 4.4 $
$ v_{soft} = -3.9 $
$ \Delta t = 0.03 $
Vstupné parametre:
$ m = 800 $
$ T = 8000 $
$ H = 8000 $
$ g = 0.1 $
$ v_{soft} = -2.0 $
$ \Delta t = 1 $
Vstupné parametre:
$ m = 17110 $
$ T = 290000 $
$ H = 107 $
$ g = 4.0 $
$ v_{soft} = -5.0 $
$ \Delta t = 0.02 $
Vstupné parametre:
$ m = 5000 $
$ T = 74000 $
$ H = 99 $
$ g = 2.0 $
$ v_{soft} = -7.0 $
$ \Delta t = 0.3 $
Vstupné parametre:
$ m = 2000 $
$ T = 8000 $
$ H = 209 $
$ g = 3.94 $
$ v_{soft} = -4.3 $
$ \Delta t = 0.16 $
Nasledujúce zdroje vám môžu pomôcť pri riešení zadania. Odporúčame si tieto zdroje pozrieť/preštudovať. Na prístup k niektorým zdrojom potrebujete byť prihlásení vo vašom Google G-Suite STU konte.