Informatika2-2013/Gyakorlat02
Tartalomjegyzék |
2. gyakorlat
Ismétlés
- Fordítás gcc-vel:
gcc -W -Wall -o hello hello.c
- A program futása a main függvénnyel kezdõdik, ezáltal mindig kell, hogy létezzen.
- Pontosvesszõk a sor végén.
- Blokkok kapcsoszárójelekkel.
- A változókat deklarálni kell (meg kell adni a típusukat).
- stdio.h-ban hasznos függvények, pl: printf
- Egy példa printf-re:
printf("A %d nagyobb mint a %d\n.", 3, 2);
- A 3 és a 2 sorban be lesz helyettesítve a string-be, a \n a sorvége karakter.
- Az if a szokásos módon mûködik, a szintaxis:
if(feltetel){ utasítások } else if(feltetel){ utasítások } ... } else{ utasítások }
1. For ciklus
Segítségnek itt egy for ciklus példa: 0-tól 9-ig kiírjuk a számokat, vagyis a ciklusváltozó értékét (általában i-nek vagy j-nek nevezzük a ciklusváltozót, ami tipikusan minden körben növekszik eggyel, de persze máshogy is lehetne):
int i; for (i=0; i<10; i++) { printf("A ciklusváltozo erteke: %d\n", i); }
Egészítsd ki a következő kódot a megjegyzések helyén! Adjuk össze a számokat 1-tõl kezdve, egyesével, pl: 1 + 2 + 3 = 6. A programunk azt a számot adja ki, hogy az elsõ hány darab számot kell összeadni, hogy legalább 4212-t kapjunk.
#include<stdio.h> int main(void) { /* változók deklarálása, értékadás */ /* i-t is deklarálni kell ! */ for (/* inicializálás */ ; /* feltétel */; /* minden ciklusmag végén */) { /* számolás */ } /* kiírás */ return 0; }
2. Do / while ciklusok
Szintaktika:
do { /* utasítások amik minden körben lefutnak */ } while (/* feltétel */);
while ( /* feltétel */ ) { /* utasítások amik minden körben lefutnak */ }
A következõ kód a felhasználótól egy ciklusban egész számokat kér be addig, amíg 0 értéket nem kap. Ekkor pedig kiírja a képernyőre a kapott nemnulla számok átlagát!
#include<stdio.h> int main(void) { int i = 0; float sum = 0; int szam = 0; do{ scanf("%d", &szam); sum += szam; i++; } while(szam != 0); i--; printf("%f", sum / i); return 0; }
Feladat
Írjunk az elõzõ példa mintájára egy programot, ami a felhasználótól egész számokat kér be, amíg egymás után két azonos számot nem kap. Ha ez megtörtént, akkor írja ki, hogy hány számot adtunk be.
Most talán segít, ha már a cikluson kívül is kérünk be elõre számokat, és nem hátultesztelõs ciklust használunk, de azzal is kényelmesen meg lehet oldani, sõt for ciklussal is.
3. 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"); }