4. labor 2009. október 5. Karcsics Tibor
[email protected] http://www.pizzicato.hu/c_gyak/
1. Írassa ki egy egész szám bitmintáját tetszőleges sorrendben a képernyőre.
Tipp: a)Vizsgáljuk meg, hogy a szám osztható-e kettővel. b) Ha igen, írjunk ki egy nullát, ha nem akkor egyet. c)Osszuk a számot kettővel. d) Ha a szám nagyobb, mint nulla, akkor folytassuk az 1. Lépéssel, különben végeztünk a feladattal. Megjegyzés: - Mivel egészosztás történik, a szám végül nullával lesz egyenlő - Ez az algoritmus fordított sorrendben írja ki a számjegyeket. Ez is jó megoldás, de érdemes elgondolkodni azon, hogy miként lehet helyes sorrendben kiíratni a bitminta elemeit. 2. A fordítóval készítsük el az előző program assembly nyelvű forrását is.
Visual Studioban: jobb klikk a Solution Explorerben a projekten, majd a felbukkanó nemüben: Properties / C/C++ / Output files / Assambler Output / {No listing, Assembly-Only Listing, Assembly Machine Code and Source,…} Érdemes az Assembly Machine Code and Source opciót választani, amivel megfigyelhető, hogy az egyes C utasítások mivé fordulnak. GCC-vel: gcc –S main.c –o m, ahol a forrás kód a main.c állományban van és az assembly nyelvű kód az m nyelvű fájlban kerül. 3. Írassa ki egy double típusú valós szám bitmintáját (opcionális) 4. Írjon függvényt, amely két számról el tudja dönteni, hogy azok barátságos számok-e?
Két szám akkor barátságos, ha az egyik szám önmagánál kisebb osztóinak összege a másik számmal egyenlő (és fordítva). Pl. a 220 és a 284 barátságos számok. 5. Készítsen programot, amely egy valós számot (Celsius fok), az eredményt átváltja
Farenheitbe és kiírja az eredményt. 0 C = 32 F, 40 C = 104 F (Fahrenheit = 1.8*Celsius + 32) 6. Bővítse ki az előző feladatot úgy, hogy a számokat a felhasználótól kérje be. 7. Készítsen el egy faktoriálist számító függvényt, amely unsigned char típussal dolgozik.
Írassa ki a számok faktoriálisát 1-től 10-ig. Magyarázza meg az eredményt! 8. Tegye meg ugyanezt előjeles esetben is (signed char). 9. Írjon programot, amely az (x-1)*(x-10n)=0 egyenlet gyökeit meghatározza. Ehhez
alakítsa át az egyenletet a következő alakra: x2-(1+10n)*x+10n=0 és a három konstanst helyetetsítse be a megoldóképletbe. Állítsa elő a megoldást n=1,2,4,8 esetekre és magyarázza meg az eredményt! A megoldást próbálja ki float és double típussal is.