Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Borland C/C++ mintapéldák

Hasonló előadás


Az előadások a következő témára: "Borland C/C++ mintapéldák"— Előadás másolata:

1 Borland C/C++ mintapéldák

2 1. feladat ‘Ez aztán nem semmi’ szöveg kiiratása a képernyőre:
Megoldás: #include <stdio.h> void main (void) { Printf(”Ez aztán nem semmi!\n”); }

3 2. feladat Példa a változók deklarálására és kezdeti értékadásra.
Megoldás: #include <stdio.h> void main (void) { int a,b,c; int osszeg,szorzat; a=1; b=-2; c=3; osszeg=a+b+c; szorzat=a*b*c; printf(”Az osszeg =%d\n”,osszeg); printf(”A szorzat =%d\n”,szorzat); }

4 3. feladat Példa a konstansok deklarálására, használatára, megszüntetésére. Megoldás: #include <stdio.h> #define TUCAT 12 #define UZENET ”Szoveg konstans vagyok\n” void main (void) { int w; w=TUCAT; a=1; printf(”w=°%d/n”,w); #undef TUCAT printf(UZENET); }

5 4. feladat Példa a számábrázolás veszélyeire. Megoldás:
#include <stdio.h> main () { int a,b,c; unsigned int aa,bb,cc; a=15000; b=15000; c=a+b; //sikeres muvelet printf(„”a=%6d, b=%6d, c=%6d”,a,b.c); a=20000; b=20000; c=a+b; //tulcsordulas aa=30000; b=30000; c=aa+bb; //sikeres muvelet printf(„”aa=%6u, bb=%6u, cc=%6d\n”,aa,bb.cc); aa=40000; bb=40000; cc=aa+bb; //tulcsordulas printf(„”aa=%6d, bb=%6d, cc=%6d\n”,aa,bb.cc); }

6 5. feladat Példa a kiiratás típusaira Megoldás:
#include <stdio.h> main () { char x; int a,b; float c,d; x=‘w’; a=-57; b=197; c=2.0897; d=-3.67e8; printf(”a=%d b=%d\n”,a,b); printf(”c=%f d=%e\n”,c,d); printf(”x=%c\n”,x); }

7 6. feladat Példa a kiiratás típusaira Megoldás:
#include <stdio.h> main () { float x; doube y; w=1.0; while(x!=x+1) x=x+1.1; printf(„Adatábrázolás float esetén = °e\n”,x); } y=1.0; y=y+1.1; printf(„Adatábrázolás double esetén = °e\n”,y);

8 7. feladat Példa a bit operátorokra Megoldás: #include <stdio.h>
main () { int ab,c,d,e; a=16; b=a<<2;//2-vel balra léptet c=>>4;//4e-el jobbra léptet d=a&0x1;// bitenkénti ÉS kapcsolat 1-el hexába e=a|07;//bitenkénti VAGY kapcsolat 7-el oktálisan printf(”a=%d b=%d c=%d d=%d e=%d\n”,a,b,c,d,e); }

9 8. példa Példa a mutatókra.
Megoldás: #include <stdio.h> main() { int a, b, c, d, e, * mutato; mutato = &a; /* mutató a-ra mutat */ a = 10; b = a++; /* a b-be, a növelése */ c = ++a; /* a növelése, a c-be */ d = *mutato; /* d-be a mutatott érték */ e = sizeof (mutato); /* mutato mérete e-be */ printf ( "a = %d, b=%d, c= %d\n", a, b, c ) ; printf ( "d = %d, e=%d\n", d, e ) ; } /* main *./

10 9. példa Példa a kevert típusú kifejezésekre
#include <stdio.h> main() { int i; char j; float x; i = -5; j = 3; x = 1.0; printf (" -5/ is %f\n", i/j + x ); i++; printf (" -4/ is %f\n", i/j + x ); i++; printf (" -3/ is %f\n", i/j + x ); i++; printf (" -2/ is %f\n", i/j + x ); i++; printf (" -1/ is %f\n", i/j + x ); i++; printf (" -0/ is %f\n", i/j + x ); i++; printf (" 1/ is %f\n", i/j + x ); i++;

11 9. Példa folytatása printf (" 1/3 + 1.0 is %f\n", i/j + x ); i++;

12 i = -5; j = 3; x = 1.0; printf ("1.0 + (-5/3) is %f\n", x + i/j ); i++; printf ("1.0 + (-4/3) is %f\n", x + i/j ); i++; printf ("1.0 + (-3/3) is %f\n", x + i/j ); i++; printf ("1.0 + (-2/3) is %f\n", x + i/j ); i++; printf ("1.0 + (-1/3) is %f\n", x + i/j ); i++; printf ("1.0 + (-0/3) is %f\n", x + i/j ); i++; printf ("1.0 + (1/3) is %f\n", x + i/j ); i++; printf ("1.0 + (2/3) is %f\n", x + i/j ); i++; printf ("1.0 + (3/3) is %f\n", x + i/j ); i++; printf ("1.0 + (4/3) is %f\n", x + i/j ); i++; printf ("1.0 + (5/3) is %f\n", x + i/j ); i++; printf ("1.0 + (6/3) is %f\n", x + i/j ); i++; printf ("1.0 + (7/3) is %f\n", x + i/j ); i++; } /* main *./

13 10. példa Példa a vessző operátor használatára
10. példa Példa a vessző operátor használatára. A könnyű olvashatóság kedvéért ezt célszerű kerülni. #include <stdio.h> main () { int a, b, c; int i, j; a=(b=c=2,c=c+3); printf ( "a - %d, b - %d, c = %d\n", a, b, c ); i = j = 2,j = j + 3; printf( "i = %d, j = %d\n", i, j ); } /* main */

14 11. példa Példa balértékként nem használható objektumokra, mivel a program szintaktikai hibákat tartalmaz nem futtatható. #include <stdio.h> #define TUCAT main () { int a, b, c; a = TUCAT; /* helyes utasítás */ TUCAT = a; /* szintaktikus hiba !! */ c = a + TUCAT; /* szintaktikailag jó*/ a + b = c /* szintaktikus hiba !! */ } /* main */

15 12. példa Példa a for () ciklus használatára. Faktoriális számolása
12. példa Példa a for () ciklus használatára. Faktoriális számolása. A for () ciklus utáni utasítás zárójel tulajdonképpen felesleges. Megoldás I. #include <stdio.h> main() { int i, x; double y; x =5; y=l; for ( i = 1; i <= x; i++ ) y = y * i; } /* for */ printf ( "%d faktorialisa = %f\n",x,y); } /* main */

16 Megoldás II. #include <stdio.h> main() { int i, x; double y;
for ( i = 1, y = 1; i <= x; i++ ) y = y * i; printf ( "%d faktorialisa = %f\n",x,y); } /*. main */

17 15. példa Példa a while () ciklus használatára.
#include <stdio.h> main() { int p = 10; while ( p ) printf ("p = %d\n", p --); } /* main */

18 16. példa Egy újabb példa a while ciklusra
16. példa Egy újabb példa a while ciklusra. A legkisebb ábrázolható szám megkeresése. Vizsgáljuk meg, hogy a kapott eredmények összhangban vannak-e az elmélettel. #include <stdio.h> main() { float a, aregi; double b, bregi; a = 1.0; while ( a ! = 0.0 ) /* amíg hamis nem lesz */ aregi = a; /* előző érték elmentése*/ a = a / 2.0; } / * whilw */ printf ("Float-nal a legkisebb =%e\n", aregi ); b = 1.0; while ( b ! = 0.0 ) bregi = b; b = b \ 2.0; printf ("Double-nal a legkisebb =%e\n", aregi ); } /* main */

19 17. példa Egy újabb példa a while ciklusra
17. példa Egy újabb példa a while ciklusra. Az ábrázolási pontosság szemléltetése. Itt is indokoljuk a kapott eredményeket! #include <stdio.h> main () { float x; double y; x = 1.0; while ( x != x + 1 ) x = x * 1.1; printf("Abrazolasi pontossag float eseten = %e\n",x); y = 1.0; while ( y '!= y + l ) y = y * 1.1; printf("Abrazolasi pontossag double eseten = %e\n",x); } /* main */

20 18. példa Példa a do. while ciklus használatára
18. példa Példa a do...while ciklus használatára. Nézzük meg azt az esetet is amikor x integer típusú változó! #include <stdio.h> main() { float x; printf( "Nekiallok varakozni !" ); x = 0; do x++; } while ( x < ); printf( "\n Befejeztem. \n" ); } /* main */

21 19. példa Példa az if elágazásra. Parancsértelmezés.
#include <stdio.h> main() { char c; printf( "Usse be a parancskodot (a, b, c ): " ); c = getchar(); /* a kod beolvasasa */ if (c == 'a' ) printf( "Az a parancs vegrehajtva\n" ); } /* if */ else if ( c == 'b') printf ( "A b parancs: vegrehaj tva\n" };

22 19. Feladat folytatása if ( c == 'c' ) {
printf( "A c parancs vegrehajtva\n" ); } /* if */ else printf( "Illegalis parancs: '%c'\n", c ); } /* else */ } /* main */

23 20. példa Az előző feladat megoldása switch-el
20. példa Az előző feladat megoldása switch-el. Mi történik ha elhagyom a break utasitasokat? #include <stdio.h> main() { char c; printf( "Usse be a parancskodot (a, b, c ): " ); c = getchar (); /* a kod beolvasasa */ switch ( c ) case 'a': printf( "Az a parancs vegrehajtva\n" ) break case 'b': printf( "A b parancs vegrehajtva\n" ); break; case 'c': printf( "A c parancs vegrehajtva\n" ); default: printf( "Illegalis parancs\n" ); } ) /* main */

24 21. példa Az előző példa nagybetűket is elfogadó változata.
#include <stdio.h> main() { char c; printf ('"Usse'be a. parancskodot (a, b, c ): " ); c = getchar (); /* a kod"beolvasasa */ switch ( c ) case 'a': case 'A' : printf( "Az a parancs vegrehajtva\n" ); break; case 'b': case 'B': printf( "A b parancs vegrehajtva\n" ); case 'c*: case 'C': printf( "Ac parancs vegrehajtva\n" ); default : printf( "Illegalis parancs\n" ); } } /* main */

25 22. példa Példa nagybetű-kisbetű konverzióra az if segitségével
22. példa Példa nagybetű-kisbetű konverzióra az if segitségével. Csak a nagybetűket alakitja át a tbbbit változatlanul hagyja. #include <stdio.h> main() char c; while ( ( c = getchar() ) != EOF ) { if ( 'A' <= c && c <= 'Z' ) c = c + 'a' - 'A'; } /* if */ putchar( c ); } /* while */ } /* main */

26 23. példa Példa kisbetű-nagybetű felcserélésre feltételes kifejezéssel
23. példa Példa kisbetű-nagybetű felcserélésre feltételes kifejezéssel. Itt található példa a háromoperandusú kifejezés használatára. #include <stdio.h> main() { char c; while ( ( c = getchar() ) != EOF ) ( putchar(('A'<=c && c<='Z') ? c-'A'+'a' : c+'A'-'a'); }/* while */ } /.* main */

27 24. példa Példa kisbetű-nagybetű felcserélésre könyvtári függvényekkel
24. példa Példa kisbetű-nagybetű felcserélésre könyvtári függvényekkel. Nézzük át milyen függvények találhatók meg a ctype.h header file-ban! #include <stdio.h> #include <ctype.h> main() { char c; while ( ( c = getchar() ) != EOF ) if ( isupper ( c )) c = tolower ( c ); else c = toupper ( c }; putchar ( c ); } /* while */ } /* main */

28 25. példa Példa számsorozat beolvasására, a szóközöket átlépve
25. példa Példa számsorozat beolvasására, a szóközöket átlépve. Gondoljuk át pontosan a continue #include <stdio.h> main() { char c; float i; i= 0; while ( ( c = getchar() ) != EOF- ) if ( c >= *0' && c <= *9* } i = i*10 + c - '0' ; else if C e == ' ' continue; else break; } /* while */ printf( "Az atalakitott ertek %f\n",i ); } /* main */

29 26. példa Példa integer konverziójára ASCII kódsorozattá
26. példa Példa integer konverziójára ASCII kódsorozattá. Ez a program is tartalmaz olyan utasítást , zárójeleket, amelyek csak az olvashatóság megkönnyítésére kerültek bele. #include <stdio.h> main (} { unsigned int num; /* konvertalt szam */ char c; /* beolvasott karakter */ char bit; /* kicsorgo bit erteke */ int i; /* bitszamlalo */ num =. 0; printf{ "Uss be egy pozitiv szamot: " ); while ( ( c = getchar() ) != EOF ) if ( c — '\n' || ( c < '0* I I c > '9' ) ) printf ( "%u a kettes szamrends-zerben ", num );

30 26.példa folytatása for ( i - 16; i > 0; i— ) {
bit = !( !( num & 0x8000 ) ); bit = bit + '0'; /* ASCII lesz */ putchar( bit ); num = num « 1; /* num balra lep*/ } /*for */ putchar ( '\n' ); printf( "Uss be egy pozitiv szamot: " ); num = 0; } /* if */ else { /* ASClI-binaris konv. */ num = num * 10 + c - '0';. } /* else */ } /* while */ } /* main */

31 27. példa Példa függvénydefinícióra és függvényhívásra
27. példa Példa függvénydefinícióra és függvényhívásra. Miért nem kell deklarálni az add függvényt? #include <stdio.h> main() { int sum,a1,a2,a3; a1 = 5; a2 = -7; a3 =30; sum = add( a1, a2, a3 ); printf( "Az összeg = %d\n", sum ); } /* main */ int add( a, b, c ) int a; /* a függvény ...*/ int b; /* argumentumainak ..*/ int c; /* deklarációja */ int sum; /* belső változó definíciója */ sum = a + b + c; return( sum ); } /* add */

32 28. példa Példa a hatványozás megvalósítására. (Tudjuk, hogy a math
28. példa Példa a hatványozás megvalósítására. (Tudjuk, hogy a math.h-ban pow néven már realizálták.) #include <stdio.h> main() { int kitevo, alap, ered; printf( "Positiv alap, novekvo kitevok\n" ); for ( kitevo - 0, alap = 4; kitevo < 5; kitevo++ ) ered = power( alap, kitevo ); printf( "%d a(z) %d.-on: %d\n",alap,kitevo,ered ); } /* for */ printf( "Negativ alap, novekvo kitevok\n" ); for ( kitevo = 0, alap =-2; kitevo < 5; kitevo++ ) printf( "%d a(z) %d.-on: %d\n", alap,kitevo,ered ); } /* for */ printf( "0 hatvanyai\n" );

33 for ( kitevo = 0, alap = 0; kitevo < 3; kitevo++ )
{ ered = power( alap, kitevo ); printf( "%d a(z) %d.-on: %d\n"/'alap-/ kitevo, ered J ; } /* for */ printf( "Nehany ertek negativ hatvanyaW ); for { kitevo = -2, alap = -2; alap < 3; alap++ ) printf( "%d a(z) %d.-on: %d\n"#alap,kitevo,ered ); kitevo = -1; alap = 5; } /* main */

34 int power( base, pwr ) int base, pwr; { int val; if ( pwr < 0 ) { /* negatív kitevő */ if ( base == 1 ) return( 1 ); /* 1 minden hatvanya 1 */ return( 0 ) ; } /* if *"/ val = 1; /* ez jó 0 kitevőre is ! */ while ( pwr— > 0 ) val *=base; /* ismetelt szorzás, míg kell */ return( val ); } /* power */

35 29. példa Olvassa be egy négyzet oldalát! Számolja és írja ki a négyzet kerületét és területét.

36 29. példa megoldása #include <stdio.h> int main(){ int a;
printf("Add meg az oldal hosszat!\n"); scanf("%d", &a); printf("A kerület:%d\n", 4*a); printf("A terület:%d\n", a*a); }

37 30. példa Olvassa be egy téglalap két oldalát! Számolja és írja ki a téglalap kerületét és területét külön függvény megírásával. A main függvényben hívja meg a két függvényt

38 30. példa megoldása #include <stdio.h>
int kerulet(int pa, int pb) { return 2*(pa+pb); } int terulet(int pa, int pb) return pa*pb; int main(){ int a, b; printf("Add meg az elso oldal hosszat!\n"); scanf("%d", &a); printf("Add meg a masodik oldal hosszat!\n"); scanf("%d", &b); printf("A kerület:%d\n", kerulet(a, b) ); printf("A terület:%d\n", terulet(a, b) );

39 31. példa Olvassa be egy téglalatest három oldalát! Számolja és írja ki a téglalatest felszínét és térfogatát külön függvény megírásával. A main függvényben hívja meg a két függvényt

40 31. példa megoldása #include <stdio.h>
int felszin(int pa, int pb, int pc) { return 2*(pa*pb+pa*pc+pb*pc); } int terfogat(int pa, int pb, int pc) { return pa*pb*pc; int main(){ int a, b, c; printf("Add meg az elso oldal hosszat!\n"); scanf("%d", &a); printf("Add meg a masodik oldal hosszat!\n"); scanf("%d", &b); printf("Add meg a harmadik oldal hosszat!\n"); scanf("%d", &c); printf("A felszin:%d\n", felszin(a, b, c) ); printf("A terfogat:%d\n", terfogat(a, b, c));

41 32. példa Deklaráljon egy valós, egy karakteres, egy egész típusú változót. Adjon nekik értéket és írassa ki mind a három változót egész, valós számként és karakterként is. Figyelje meg az eredményt.

42 32. példa megoldása #include <stdio.h> int main() {
int egesz = 13; float valos = ; char karakter = 'A'; printf("Egész egészként kiírva: %d\n", egesz); printf("Valós egészként kiírva: %d\n", valos); printf("Karakter egészként kiírva: %d\n", karakter); printf("Egész valósként kiírva: %f\n", egesz); printf("Valós valósként kiírva: %f\n", valos); printf("Karakter valósként kiírva: %f\n", karakter); printf("Egész karakterként kiírva: %c\n", egesz); printf("Valós karakterként kiírva: %c\n", valos); printf("Karakter karakterként kiírva: %c\n", karakter); return 0; }

43 33. példa Példa a lokális és globális változókra.
Figyelje meg az eredményt.

44 33. Példa megoldása #include <stdio.h> int globalis = 0;
int fuggveny(int parameter) { int lokalis = 0; lokalis += parameter; globalis += parameter; return lokalis;} int main() { int i; scanf("%d", &i); printf("lokalis == %d\n", fuggveny(i)); printf("globalis == %d\n", globalis); return 0; }

45 34. példa Kérjen be egy scanf változóval két karakteres és egy egész típusú változót és azt egy printf utasítással írassa ki.

46 34. Példa megoldása #include <stdio.h> int main() {
int egesz = 0; char k1 = 'X', k2 = 'Y'; printf("Beolvasás (karakter egész karakter): "); scanf("%c%d%c", &k1, &egesz, &k2); printf("egesz == %d; k1 == '%c'; k2 == '%c';\n", egesz, k1, k2); return 0; }

47 35. példa Írjon olyan programot amely, kiírja egy beolvasott számtól 1-ig a kiszámolja a számok faktoriálisát.

48 36. példa megoldása #include <stdio.h> int main() {
int n=0, fakt=1; printf("Add meg n erteket\n"); scanf("%d", &n); for(;n>1;--n) { fakt *= n; printf("n!=%d\n", fakt); } return 0;

49 37. példa Írassa ki a 0-tól 1000-ig található páratlan prímszámokat.

50 #include <stdio.h>
include <math.h> int main() { int i, j, prim, ki=0; for(i=1; i<1000; i+=2) /*csak a páratlanakkal foglalkozunk*/ { prim=1; int veg = (int)sqrt(i); /*négyzetgyök i alsó egészrészéig elég menni*/ for(j=3;j<veg;j+=2) if(i%j==0) prim = 0; break; } if(prim) printf("%d ", i); if(++ki%10==0) printf("\n"); printf("\n");

51 38. példa Írjon olyan programot,a mely folyamatosan olvassa be a számokat és összegzi azokat. A program akkor lépjen ki a összeadásból, ha 0-t ütünk. A szummázás végén adjuk meg mennyi számot összegeztünk.

52 #include <stdio.h>
int main() { int be, szum = 0, i=0; while(1) { be = 0;/*így nem okoz problémát, ha a scanf rossz inputot kap */ printf("Kovetkezo? (0=vegjel)\t"); scanf("%d", &be); if(be==0) break; ++i; szum += be; } printf("osszeg: %d,\tatlag: %f\n", szum, (float)szum/i);/*egy kistípuskényszerítés*/ return 0;

53 39. példa Írjon olyan programot,amely beolvas egy karaktert és eldönti, hopgy kisbetűről, nagybetűről vagy számról van e szó és a megfelelő kategóriát kiírja. .

54 #include <stdio.h>
int main() { char c; printf("Adj meg egy karaktert!\n"); scanf("%c", &c); if(c >= 'a' && c <= 'z') { printf("kisbetu\n"); } else if(c >= '1' && c <= '9') printf("szam\n"); else if(c >= 'A' && c <= 'Z') printf("nagybetu\n"); else printf("passz\n"); return 0;

55 40. példa Írjon olyan programot,amely beolvas egy évszámot és megállapítja, hogy szökőévről van e szó vagy nem. Az eredményt írassuk ki. .

56 #include <stdio.h>
int main() { int ev; printf("Add meg az evet\n"); scanf("%d", &ev); if(ev%4==0) { printf("szoko\n"); } else printf("nem szoko\n"); return 0;

57 41. példa Írjon olyan programot,amely beolvas egy számot 1 és 7 között. Ezek a hét napjait jelölik Írassa ki a számoknak megfelelően 1-Hétfő, 2-Kedd, 3-Szerda, 4-Csütörtők, 5-Péntek, .6-Szombat, 7-Vasárnap. Ha nem megfelelő értéket írunk be akkor azt is írja ki. Ezt a funkciót külön függvénnyel oldja meg.

58 #include <stdio.h>
void hetnapja_switch (short int x) { switch (x) { case 1: printf("Hétfő\n");break; case 2:printf("Kedd\n");break; case 3:printf("Szerda\n");break; case 4:printf("Csütörtök\n");break; case 5:printf("Péntek\n");break; case 6:printf("Szombat\n");break; case 7:printf("Vasárnap\n");break; default:printf("Hiba! x értéke legalább 1 és legfeljebb 7 lehet!\n"); } int main() { printf("A het 4. napja:\t"); hetnapja_switch(4); printf("\nA het 5. napja:\t"); hetnapja_switch(5); printf("A het 6. napja:\t"); hetnapja_switch(6);

59 42. példa Írjon olyan programot,amely beolvas két számot és kiírja azt, hogy egymás osztói -e.

60 #include <stdio.h>
int main() { int x,y; printf("Kérek egy egész számot:"); scanf("%d", &x); printf("Kérek egy másik egész számot:"); scanf("%d", &y); if (x==0) { printf("Ez könnyű, hiszen 0-nak minden szám az osztója.\n"); } else if (x!=0 && y==0) { /* az első feltétel itt elhagyható... */ printf("A 0 sajnos csak önmagának az osztója... :(\n"); else { if (x%y==0) printf("%d osztója %d-nek.", y, x); else printf("%d nem osztója %d-nek.", y, x); return 0;

61 43. példa Írjon olyan programot,amely beolvas egy számot és kiírja azt, hogy páros vagy páratlan.

62 #include <stdio.h>
int main() { int x; printf("Kerek egy egesz szamot:"); scanf("%d", &x); if (x%2 == 0) { printf("A megadott sz?m paros.\n"); } else printf("A megadott sz?m p?ratlan.\n"); return 0;

63 44. példa Definiálj egy felsorolástípust a hét napjainak tárolására, majd írasd ki a napok értékeit!

64 #include <stdio.h>
int main() { enum het { Hetfo, Kedd, Szerda, Csutortok, Pentek, Szombat, Vasarnap } nap; for(nap=Hetfo; nap <= Vasarnap; nap++) { printf("%d\n", nap); } return 0;

65 45. példa Definiálj egy felsorolástípust a hét napjainak tárolására, és az almák színének tárolására. Olvasson be egy értéket a napok és az almák színének tárolására és írassa ki a nap számát és az almák színét.

66 #include <stdio.h>
int main() { enum het { Hetfo, Kedd, Szerda, Csutortok, Pentek, Szombat, Vasarnap } nap; typedef enum { piros, zold, sarga } colors; colors col; printf("Milyen napon szeretnél almát enni? "); scanf("%d",&nap); printf("Milyen színű almát szeretnél enni? "); scanf("%d",&col); switch(nap) case Hetfo : case Kedd : case Szerda : case Csutortok : case Pentek : printf("Csak hétvégén tudok almát felszolgálni!\n"); break; case Szombat : case Vasarnap : printf("Mivel hétvége van, alma is van!\n"); }

67 switch(col) { case piros: printf("A piros alma egészséges, jó választás!\n"); break; case zold : printf("Vigyázz, a zöldalma savanyú!\n"); case sarga : printf("A sárga alma is nagyon finom!\n"); default : printf("Nem ismerek ilyen színű almát!\n"); } default: printf("A hét csak 7 napból áll!\n"); return 0;

68 46. példa Készíts egy 10 egész szám tárolására alkalmas tömböt. Töltsd fel az értékekkel, majd írasd ki az elemeit

69 #include <stdio.h>
#define N 10 #define M 10 int main() { int tomb[N]; int i; for(i=0; i<M; i++) { tomb[i]=i+1; } printf(" %d", tomb[i]); return 0;

70 47. példa Írjunk programot, ami beolvas 10 számot és fordított sorrendben kiírja azokat.

71 #include <stdio.h>
#define MERET 10 int main(){ int szamok[MERET]; int c; for (c = 0 ; c<MERET ; c++){ printf("%d. szam : ", c+1); scanf("%d",&szamok[c]); /*lehetne*/ /*scanf("%d",szamok+c);/**/ /*is*/ } printf("A beirt szamok forditott sorrendben : \n"); for(c = MERET-1 ; c>=0 ; c--){ printf("%d\t",szamok[c]); printf("\n"); return 0;

72 48. példa Deklarálj egy megfelelő hosszúságú karaktertömböt, majd írd bele a "Hello Vilag!" szöveget! Írasd ki az str értékét kétféleképpen!

73 #include <stdio.h>
#include <string.h> int main() { /* char str[] = "Hello Vilag!" */ /* azért nem így írtam, hogy használjuk a string.h-t" */ char str[20]; strcpy(str, "Hello Vilag!"); printf("%s\n", str); return 0; }

74 49. példa Deklarálj egy megfelelő hosszúságú karaktertömböt, majd írd bele a "Hello Vilag!" szöveget! Írasd ki az str értékét kétféleképpen! Módosítsd a programot úgy, hogy a következő sorba csak a "Hello" szöveget írja ki!

75 #include <stdio.h>
#include <string.h> int main() { char str[20]; strcpy(str, "Hello Vilag!"); printf("%s", str); str[5]='\0'; return 0; }

76 50. példa Példa kétdimenziós tömb definíálásra futásidőben történő előkészítése és felhasználása.
#include <stdio.h> #define OSZLOP 6 #define SOR int arr[ OSZLOP ][ SOR ]; /* tömbdefiníció */ mainQ { int i, j; /* indexváltozók */ for { i = 0; i < OSZLOP; i++ ) for { j = 0; j < SOR; j++ ) arr{ i ][ j ] = i * j; } /* for */ for ( i = 0; i < OSZLOP; i++ ) { /* tömb felhasználása */ printf( "arr[ %d ][*}:\t", i ); for { j = 0; j < SOR; j++ ) printf ( "%5d", arrI 1 ]\ j ] ); } /* for */ printf ( "\n" }; } /* main */

77 51. példa Példa string beolvasására karakteres tömbbé
51. példa Példa string beolvasására karakteres tömbbé. Mire való és melyik a string vége (EOS) karakter? Hogyan adunk karaktertömbnek kezdeti értéket? #include <stdio.h>. char szoveg[ 100 ] = "Ez a kezdeti szoveg"; main() { int i, meret; char c; printf("'%s'\n", &szoveg[ 0 ]); printf( "Uss be egy uj szoveget ENTER-el lezarva: " ); for(i=0; (c = getchar()) != EOF && c != '\n'; i++ ) szoveg[ i ] = c; } /* for */ szoveg[ i ] = 0; /* EOS generalasa */ for(i = 0,meret = 0;szoveg[1] != 0;i++) meret++; printf( "Az uj szoveg hossza = %d\n", meret ); } /* main */

78 52. példa Példa karaktertömb egyszerű másolására
52. példa Példa karaktertömb egyszerű másolására. Figyeljük meg, hogy a karaktertömb neve az első elem címével egyezik meg!

79 53. példa Írj egy függvényt, ami egy egész tömböt kap paraméterül és lecseréli benne az elemeket az abszolút értékükre. A tömb kiírását szintén függvény végezze!

80 #include <stdio.h>
#define N 10 void tombabs(int tomb[], int meret) { int i; for(i=0; i<meret; i++) { if(tomb[i]<0) { tomb[i] = -tomb[i]; } void kiir(int tomb[], int meret) { printf(" %d", tomb[i]); putchar('\n');

81 int main() { int i, T[N], e=1; for(i=0; i<N; i++) { T[i]=e; e *= -2; } kiir(T, N); tombabs(T, N); return 0;

82 54. példa Írj egy függvényt, ami egy egész tömböt kap paraméterül és lecseréli benne az elemeket az abszolút értékükre. A tömb kiírását szintén függvény végezze!

83 #include <stdio.h>
#define N 10 void tombabs(int tomb[], int meret) { int i; for(i=0; i<meret; i++) { if(tomb[i]<0) { tomb[i] = -tomb[i]; } void kiir(int tomb[], int meret) { printf(" %d", tomb[i]); putchar('\n');

84 int main() { int i, T[N], e=1; for(i=0; i<N; i++) { T[i]=e; e *= -2; } kiir(T, N); tombabs(T, N); return 0;

85 55. példa Készíts egy 3x3-as mátrixot, töltsd fel elemekkel, majd írasd ki az elemeit sor illetve oszlopfolytonosan is!

86 #include <stdio.h>
#define N 3 int main() { int tomb[N][N]; int i, j; for(i=0; i<N; i++) { for(j=0; j<N; j++) { scanf("%d", &(tomb[i][j])); } printf("%d", tomb[i][j]); printf("%d", tomb[j][i]); return 0;

87 56. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le a fájlt.

88 #include <stdio.h>
int main() { FILE* fp = fopen("hw.txt","w"); /*megnyitom*/ fprintf(fp, "Hello World\n");/*használom*/ fflush(fp);/*ürítem a cashe-t*/ fclose(fp);/*lezárom*/ }

89 57. példa Írjunk programot, amely egy szamok.txt nevű fájlba lévő számokat kiolvassa és beteszi a kiolvasott számok 2-vel nagyobb tagját a kettovel.txt fájlba.

90 #include <stdio.h>
int main(){ FILE* be; FILE* ki; int tomb[80]; int i,c=0; be = fopen("szamok.txt","r"); if (be == NULL) return 1; while( c < 80){ fscanf(be,"%d",&i); if (feof(be)) break; tomb[c]=i; c++; }

91 fclose(be); ki = fopen("kettovel.txt","w"); if (ki == NULL) return 2; for( i = 0 ; i< c;i++){ if (tomb[i] % 2 == 0) fprintf(ki,"%d\t",tomb[i]); } fprintf(ki,"\n"); fclose(ki); return 0;

92 58. példa Írjunk programot, ami beolvas 10 számot és fordított sorrendben kiírja azokat.

93 #include <stdio.h>
#define MERET 10 int main(){ int szamok[MERET]; int c; for (c = 0 ; c<MERET ; c++){ printf("%d. szam : ", c+1); scanf("%d",&szamok[c]); /*lehetne*/ /*scanf("%d",szamok+c);/**/ /*is*/ } printf("A beirt szamok forditott sorrendben : \n"); for(c = MERET-1 ; c>=0 ; c--){ printf("%d\t",szamok[c]); printf("\n"); return 0;

94 59. példa Írjunk programot, ami beolvas egy nevet és kiírja.

95 #include <stdio.h>
int main(){ char nev[80]; printf("Neved : "); scanf("%s",&nev[0]); /*lehetne*/ /*scanf("%s",nev);/**/ /*is*/ printf("Hello %s !\n",nev); return 0; }

96 60. példa Írjunk programot, ami beolvassa egy dolgozat osztályzatait és közepes eredmény esetén kiírja, hogy ‘Tanuljon többet’, míg jeles esetén kiírja, hogy ‘Eleget készültél.’

97 #include <stdio.h>
int main(){ enum osztalyzatok {elegtelen, elegseges, kozepes, jo, jeles}; enum osztalyzatok jegy; printf("Osztályzat : "); scanf("%d",&jegy); if (jegy < 1 || jegy > 5) return 1; switch (jegy){ case elegtelen : case elegseges : case kozepes : printf("Tanulj többet ! \n"); break; case jo : case jeles: printf("Eleget készültél ! \n"); } return 0;

98 61. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti maximum kiválasztás szerint.

99 void csere( int tomb[], int i, int j )
{ int seged = tomb[ i ]; tomb[ i ] = tomb[ j ]; tomb[ j ] = seged; } void maxkival( int tomb[], int meret ) int j; for ( j = meret - 1; j > 0; --j ) int max = j, i; for ( i = 0; i < j; ++i ) if ( tomb[ i ] > tomb[ max ] ) max = i; csere( tomb, max, j );

100 62. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti minimum kiválasztás szerint.

101 void csere( int tomb[], int i, int j )
{ int seged = tomb[ i ]; tomb[ i ] = tomb[ j ]; tomb[ j ] = seged; } void minkival( int tomb[], int meret ) int j; for ( j = 0; j < meret - 1; ++j ) int min = j, i; for ( i = j + 1; i < meret; ++i ) if ( tomb[ i ] < tomb[ min ] ) min = i; csere( tomb, min, j );

102 63. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti beszúrásos rendezés alapján

103 void beszurasos( int tomb[], int meret )
{ int j; for ( j = 1; j < meret; ++j ) int kulcs = tomb[ j ], i = j - 1; while ( i >= 0 && tomb[ i ] > kulcs ) tomb[ i + 1 ] = tomb[ i ]; --i; } tomb[ i + 1 ] = kulcs;

104 64. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi buborék rendezés alapján.

105 void csere( int tomb[], int i, int j )
{ int seged = tomb[ i ]; tomb[ i ] = tomb[ j ]; tomb[ j ] = seged; } void buborek1( int tomb[], int meret ) int i, j; for ( i = meret - 1; i > 0; --i ) for ( j = 0; j < i; ++j ) if ( tomb[ j + 1 ] < tomb[ j ] ) csere( tomb, j, j + 1 );

106 #define HAMIS 0 #define IGAZ ( !HAMIS ) void csere( int tomb[], int i, int j ) { int seged = tomb[ i ]; tomb[ i ] = tomb[ j ]; tomb[ j ] = seged; } void buborek2( int tomb[], int meret ) int i, j, voltcsere = IGAZ; for ( i = meret - 1; i > 0 && voltcsere; --i ) voltcsere = HAMIS; for ( j = 0; j < i; ++j ) if ( tomb[ j + 1 ] < tomb[ j ] ) csere( tomb, j, j + 1 ); voltcsere = IGAZ;

107 65. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi Shell rendezés alapján.

108 void shell( int tomb[], int meret )
{ int lk[] = { 6, 3, 1 }; int lkindex; for ( lkindex = 0; lkindex < sizeof( lk ) / sizeof( int ); ++lkindex ) int lepeskoz = lk[ lkindex ]; int eltolas, j; for ( eltolas = 0; eltolas < lepeskoz; ++eltolas ) for ( j = lepeskoz + eltolas; j < meret; j += lepeskoz ) int i = j - lepeskoz; int kulcs = tomb[ j ]; while ( i >= 0 && tomb[ i ] > kulcs ) tomb[ i + lepeskoz ] = tomb[ i ]; i -= lepeskoz; } tomb[ i + lepeskoz ] = kulcs;

109 66. példa Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi Shell rendezés alapján.

110 void csere( int tomb[], int i, int j )
{ int seged = tomb[ i ]; tomb[ i ] = tomb[ j ]; tomb[ j ] = seged; } void gyors( int tomb[], int bal, int jobb ) if ( bal < jobb ) int also = bal, felso = jobb + 1, kulcs = tomb[ bal ]; for ( ; ; ) while ( ++also < felso && tomb[ also ] < kulcs ) ; while ( tomb[ --felso ] > kulcs ) if ( also >= felso ) break; csere( tomb, also, felso ); csere( tomb, felso, bal ); gyors( tomb, bal, felso - 1 ); gyors( tomb, felso + 1, jobb );

111 67. példa Írjunk olyan függvényt amely egy tömb elemei között lineárisan keres meg egy elemet.

112 int linearis( int tomb[], int meret, int ertek )
{ int i; for ( i = 0; i < meret && tomb[ i ] < ertek; ++i ) ; return i < meret && tomb[ i ] == ertek ? i : -1; }

113 68. példa Írjunk olyan függvényt amely egy tömb elemei között binárians keres meg egy elemet.

114 int binaris( int tomb[], int meret, int ertek )
{ int also = 0, felso = meret - 1; while ( also <= felso ) int kozepso = ( also + felso ) / 2; if ( tomb[ kozepso ] == ertek ) return kozepso; if ( tomb[ kozepso ] > ertek ) felso = kozepso - 1; else also = kozepso + 1; } return -1;

115 69. példa Írjunk olyan függvényt amely két tizedes tört összegét, különbségét, szorzatát és hányadosát kiszámolja és kiírja.

116 #include <stdio.h>
double osszead( double a, double b ) { return a + b; } double kivon( double a, double b ) return a - b; double szoroz( double a, double b ) return a * b; double oszt( double a, double b ) return a / b;

117 main() { double a, b, ( *muv )( double, double ); char op; scanf( "%lf%c%lf", &a, &op, &b ); switch( op ) case '+': muv = osszead; break; case '-': muv = kivon; case '*': muv = szoroz; case '/': muv = oszt; } printf( "%lf\n", muv( a, b ) );

118 További feladatok 1. Írj egy programot, ami kiírja, hogy "Helló Világ!" ! 2. Írj egy programot, ami kiírja egy általad választott vers első versszakát! 3. Írj egy programot, ami kiírja egy általad választott vers első négy versszakát, a versszakokat egy-egy üres sorral elválasztva! 4. Írj egy programot, ami bekér egy egész számot, majd kiírja azt! 5. Írj egy programot, ami bekér egy valós számot, majd kiírja azt! 6. Írj egy programot, ami bekér két egész számot, majd kiírja az összegüket! 7. Írj egy programot, ami bekér két egész számot, majd kiírja a különbségüket (elsőből a második)! 8. Írj egy programot, ami bekér két egész számot, majd kiírja a szorzatukat! 9. Írj egy programot, ami bekér két egész számot, majd kiírja az egészosztás szerinti hányadosukat (első per második)! 10. Írj egy programot, ami bekér két egész számot, majd kiírja az egészosztás maradékát (első per második)! 11. Írj egy programot, ami bekér két valós számot, majd kiírja az összegüket! 12. Írj egy programot, ami bekér két valós számot, majd kiírja a különbségüket (elsőből a második)!

119 13. Írj egy programot, ami bekér két valós számot, majd kiírja a szorzatukat!
14. Írj egy programot, ami bekér két valós számot, majd kiírja a hányadosukat (első per második)! 15. Írj egy programot, ami bekér két egész számot, majd kiírja a valós hányadosukat (első per második)! 16. Írj egy programot ami az oldalhosszból kiszámítja egy négyzet kerületét és területét! 17. Írj egy programot ami a két oldalhosszból kiszámítja egy téglalap kerületét és területét! 18. Írj egy programot ami a három oldalhosszból kiszámítja egy téglatest felszínét és térfogatát! 19. Írj egy programot ami az átló hosszából kiszámítja egy négyzet kerületét és területét! 20. Írj egy programot ami a sugárból kiszámítja egy kör kerületét és területét! 21. Írj egy programot ami három oldalhosszból kiszámítja egy háromszög kerületét és területét! 22. Írj egy programot ami a két adatból kiszámítja egy négyzet alapú "egyenes" gúla felszínét és térfogatát! 23. Írj egy programot ami a két adatból kiszámítja egy "egyenes" kúp felszínét és térfogatát! 24. Írj egy programot ami egy általad választott adatból kiszámítja egy tetraéder felszínét és térfogatát! 25. Írj egy programot ami egy általad választott adatból kiszámítja egy hexaéder felszínét és térfogatát!

120 26.Írj egy programot ami egy általad választott adatból kiszámítja egy oktaéder felszínét és térfogatát! 27. Írj egy programot ami egy általad választott adatból kiszámítja egy ikozaéder felszínét és térfogatát! 28. Írj egy programot ami egy általad választott adatból kiszámítja egy dodekaéder felszínét és térfogatát! 29. Írj egy programot ami kiszámítja, hogy egy egyenletes sebességgel egyenes vonalban haladó test mennyi idő alatt tesz meg egy adott útszakaszt! Az input a sebesség és az úthossz. 30. Írj egy programot ami kiszámítja, hogy egy egyenletes sebességgel egyenes vonalban haladó test mekkora utat tesz meg adott idő alatt! Az input a sebesség és az eltelt idő. 31. Írj egy programot ami kiszámítja, hogy egy adott utat adott idő alatt megtevő test mekkora átlagsebességgel halad! Az input a úthossz és az eltelt idő. 32. Írj egy programot ami kiszámítja, hogy egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test milyen távol lesz a kiindulási ponttól adott idő eltelte után! Az input a gyorsulás és az eltelt idő. 33. Írj egy programot ami kiszámítja, hogy egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test mennyi idő alatt tesz meg adott távolságot! Az input a gyorsulás és a megtett út. 34. Írj egy programot ami kiszámítja egy álló helyzetből egyenletesen gyorsuló, egyenes vonalban haladó test gyorsulását, ha az adott idő alatt adott távolságot tesz meg! Az input a megtett út és az eltelt idő. 35. Írj egy programot ami kiszámítja, hogy egy adott kezdősebességgel függőlegesen kilőtt test adott nehézségi gyorsulás (g=1,63 m/s^2) mellett mennyi idő alatt esik vissza a Hold felszínére? Az input a kezdősebesség. Feltételezhető, hogy a kezdősebesség nem elég nagy ahhoz, hogy a testre ható tömegvonzás érezhetően megváltozzon.

121 feladatok: egyszerű függvények - mindenféle vezérlés
36. Írj egy programot ami adott nehézségi gyorsulás (g=9,81 m/s^2) mellett a kilövési szög és a kezdősebesség alapján kiszámolja, hogy hol lesz a kilőtt test a felhasználó által megadott idő múlva. Számítsd ki azt is, hogy mikor és hol éri el a röppálya maximális magasságát. Nem kell számolnod a légellenállással és feltételezd, hogy a terep sík, és a megadott idő alatt a test még nem esik vissza a földre. feladatok: egyszerű függvények - mindenféle vezérlés if1. Kérj be egy számot, és írd ki, hogy páros, vagy páratlan! if2. Olvass be egy karaktert! Döntsd el és írd ki, hogy kisbetűt, nagybetűt, számot vagy egyéb karaktert olvastál-e be! if3. Kérj be három számot! Írd ki közülük a legnagyobbat! if4. Legyen x egy egész értékű változó, amely inicializáláskor az 5-öt kapja értékül. Egy if utasítás feltételében változtasd meg x értékét! Hogyan befolyásolja ez az értékeadás az if működését? if5: Írj egy programot ami bekéri egy dolgozat lehetséges maximális és aktuális pontszámát, majd kiírja, hogy a dolgozat sikeres vagy sikertelen volt! A dolgozat akkor sikeres, ha az aktuális pontszám legalább a maximális pontszám fele. if6: Írj egy programot ami egy jegyhez (osztályzathoz) megadja a szöveges értékelést, vagy kiírja, ha rossz értéket kapott! if7: Írj egy programot ami leosztályoz egy maximálisan 100 pontos dolgozatot az 50,65,80,90 ponthatárok szerint! A határérték a jobb jegyhez tartozik. Ha a pontszám negatív vagy száznál nagyobb, akkor írja ki, hogy hibás az adat! if8: Írj egy programot, ami egy évszámról eldönti, hogy szökőév-e!

122 f9: Írj egy programot ami a hónap sorszáma alapján kiírja a hónap nevét! if10: Írj egy programot, ami bekér egy N számot, majd kiírja egy általad választott vers első 12 sorát, kihagyva az első N sort. Ha több versszakot kell kiírni, akkor két-két versszak sorai között legyen egy-egy üres sor is. sw1. Írj egyszerű számológépet a switch utasítás segítségével! Olvass be két egész számot, és az őket elválasztó műveleti jelet, és az eredményt irasd ki! Vigyázz arra, hogy 0-val nem lehet osztani! Szükség esetén erről tájékoztasd a felhasználót! sw2: Írj egy programot, ami bekéri a sakktábla egy mezőjének koordinátáját, majd megmondja, hogy a normál felállítás szerint milyen bábú van az adott helyen! cikl1: Írj programot, amely bekér egy n egész számot, majd kiszámítja és kiírja 'n!' értékét! cikl2: Írj programot, ami kiírja az első 1000 szám közül a prímeket! cikl3: Olvass be a 0 végjelig pozitív egész számokat! Írd ki a beolvasott számok összegét és átlagát! cikl4: Írj végtelen ciklust a for, a while és a do-while utasítások segítségével! cikl5: Írj programot, amelyben a felhasználónak egy, a program által meghatározott számot kell kitalálnia! A felhasználó tippjét a program vagy elfogadja, vagy megmondja, hogy a gondolt szám annál kisebb vagy nagyobb! cikl6: Írj egy programot ami bekér egy n nemnegatív számot, majd 1-től n-ig kiírja a 1.) számok 2.) páros számok 3.) páratlan számok négyzetét! cikl7: Írj egy programot ami bekér egy n nemnegatív számot, majd kiírja a Fibonacci-sorozat n. elemét! A Fibonacci-sorozat nulladik és első eleme 1, a többi pedig az őt megelőző két elem összege cikl8: Írj egy programot ami kiírja 1-től 12-ig az n! értékét! Először az előző programot felhasználva két egymásba ágyazott ciklussal csináld meg, majd egyszerűsítsd úgy, hogy csak egy ciklus maradjon benne!

123 Bonyolultabb, összetettebb mintapéldák
1. Feladat: Írjon olyan programot, amely állampolgárok személyazonosítására szolgál. A személyazonosító 11 számjegyből álljon. Az első számjegy a nemet jelöli: az 1997 január 1 és december 31-e között született embereknél a férfiaké 1-es, a nőké 2-es. Míg az 1999 december 31-e után született embereknél a férfiaké 3-as, a nőké 4-es. A 2-7 számjegy a születési évet, hónapot és napot jelöli. A 8-10 az azonos napon születettek sorszáma, míg 11-es szám egy ellenörző szám. - Kérjen be egy személyazonosító számot! - Írassa ki a képernyőre, hogy az adott ember férfi-e vagy nő! - Írassa ki a képernyőre az adott ember születési idejét. - Kérjen be még egy személyazonosító számot és számolja ki a két ember közötti napok eltérését!

124 2. Feladat: Magyarországon 1957 óta lehet ötös lottót játszani. A játék lényege a következő: a lottószelvényeken 90 szám közül 5 számot kell a fogadónak megjelölnie. Ha ezek közül 2 vagy annál több megegyezik a kisorsolt számokkal, akkor nyer. Az évek során egyre többen hódoltakennek a szerencsejátéknak és a nyeremények is egyre nőttek. Adottak a lottosz.dat szöveges állományban a év 51 hetének ötös lottó számai. Az első sorában az első héten húzott számok vannak, szóközzel elválasztva, a második sorban a második hét lottószámai vannak stb. Például: ...

125 A lottószámok minden sorban emelkedő számsorrendben szerepelnek.
Az állományból kimaradtak az 52. hét lottószámai. Ezek a következők voltak: Készítsen programot a következő feladatok megoldására! 1. Kérje be a felhasználótól az 52. hét megadott lottószámait! 2. A program rendezze a bekért lottószámokat emelkedő sorrendbe! A rendezett számokat írja ki a képernyőre! 3. Kérjen be a felhasználótól egy egész számot 1-51 között! A bekért adatot nem kell ellenőrizni! 4. Írja ki a képernyőre a bekért számnak megfelelő sorszámú hét lottószámait, a lottosz.dat állományban lévő adatok alapján! 5. A lottosz.dat állományból beolvasott adatok alapján döntse el, hogy volt-e olyan szám, amit egyszer sem húztak ki az 51 hét alatt! A döntés eredményét (Van/Nincs) írja ki a képernyőre! 6. A lottosz.dat állományban lévő adatok alapján állapítsa meg, hogy hányszor volt páratlan szám a kihúzott lottószámok között! Az eredményt a képernyőre írja ki!

126 7. Fűzze hozzá a lottosz.dat állományból beolvasott lottószámok után a felhasználótól
bekért, és rendezett 52. hét lottószámait, majd írja ki az összes lottószámot a lotto52.ki szöveges fájlba! A fájlban egy sorba egy hét lottószámai kerüljenek, szóközzel elválasztva egymástól! 8. Adja meg, hogy az 1-90 közötti prímszámokból melyiket nem húzták ki egyszer sem az elmúlt évben. A feladat megoldása során az itt megadott prímszámokat felhasználhatja vagy előállíthatja! (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89.)

127 2. Feladat: Magyarországon 1957 óta lehet ötös lottót játszani. A játék lényege a következő: a lottószelvényeken 90 szám közül 5 számot kell a fogadónak megjelölnie. Ha ezek közül 2 vagy annál több megegyezik a kisorsolt számokkal, akkor nyer. Az évek során egyre többen hódoltakennek a szerencsejátéknak és a nyeremények is egyre nőttek. Adottak a lottosz.dat szöveges állományban a év 51 hetének ötös lottó számai. Az első sorában az első héten húzott számok vannak, szóközzel elválasztva, a második sorban a második hét lottószámai vannak stb. Például: ...

128 3. Feladat: Készítsen programot, amely beolvas a billentyűzetről két szót (külön-külön változóba), majd a képernyőre írja a két szóból egymás mellé írással képezhető, egymástól különböző „összetett” szavakat! Sem a bemeneti, sem a kimeneti szónak, illetve szavaknak nem kell feltétlenül értelmesnek lenniük. A feladat során az azonos hangot jelölő kis és nagybetűket különböző betűnek vesszük. 4. Feladat: Egy héten keresztül minden nap délben megmértük a hőmérsékletet az udvaron. Készítsen programot, ami a mért értékeket beolvassa (hétfőtől kezdve vasárnapig bezárólag) és tárolja a hom tömbben! Írassa a képernyőre a hét napjainak nevét a hom-ban tárolt, a hét megfelelő napján mért értékek alapján növekvő sorrendben! (Vagyis először a leghidegebb, …, végül a legmelegebb nap nevét írassuk ki!)

129 5. Feladat: Egy derékszögű koordinátarendszerben a pontok helyzetét egy koordináta párral adjuk meg.(Pl.: A(xa,ya) ) Két pont, legyenek ezek A(xa, ya) és B(xb,yb), távolságát a t = négyzetgyök((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb)) képlettel határozzuk meg. Origónak az O(0,0) pontot nevezzük. Készítsen programot, amely billentyűzetről beolvassa, és egy tömbben tárolja 10 pont adatait,majd meghatározza, hogy mennyi az adott pontokat lefedő, a koordinátarendszer tengelyeivel párhuzamos oldalú, minimális területű téglalap területe!

130 6. Feladat: Készítsen programot, amely beolvassa egy nullára redukált másodfokú egyenlet valós együtthatóit, és a megoldóképlet alapján meghatározza a valós gyökök számát! A meghatározás alapján a program a képernyőn jelenítse meg a „Nincs valós gyök!”, „Egy valós gyök van.”, „Két valós gyök van.” szövegek közül a megfelelőt. (M j: A valós gyökök száma nulla, ha (b*b-4*a*c) < 0. A valós gyökök száma egy, ha (b*b-4*a*c) = 0. A valós gyökök száma kettő, ha (b*b-4*a*c) > 0

131 7. Feladat: A fehérjék óriás molekulák, amelyeknek egy része az élő szervezetekben végbemenő folyamatokat katalizálják. Egy-egy fehérje aminosavak százaiból épül fel, melyek láncszerűen kapcsolódnak egymáshoz. A természetben a fehérjék fajtája több millió. Minden fehérje húszféle aminosav különböző mennyiségű és sorrendű összekapcsolódásával épül fel. Az alábbi táblázat tartalmazza az aminosavak legfontosabb adatait, a megnevezéseket és az őket alkotó atomok számát (az aminosavak mindegyike tartalmaz szenet, hidrogént, oxigént és nitrogént, néhányban kén is van):

132

133 1. Határozza meg az aminosavak relatív molekulatömegét, ha a szén atomtömege 12, a hidrogéné 1, az oxigéné 16, a nitrogéné 14 és a kén atomtömege 32! Például a Glicin esetén a relatív molekulatömeg 2·12 + 5·1 + 2·16 + 1·14 + 0·32 = 75. A következő feladatok eredményeit írja képernyőre, illetve az eredmeny.txt fájlba! A kiírást a feladat sorszámának feltüntetésével kezdje (például: 4. feladat)! 2. Rendezze növekvő sorrendbe az aminosavakat a relatív molekulatömeg szerint! Írja ki a képernyőre és az eredmeny.txt fájlba az aminosavak hárombetűs azonosítóját és a molekulatömeget! Az azonosítót és hozzátartozó molekulatömeget egy sorba, szóközzel elválasztva írja ki

134 8. Feladat: A FAT fájlrendszer fontos eleme, hogy az adatokat ún. clusterekben (klászter) tárolja el. A cluster mérete 512 Bájt (= 1 szektor) és kettő valamilyen hatványának, szorzata. Általában KiloBájtban adják meg. A cluster lehet pl. 4 szektor (=4*512 Bájt= 2 KB), 8, 16 stb., de nem lehet 3, 5, 6 stb. szektoros. A FAT tehát minden fájt feldarabol cluster méretű szeletekre, eltárolja, majd bejegyzi egy táblázatba, hogy hova is tette a lemezen. Ha a fájl csak több clusterben fér el, azokat nem feltétlenül egymás mellett helyezi el. A táblázatból bármikor vissza tudja állítani az eredeti sorrendet. Egy clusterbe egyidejűleg csak egy fájl írhat. Ha nem tölti ki teljesen, akkor az a terület más célra nem használható. Egy 100 bájtos fájl is lefoglal tehát 2 KB-ot, ha ekkora a cluster. Készítsen programot, mely megadja a cluster mérete, illetve a – maximum 15 – fájl mérete alapján az általuk lefoglalt terület méretét! A fájlok mérete bájtban vanmegadva. Az egyszerűség kedvéért a legkisebb cluster méret 1 KB legyen.

135 9. Feladat: Egy középiskolai végzős osztályba maximum 35 fő jár. Az érettségi tantárgyak négy kötelező valamint egy szabadon választott tantárgy. Készítsen programot, amely beolvassa egy szövegfájlból (vizsga.txt) a diákok neveit, szabadon választott érettségi vizsgatantárgyaikat és meghatározza minden fakultatívvizsgatárgyhoz az érettségizők névsorát. Az eredményt a képernyőre írassa ki! A szövegfájlban minden diák neve és tantárgya egy sorban pontosvesszővel (;) elválasztva szerepel. A fájl annyi sorból áll, amennyi diák szerepel benne.

136 10. Feladat: Napjainkban a kommunikáció egy elterjedt formája az SMS-küldés. Az SMS-küldésre alkalmas telefonok prediktív szövegbevitellel segítik az üzenetek megírását. Ennek használatakor a szavakat úgy tudjuk beírni, hogy a telefon számbillentyűjén található betűknek megfelelő számokat kell beírnunk. A számok és betűk megfeleltetését az alábbi táblázat mutatja:

137 Ha meg szeretnénk jeleníteni az „ablak” szót, akkor a kódot kell beírnunk. A telefon a tárolt szótára alapján a kódhoz kikeresi a megfelelő szót. Ha több szóhoz is azonos kód tartozik, akkor a kódhoz tartozó összes szót felkínálja választásra. 1. Kérjen be a felhasználótól egy betűt, és adja meg, hogy milyen kód (szám) tartozik hozzá! Az eredményt írassa a képernyőre! 2. Kérjen be a felhasználótól egy szót, és határozza meg, hogy milyen számsorral lehet ezt a telefonba bevinni! Az eredményt írassa a képernyőre! 3. Olvassa be a szavak.txt fájlból a szavakat, és a továbbiakban azokkal dolgozzon! 4. Határozza meg és írassa a képernyőre, hogy melyik a leghosszabb tárolt szó! Amennyiben több azonos hosszúságú van, elegendő csak az egyiket megjeleníteni. Adja meg ennek a szónak a hosszát is! 5. Határozza meg és írassa a képernyőre, hogy hány rövid szó található a fájlban! Rövid szónak tekintjük a legfeljebb 5 karakterből álló szavakat. 6. Írassa a kodok.txt állományba a szavak.txt fájlban található szavaknak megfelelő számkódokat! Minden szónak feleljen meg egy számkód, és minden számkód külön sorba kerüljön!

138 7. Kérjen be a felhasználótól egy számsort, és határozza meg, hogy melyik szó tartozhat hozzá! Amennyiben több szó is megfelelő, akkor mindegyiket írassa ki! 8. Határozza meg, hogy a szógyűjteményben mely kódokhoz tartozik több szó is! Írassa ki a képernyőre ezeket a szavakat a kódjukkal együtt egymás mellé az alábbi mintának megfelelően (a szavak sorrendje ettől eltérhet): baj : 225; bal : 225; arc : 272; apa : 272; eb : 32; fa : 32; dal : 325; fal : 325; eltesz : ; elvesz : ; fojt : 3658; folt : 3658; ... 9. Határozza meg, hogy melyik kódnak megfelelő szóból van a legtöbb! Írassa ki a képernyőre a kódot, és a kódhoz tartozó összes tárolt szót! Ha több kódhoz is azonos számú szó tartozik, akkor elegendő ezen kódok közül csak az egyikkel foglalkozni.

139 11. Feladat: Készítsen – tetszőleges algoritmusleíró eszköz használatával – algoritmust, amely meghatározza két pozitív egész szám legkisebb közös többszörösét! 12. Feladat: amely visszaadja a paraméterében megadott pozitív egész számnál nem kisebb, hozzá legközelebb eső négyzetszámot!

140 13. Feladat: Készítsen két különböző, tetszőlegesen választott programozási nyelven programot, amely eldönti, hogy egy 1-nél nagyobb egész szám prím-e, vagy sem! 14. Feladat: programot, amely meghatározza egy pozitív egész szám osztóinak az összegét!

141 15. Feladat: Készítsen – tetszőleges algoritmusleíró eszköz használatával – algoritmust, amely átvált egy tetszőleges, 2 és 16 közötti számrendszerben felírt számot tízes számrendszerbe! Határozza meg a be- és kimeneti paramétereket, az elő illetve az utófeltételt 16. Feladat: Készítsen tetszőlegesen választott programozási nyelven programot, amely meghatározza, hogy egy szöveg hány szótagból áll!

142 17. Feladat: Ismerjük egy labdarúgó csapat bajnoki meccseinek végeredményeit, pl. 5:3, 0:1 stb. Készítsen két különböző, tetszőlegesen választott programozási nyelven programot, amely meghatározza, hogy hány mérkőzés hozta valamely csapat legalább 3 gólos győzelmét! 18. Feladat: Készítsen algoritmust, amely meghatározza, hogy hány darab olyan négyjegyű szám van, amelyikben az ezres és a százas számjegyek összege páros szám! Az Ön által tanult algoritmus leíró nyelven készítse el ennek a feladatnak a megoldását!

143 19. Feladat: Írja át hatékonyabbra a következő eljárást! i:=1 Ciklus amíg i<=N és T[i]<>50 i:=i+1 Ciklus vége Ha i<=N akkor ki: ”volt 50”

144 20. Feladat: Készítse el az alábbi feladat specifikációját, programtervét és megoldó algoritmusát az Ön által választott eszközzel! A feladat egy integrál számítás közelítő téglalappal. Adott egy F(x) függvény. Számolja ki e függvény alatti területet a Z[1,20] intervallumban közelítő téglalapok módszerével úgy, hogy az intervallumot azonos részekre bontja, és minden intervallumrészt megszoroz az ezen részben felvett legkisebb függvényértékkel. A függvényt közelítő téglalap egyik oldala a rögzített intervallumrész, a másik oldal az ott felvett legkisebb függvényérték lesz, és ezeket szorozza össze minden intervallumrésznél. Ezek összege elég durván, de közelíti a függvény alatti területet, az un. határozott integrált.


Letölteni ppt "Borland C/C++ mintapéldák"

Hasonló előadás


Google Hirdetések