# # $Id: 01-hazi.txt 2199 2014-08-28 21:27:30Z gertom $ # Oldd meg a feladatokat C nyelven úgy, hogy a program ne bekérje az adatokat, hanem a parancssorban kapott értékeket dolgozza fel. Ha segít, először feltételezheted, hogy egy adott N értéknél nem kapsz több paramétert, de oldd meg úgy is, hogy tetszőleges számú paramétert kaphasson a program. 1. Számold ki n! értékét minden paraméterre. 2. Számold ki a Fibonacci sorozat n. elemét minden paraméterre. A sorozat elemei: a[0]=1, a[1]=1 és n>1 esetén a[n] = a[n-1]+a[n-2]. 3. Számold ki az általánosított Fibonacci sorozat n. elemét. A program csak pontosan két paramétert fogadjon el. 4. Számold ki n!/((k+m)! * (n-k)!) értékét. A program csak pontosan három paramétert fogadjon el, és hiba esetén írjon ki egy tájékoztatót a program használatáról. 5. Számítsd ki a felhasználó által megadott két szám legnagyobb közös osztóját és legkisebb közös többszörösét. 6. A felhasználó által megadott egész számokról állapítsd meg, hogy prím-e, és ha nem, írd ki a különböző pozitív osztóinak számát és összegét! 7. A tér 4 pontjának koordinátái alapján számítsd ki az általuk meghatározott test felszínét. Feltehető, hogy a 4 pont nem egy síkba esik. 8. Adott nehézségi gyorsulás (g=9,81 m/s^2) mellett szimuláld egy alfa kilövési szögben és v kezdősebességgel kilőtt test röppályáját légüres térben sík terepen. A felhasználó adja meg a kilövési paramétereken túl azt is, hogy milyen időközönként kell meghatározni a test helyzetét (x,y koordinátáit). A kiírás akkor ér véget, ha a test földet ért. A földetérés helyét pontosan számítsd ki! 9. Adott két körszerű test a kétdimenziós síkon. A testek helyzetét a középpontjaikkal azonosítjuk. Kezdetben a felhasználó mindkét testhez megadja: (1) a középpontját x,y koordinátákkal, (2) sugarát, (3) kezdősebességét és annak irányát, valamint (4) a test tömegét. Megad továbbá egy dt és egy T időintervallumot. A feladat a két test kétdimenziós fizikai mozgásának szimulálása a 0..T időintervallumban dt időbeosztással. Ez azt jelenti, hogy a kezdő időpontban kiszámoljuk a testekre ható erőket, majd a test mozgását a következő dt időintervallumban úgy közelítjük, mintha a testre ebben az időintervallumban nem hatna egyéb erő. Ezután újra kiszámítjuk az erőket, majd újra közelítjük a mozgást, stb. A pálya szimulálása a T időpontig vagy a két test "ütközéséig" tart. A pontosság kedvéért a két test helyzetét (x,y koordinátáit) úgy írassuk ki, mintha az origo, azaz a koordinátarendszer középpontja a két test közös tömegközéppontja lenne, azaz a kiszámított koordinátaértékeket ezek szerint korrigáljuk minden lépésben. 10. Készítsünk egy olyan programot, amely egy 0 és 100000 Ft közötti összegeket úgy vált fel a ma érvényes bankjegyekkel illetve érmékkel, hogy ezek darabszáma a lehető legkevesebb legyen. 11. Készíts egy programot, amely egy tetszőleges nagyságú (maximum 9999 jegyű) számról a jól ismert oszthatósági szabályok felhasználásával eldönti, hogy a szám osztható-e a [2..12] intervallumba eső számok bármelyikével. (2,5,10 - utolsó számjegy oszthatósága; 4 - utolsó két számjegy oszthatósága; 8 - utolsó három számjegy oszthatósága; 3,9 - számjegyek összegének oszthatósága; 11 - számjegyek alternáló összegének oszthatósága; 7 - a (jobb szélről) három számjegyenként csoportosított számok alternáló összegének oszthatósága; 6/12 - 3-mal és 2/4-gyel való oszthatóság.) 12. Írj egy programot, ami sorbarendezi és kiírja a kapott egész értékű paramétereket. 13. Írj egy programot, ami a lexikografikus rendezés szerint sztringként sorbarendezi és kiírja a kapott paramétereket. Oldd meg a feladatot a main paraméterként kapott sztring tömbjében lévő pointerek átsorrendezésével, illetve egy indextömb felhasználásával is. (Az I[] indextömb arra jó, hogy ne egy A[] tömb elemeit kelljen cserélgetni. Ha például az A[] tömb i. és j. elemét kellene megcserélni, akkor az A[i]<->A[j] csere helyett az I[i]<->I[j] cserét hajtjuk végre, és az A[] k. elemét az A[I[k]] összetett indexeléssel érjük el.) 14. Írj egy programot, amely kiszámítja két vektor skalárszorzatát! Egy v1=(a1,a2,...,an) és egy v2=(b1,b2,...,bn) vektor skalárszorzata a c=(a1*b1)+(a2*b2)+...+(an*bn) szám. 15. Írj egy programot, amely kiszámítja egy síkidom súlypontját. A síkidom x,y értékekkel adott pontok sorozata, amelyet a parancssorból kell venni. 16. Készíts olyan programot, mely összefésüli a paraméterben kapott sztringeket. Az összefésülés azt jelenti, hogy az eredményben először a sztringek első karakterei, majd második karakterei, majd harmadik karakterei, stb. vannak. Ha valamelyik sztring rövidebb a többinél, akkor őt a további iterációknál nem kell figyelembe venni.