Informatika2-2013/Gyakorlat03
(Új oldal, tartalma: „== Ismétlés == * Beolvasás scanf-el: <c> int z; printf("Add meg z értékét: "); scanf("%d", &z); </c> Az &-et ne hagyjuk ki. * Ciklusok: for, while, do-while …”) |
|||
24. sor: | 24. sor: | ||
** Még ha elõre ismert számú adatot kell beolvasnunk akkor se feltétlen praktikus mindet eltárolni. | ** Még ha elõre ismert számú adatot kell beolvasnunk akkor se feltétlen praktikus mindet eltárolni. | ||
** Tudunk olyan algoritmusokat írni amik "on the fly" mûködnek, miközben a beolvasás történik már fut a számolás, nem csak a beolvasás után. | ** Tudunk olyan algoritmusokat írni amik "on the fly" mûködnek, miközben a beolvasás történik már fut a számolás, nem csak a beolvasás után. | ||
+ | |||
+ | == Feladatok == | ||
+ | |||
+ | ==== 1. Sakktábla ==== | ||
+ | |||
+ | Rajzolj ki egy ''NxN''-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (''N'') a felhasználótól kérd be! | ||
+ | |||
+ | Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra! | ||
+ | |||
+ | Egymásba ágyazott ciklus példa: | ||
+ | <c> | ||
+ | #include<stdio.h> | ||
+ | |||
+ | int main(void) { | ||
+ | int i; | ||
+ | int j; | ||
+ | |||
+ | for(i = 0; i < 10; i++) { | ||
+ | printf("i: %d \n", i); | ||
+ | for(j = 0; j < i; j++) { | ||
+ | printf(" (%d, %d) ", i, j); | ||
+ | } | ||
+ | printf("\n"); | ||
+ | } | ||
+ | printf("\n"); | ||
+ | } | ||
+ | </c> | ||
+ | |||
+ | ==== 5. Prímtényezõ keresés ==== | ||
+ | |||
+ | Írj programot, ami megkeresi egy a felhasználó által adott szám prímtényezõit és sorban kiírja azokat. (A hiba elkerülése végett elõször vizsgáljuk meg, hogy nem 0-t vagy 1-et kaptunk-e.) | ||
+ | |||
+ | Nem kell bonyolultra gondolni azonnal, meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-tõl kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk. | ||
+ | |||
+ | Emlékezzünk, hogy a maradék képzés (modulo) jele C-ben is a % | ||
== A gyakorlat anyaga == | == A gyakorlat anyaga == |
A lap 2013. február 26., 02:59-kori változata
Tartalomjegyzék |
Ismétlés
- Beolvasás scanf-el:
int z; printf("Add meg z értékét: "); scanf("%d", &z);
Az &-et ne hagyjuk ki.
- Ciklusok: for, while, do-while
- Megírtunk egy egyszerû programot, ami egyesével összeadta a pozitív egész számokat növekvõ sorrendben amíg el nem ért egy küszöböt. Tanulság:
- For ciklus feltétele nem feltétlen függ közvetlenül a ciklusváltozótól.
- Ha elakadnánk lehetséges, hogy csak egy új változót kellene felvenni.
- Írtunk programot amivel akárhány számot beolvashattunk és akkor állt le ha egymás után azonosat adtunk neki. Tanulság:
- Ha elõre nem ismert számú adatot akarunk beolvasni, hasznos lehet egy while vagy do-while ciklus.
- Korábbi adatokat eltárolhatunk egy változóban, ha szükségünk lehet még rájuk.
- Írtnunk minimum és/vagy maximum keresõ programot. Tanulság:
- Még ha elõre ismert számú adatot kell beolvasnunk akkor se feltétlen praktikus mindet eltárolni.
- Tudunk olyan algoritmusokat írni amik "on the fly" mûködnek, miközben a beolvasás történik már fut a számolás, nem csak a beolvasás után.
Feladatok
1. Sakktábla
Rajzolj ki egy NxN-es sakktábla mintát, ahol X-szel jelöljük a fekete mezőket, és üresen hagyjuk (egy szóköz) a fehéreket. Nem kell keretet adni a táblának. A sakktábla méretét (N) a felhasználótól kérd be!
Tipp: a ciklusokat egymásba is ágyazhatjuk, de ilyenkor nagyon kell figyelni a ciklusváltozókra!
Egymásba ágyazott ciklus példa:
#include<stdio.h> int main(void) { int i; int j; for(i = 0; i < 10; i++) { printf("i: %d \n", i); for(j = 0; j < i; j++) { printf(" (%d, %d) ", i, j); } printf("\n"); } printf("\n"); }
5. Prímtényezõ keresés
Írj programot, ami megkeresi egy a felhasználó által adott szám prímtényezõit és sorban kiírja azokat. (A hiba elkerülése végett elõször vizsgáljuk meg, hogy nem 0-t vagy 1-et kaptunk-e.)
Nem kell bonyolultra gondolni azonnal, meg lehet oldani úgy is, hogy egyesével megpróbáljuk elosztani az adott számunkat 2-tõl kezdve egyesével haladva egész számokkal, amíg 1-hez nem jutunk.
Emlékezzünk, hogy a maradék képzés (modulo) jele C-ben is a %