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

Borland C/C++ mintapéldák

  • Upload
    page

  • View
    56

  • Download
    2

Embed Size (px)

DESCRIPTION

Borland C/C++ mintapéldák. 1. feladat. ‘Ez aztán nem semmi’ szöveg kiiratása a képernyőre: Megoldás: #include void main (void) { Printf(”Ez aztán nem semmi!\n”); }. 2. feladat. Példa a változók deklarálására és kezdeti értékadásra. Megoldás: #include - PowerPoint PPT Presentation

Citation preview

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

Borland C/C++ mintapéldák

Page 2: Borland C/C++ mintapéldák

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”);

}

Page 3: Borland C/C++ mintapéldák

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); }

Page 4: Borland C/C++ mintapéldák

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); }

Page 5: Borland C/C++ mintapéldák

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 printf(„”a=%6d, b=%6d, c=%6d”,a,b.c); 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); }

Page 6: Borland C/C++ mintapéldák

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);

}

Page 7: Borland C/C++ mintapéldák

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; while(x!=x+1) { y=y+1.1; printf(„Adatábrázolás double esetén = °e\n”,y); }

}

Page 8: Borland C/C++ mintapéldák

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); }

Page 9: Borland C/C++ mintapéldák

8. példaPé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 *./

Page 10: Borland C/C++ mintapéldák

9. példaPé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/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" -4/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" -3/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" -2/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" -1/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" -0/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 1/3 + 1.0 is %f\n", i/j + x ); i++;

Page 11: Borland C/C++ mintapéldák

9. Példa folytatása

printf (" 1/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 2/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 3/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 4/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 5/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 6/3 + 1.0 is %f\n", i/j + x ); i++;

printf (" 7/3 + 1.0 is %f\n", i/j + x ); i++;

Page 12: Borland C/C++ mintapéldák

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 *./

Page 13: Borland C/C++ mintapéldák

10. példaPé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 */

Page 14: Borland C/C++ mintapéldák

11. példaPélda balértékként nem használható objektumokra, mivel a program

szintaktikai hibákat tartalmaz nem futtatható. #include <stdio.h>

#define TUCAT 12

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 */

Page 15: Borland C/C++ mintapéldák

12. példaPé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 */

Page 16: Borland C/C++ mintapéldák

Megoldás II.

#include <stdio.h>

main()

{

int i, x;

double y;

x =5;

for ( i = 1, y = 1; i <= x; i++ ) y = y * i;

printf ( "%d faktorialisa = %f\n",x,y);

} /*. main */

Page 17: Borland C/C++ mintapéldák

15. példaPélda a while () ciklus használatára.

#include <stdio.h>

main()

{

int p = 10;

while ( p ) printf ("p = %d\n", p --);

} /* main */

Page 18: Borland C/C++ mintapéldák

16. példaEgy ú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; } / * whilw */ printf ("Double-nal a legkisebb =%e\n", aregi ); } /* main */

Page 19: Borland C/C++ mintapéldák

17. példaEgy újabb példa a while ciklusra. Az ábrázolási pontosságszemlé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 */

Page 20: Borland C/C++ mintapéldák

18. példaPé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 < 10000 ); printf( "\n Befejeztem. \n" );

} /* main */

Page 21: Borland C/C++ mintapéldák

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" }; } /* if */ else {

Page 22: Borland C/C++ mintapéldák

19. Feladat folytatása

if ( c == 'c' )

{

printf( "A c parancs vegrehajtva\n" );

} /* if */

else

{

printf( "Illegalis parancs: '%c'\n", c );

} /* else */

} /* else */

} /* else */

} /* main */

Page 23: Borland C/C++ mintapéldák

20. példaAz 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" ); break;

default: printf( "Illegalis parancs\n" ); }

) /* main */

Page 24: Borland C/C++ mintapéldák

21. példaAz 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" ); break;

case 'c*: case 'C': printf( "Ac parancs vegrehajtva\n" ); break;

default : printf( "Illegalis parancs\n" ); } } /* main */

Page 25: Borland C/C++ mintapéldák

22. példaPé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 */

Page 26: Borland C/C++ mintapéldák

23. példaPé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 */

Page 27: Borland C/C++ mintapéldák

24. példaPé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 */

Page 28: Borland C/C++ mintapéldák

25. példaPé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 */

Page 29: Borland C/C++ mintapéldák

26. példaPélda integer konverziójára ASCII kódsorozattá. Ez a programis tartalmaz olyan utasítást , zárójeleket, amelyek csak azolvasható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 );

Page 30: Borland C/C++ mintapéldák

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 */

Page 31: Borland C/C++ mintapéldák

27. példaPélda függvénydefinícióra és függvényhívásra. Miért nem kelldeklará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 */

Page 32: Borland C/C++ mintapéldák

28. példaPé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++ )

{

ered = power( alap, kitevo );

printf( "%d a(z) %d.-on: %d\n", alap,kitevo,ered );

} /* for */

printf( "0 hatvanyai\n" );

Page 33: Borland C/C++ mintapéldák

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++ )

{

ered = power( alap, kitevo );

printf( "%d a(z) %d.-on: %d\n"#alap,kitevo,ered );

} /* for */

kitevo = -1;

alap = 5;

ered = power( alap, kitevo );

} /* main */

Page 34: Borland C/C++ mintapéldák

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 */

Page 35: Borland C/C++ mintapéldák

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.

Page 36: Borland C/C++ mintapéldák

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);

}

Page 37: Borland C/C++ mintapéldák

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

Page 38: Borland C/C++ mintapéldák

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) );

}

Page 39: Borland C/C++ mintapéldák

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

Page 40: Borland C/C++ mintapéldák

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));

}

Page 41: Borland C/C++ mintapéldák

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.

Page 42: Borland C/C++ mintapéldák

32. példa megoldása #include <stdio.h> int main() { int egesz = 13; float valos = 0.1234567890123456789; 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; }

Page 43: Borland C/C++ mintapéldák

33. példa

Példa a lokális és globális változókra.

Figyelje meg az eredményt.

Page 44: Borland C/C++ mintapéldák

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);

scanf("%d", &i);

printf("lokalis == %d\n", fuggveny(i));

printf("globalis == %d\n", globalis);

scanf("%d", &i);

printf("lokalis == %d\n", fuggveny(i));

printf("globalis == %d\n", globalis);

return 0;

}

Page 45: Borland C/C++ mintapéldák

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.

Page 46: Borland C/C++ mintapéldák

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;

}

Page 47: Borland C/C++ mintapéldák

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.

Page 48: Borland C/C++ mintapéldák

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;

}

Page 49: Borland C/C++ mintapéldák

37. példa

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

Page 50: Borland C/C++ mintapéldák

#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");

}

Page 51: Borland C/C++ mintapéldák

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.

Page 52: Borland C/C++ mintapéldák

#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;

}

Page 53: Borland C/C++ mintapéldák

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.

.

Page 54: Borland C/C++ mintapéldák

#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;

}

Page 55: Borland C/C++ mintapéldák

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.

.

Page 56: Borland C/C++ mintapéldák

#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;

}

Page 57: Borland C/C++ mintapéldák

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.

Page 58: Borland C/C++ mintapéldák

#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);

}

Page 59: Borland C/C++ mintapéldák

42. példa

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

Page 60: Borland C/C++ mintapéldák

#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;

}

Page 61: Borland C/C++ mintapéldák

43. példa

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

Page 62: Borland C/C++ mintapéldák

#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;

}

Page 63: Borland C/C++ mintapéldák

44. példa

Definiálj egy felsorolástípust a hét napjainak tárolására, majd írasd ki a

napok értékeit!

Page 64: Borland C/C++ mintapéldák

#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;

}

Page 65: Borland C/C++ mintapéldák

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.

Page 66: Borland C/C++ mintapéldák

#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"); }

Page 67: Borland C/C++ mintapéldák

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"); break; case sarga : printf("A sárga alma is nagyon finom!\n"); break; default : printf("Nem ismerek ilyen színű almát!\n"); } break; default: printf("A hét csak 7 napból áll!\n"); break; } return 0;

}

Page 68: Borland C/C++ mintapéldák

46. példa

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

Page 69: Borland C/C++ mintapéldák

#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;

}

for(i=0; i<M; i++) {

printf(" %d", tomb[i]);

}

return 0;

}

Page 70: Borland C/C++ mintapéldák

47. példa

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

Page 71: Borland C/C++ mintapéldák

#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;

}

Page 72: Borland C/C++ mintapéldák

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!

Page 73: Borland C/C++ mintapéldák

#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;

}

Page 74: Borland C/C++ mintapéldák

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!

Page 75: Borland C/C++ mintapéldák

#include <stdio.h>

#include <string.h>

int main()

{

char str[20];

strcpy(str, "Hello Vilag!");

printf("%s", str);

str[5]='\0';

printf("%s", str);

return 0;

}

Page 76: Borland C/C++ mintapéldák

50. példaPé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 8

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" };

} /* for */

} /* main */

Page 77: Borland C/C++ mintapéldák

51. példaPé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 */

Page 78: Borland C/C++ mintapéldák

52. példaPélda karaktertömb egyszerű másolására. Figyeljük meg,

hogy a karaktertömb neve az első elem címével egyezik meg!

#include <stdio.h>

char tombbol [] = "Ezt a tombot masoljuk";Char tombbe[ 20 ];

main (){int i;

i = 0;while ( tombbol [ i ] != '\0' ){tombbe [ i } = tombbol [ i ];i++;

} /* while */tombbe[ i ] = '\0'; /* EOS generalasa */printf( "A masolando string: %s\n", tombbol );printf( "A masolt string : %s\n"; tombbe );

} /* main */

Page 79: Borland C/C++ mintapéldák

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!

Page 80: Borland C/C++ mintapéldák

#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) { int i; for(i=0; i<meret; i++) { printf(" %d", tomb[i]); } putchar('\n');

}

Page 81: Borland C/C++ mintapéldák

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);

kiir(T, N);

return 0;

}

Page 82: Borland C/C++ mintapéldák

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!

Page 83: Borland C/C++ mintapéldák

#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) { int i; for(i=0; i<meret; i++) { printf(" %d", tomb[i]); } putchar('\n');

}

Page 84: Borland C/C++ mintapéldák

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);

kiir(T, N);

return 0;

}

Page 85: Borland C/C++ mintapéldák

55. példa

Készíts egy 3x3-as mátrixot, töltsd fel elemekkel, majd

írasd ki az elemeit sor illetve oszlopfolytonosan is!

Page 86: Borland C/C++ mintapéldák

#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])); } } for(i=0; i<N; i++) { for(j=0; j<N; j++) { printf("%d", tomb[i][j]); } } for(i=0; i<N; i++) { for(j=0; j<N; j++) { printf("%d", tomb[j][i]); } } return 0; }

Page 87: Borland C/C++ mintapéldák

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.

Page 88: Borland C/C++ mintapéldák

#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*/

}

Page 89: Borland C/C++ mintapéldák

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.

Page 90: Borland C/C++ mintapéldák

#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++;

}

Page 91: Borland C/C++ mintapéldák

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;

}

Page 92: Borland C/C++ mintapéldák

58. példa

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

Page 93: Borland C/C++ mintapéldák

#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;

}

Page 94: Borland C/C++ mintapéldák

59. példa

Írjunk programot, ami beolvas egy nevet és kiírja.

Page 95: Borland C/C++ mintapéldák

#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;

}

Page 96: Borland C/C++ mintapéldák

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.’

Page 97: Borland C/C++ mintapéldák

#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");

break;

}

• return 0;

• }

Page 98: Borland C/C++ mintapéldák

61. példa

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

Page 99: Borland C/C++ mintapéldák

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 );

}

}

Page 100: Borland C/C++ mintapéldák

62. példa

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

Page 101: Borland C/C++ mintapéldák

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 );

}

}

Page 102: Borland C/C++ mintapéldák

63. példa

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

Page 103: Borland C/C++ mintapéldák

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;

}

}

Page 104: Borland C/C++ mintapéldák

64. példa

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

Page 105: Borland C/C++ mintapéldák

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 );

}

Page 106: Borland C/C++ mintapéldák

#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;

}

}

}

Page 107: Borland C/C++ mintapéldák

65. példa

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

Page 108: Borland C/C++ mintapéldák

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; } } }

Page 109: Borland C/C++ mintapéldák

66. példa

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

Page 110: Borland C/C++ mintapéldák

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 );

}

}

Page 111: Borland C/C++ mintapéldák

67. példa

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

Page 112: Borland C/C++ mintapéldák

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;

}

Page 113: Borland C/C++ mintapéldák

68. példa

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

Page 114: Borland C/C++ mintapéldák

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;

}

Page 115: Borland C/C++ mintapéldák

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.

Page 116: Borland C/C++ mintapéldák

• #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;

• }

Page 117: Borland C/C++ mintapéldák

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; break; case '*': muv = szoroz; break; case '/': muv = oszt; break; } printf( "%lf\n", muv( a, b ) ); }

Page 118: Borland C/C++ mintapéldák

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)!

Page 119: Borland C/C++ mintapéldák

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!

Page 120: Borland C/C++ mintapéldák

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.

Page 121: Borland C/C++ mintapéldák

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!

Page 122: Borland C/C++ mintapéldák

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!

Page 123: Borland C/C++ mintapéldák

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 1999. 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!

Page 124: Borland C/C++ mintapéldák

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 2003. é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: 37 42 44 61 62

18 42 54 83 89

...

9 20 21 59 68

Page 125: Borland C/C++ mintapéldák

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: 89 24 34 11 64. 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!

Page 126: Borland C/C++ mintapéldák

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.)

Page 127: Borland C/C++ mintapéldák

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 2003. é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: 37 42 44 61 62

18 42 54 83 89

...

9 20 21 59 68

Page 128: Borland C/C++ mintapéldák

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!)

Page 129: Borland C/C++ mintapéldák

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!

Page 130: Borland C/C++ mintapéldák

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

Page 131: Borland C/C++ mintapéldák

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):

Page 132: Borland C/C++ mintapéldák
Page 133: Borland C/C++ mintapéldák

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

Page 134: Borland C/C++ mintapéldák

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.

Page 135: Borland C/C++ mintapéldák

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.

Page 136: Borland C/C++ mintapéldák

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:

Page 137: Borland C/C++ mintapéldák

Ha meg szeretnénk jeleníteni az „ablak” szót, akkor a 22525 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!

Page 138: Borland C/C++ mintapéldák

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 : 358379; elvesz : 358379; 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.

Page 139: Borland C/C++ mintapéldák

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:

Készítsen – tetszőleges algoritmusleíró eszköz használatával – algoritmust,

amely visszaadja a paraméterében megadott pozitív egész számnál nem

kisebb, hozzá legközelebb eső négyzetszámot!

Page 140: Borland C/C++ mintapéldák

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:

Készítsen két különböző, tetszőlegesen választott programozási nyelven

programot, amely meghatározza egy pozitív egész szám osztóinak az

összegét!

Page 141: Borland C/C++ mintapéldák

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!

Page 142: Borland C/C++ mintapéldák

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!

Page 143: Borland C/C++ mintapéldák

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”

Page 144: Borland C/C++ mintapéldák

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.