Borland C/C++ mintapéldák tömbökre

60
Borland C/C++ mintapéldák tömbökre

description

Borland C/C++ mintapéldák tömbökre. 1. 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. #include #define N 10 #define M 10 int main() { int tomb[N]; int i; for(i=0; i

Transcript of Borland C/C++ mintapéldák tömbökre

Page 1: Borland C/C++ mintapéldák tömbökre

Borland C/C++ mintapéldáktömbökre

Page 2: Borland C/C++ mintapéldák tömbökre

1. 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 3: Borland C/C++ mintapéldák tömbökre

#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 4: Borland C/C++ mintapéldák tömbökre

2. példa

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

Page 5: Borland C/C++ mintapéldák tömbökre

#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 6: Borland C/C++ mintapéldák tömbökre

3. példa

Írjunk programot, amely egy integer típusú tömbből kiválasztja a legkisebb elemet

Page 7: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>

void main(){

//a egy 10 elemû,integer tömb,inicializálva.int a[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };int i, min;

min = a[0];for(i=0; i<10; i++){

// Ha az aktuális minimum nagyobb a

// tömbelemnél

if( min > a[i] ) min = a[i] ;

}printf("\nA legkisebb elem = %2d",min);

}

Page 8: Borland C/C++ mintapéldák tömbökre

4. példa

Írjunk programot, amely egy integer típusú tömbből kiválasztja a legnagyobb elemét.

Page 9: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>

void main(){

//a egy 10 elemû,integer tömb,inicializálva.int a[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };int i, max;

max = a[0];for(i=0; i<10; i++){

// Ha az aktuális minimum nagyobb a

// tömbelemnél

if( max < a[i] ) max = a[i] ;

}printf("\nA legnagyobb elem = %2d",min);

}

Page 10: Borland C/C++ mintapéldák tömbökre

5. példa

Írjunk programot, amely két double típusú tömbbe beolvas értékeket és utána összeadja a tömbök elemeit elemhelyesen.

Page 11: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>#include <conio.h>main(){

double a[3][3], b[3][3], c[3][3];int i, j;

for(i=0; i<3; i++) // Beolvasás az a mátrixba{

for(j=0; j<3; j++){

printf("A[%d][%d] = ",i,j) ;

scanf("%lf",&a[i][j]) ;}

}printf("\n-------------------------------\n\n");

Page 12: Borland C/C++ mintapéldák tömbökre

for(i=0; i<3; i++) // Beolvasás a b mátrixba{

for(j=0; j<3; j++){

printf("B[%d][%d] = ",i,j) ;

scanf("%lf",&b[i][j]) ;}

}printf("\n-------------------------------\n\n");

for(i=0; i<3; i++) // A c = a + b képzése{

for(j=0; j<3; j++)c[i][j] = a[i][j] + b[i][j];

}

for(i=0; i<3; i++) // A c mátrix kiiratása{

for(j=0; j<3; j++)printf("%8.2lf%c",

c[i][j],( ((j+1)%3 == 0) '\n' : ' ') );

}getch();

}

Page 13: Borland C/C++ mintapéldák tömbökre

6. 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 14: Borland C/C++ mintapéldák tömbökre

#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 15: Borland C/C++ mintapéldák tömbökre

7. 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 16: Borland C/C++ mintapéldák tömbökre

#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 17: Borland C/C++ mintapéldák tömbökre

8. 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 18: Borland C/C++ mintapéldák tömbökre

9. 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 19: Borland C/C++ mintapéldák tömbökre

10. 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 20: Borland C/C++ mintapéldák tömbökre

11. 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 21: Borland C/C++ mintapéldák tömbökre

#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 22: Borland C/C++ mintapéldák tömbökre

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 23: Borland C/C++ mintapéldák tömbökre

12. 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 24: Borland C/C++ mintapéldák tömbökre

#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 25: Borland C/C++ mintapéldák tömbökre

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 26: Borland C/C++ mintapéldák tömbökre

13. példa

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

írasd ki az elemeit sor illetve oszlopfolytonosan is!

Page 27: Borland C/C++ mintapéldák tömbökre

#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 28: Borland C/C++ mintapéldák tömbökre

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 29: Borland C/C++ mintapéldák tömbökre

14. példa

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

Page 30: Borland C/C++ mintapéldák tömbökre

#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 31: Borland C/C++ mintapéldák tömbökre

15. példa

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

Page 32: Borland C/C++ mintapéldák tömbökre

#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 33: Borland C/C++ mintapéldák tömbökre

16. 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 34: Borland C/C++ mintapéldák tömbökre

#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 35: Borland C/C++ mintapéldák tömbökre

17. példa

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

Page 36: Borland C/C++ mintapéldák tömbökre

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 37: Borland C/C++ mintapéldák tömbökre

18. példa

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

Page 38: Borland C/C++ mintapéldák tömbökre

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 39: Borland C/C++ mintapéldák tömbökre

19. példa

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

Page 40: Borland C/C++ mintapéldák tömbökre

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 41: Borland C/C++ mintapéldák tömbökre

20. példa

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

Page 42: Borland C/C++ mintapéldák tömbökre

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 43: Borland C/C++ mintapéldák tömbökre

#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 44: Borland C/C++ mintapéldák tömbökre

21. példa

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

Page 45: Borland C/C++ mintapéldák tömbökre

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 46: Borland C/C++ mintapéldák tömbökre

22. példa

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

Page 47: Borland C/C++ mintapéldák tömbökre

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 48: Borland C/C++ mintapéldák tömbökre

23. példa

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

Page 49: Borland C/C++ mintapéldák tömbökre

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 50: Borland C/C++ mintapéldák tömbökre

24. példa

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

Page 51: Borland C/C++ mintapéldák tömbökre

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 52: Borland C/C++ mintapéldák tömbökre

25. példa

Írjunk olyan programot,amely a két 10 elemû, integer típusú tömböt a buborék rendezéssal rendezi.

Page 53: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>#include <conio.h>void main(){

int x[10] = { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 };int y[10] = { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int i, j, csere, s; // Sima buborékrendezés clrscr(); for(i=0; i<10-1; i++)

{ for(j=0; j<10-i-1; j++)

{ if( x[j] > x[j+1] )

{s = x[j] ; x[j] = x[j+1] ; x[j+1] = s ;

} }

} printf("\nSima buborékrendezés, menetek száma: %d\n",i); for(i=0; i<10; i++) printf("%3d",x[i]);

printf("\n");

Page 54: Borland C/C++ mintapéldák tömbökre

26. példa

Írjunk olyan programot, amely egy 5x5-ös mátrixot a fôátlójára tükrözi.

Page 55: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>#include <conio.h>void main(){

int a[5][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10,

11,12,13,14,15, 16,17,18,19,20, 21,22,23,24,25

}; int i,j,s;

clrscr(); printf("\nEREDETI : "); printf("\n\n"); for(i=0; i<5; i++)

{for(j=0; j<5; j++){ printf(" %2d",a[i][j]);}printf("\n");

} // Most következik a mátrix tükrözése

for(i=0; i<5; i++){for(j=i; j<5; j++){ s = a[j][i]; a[j][i] = a[i][j]; a[i][j] = s;}

} printf("\nTÜKRÖZÖTT : ");printf("\n\n"); for(i=0; i<5; i++)

{for(j=0; j<5; j++){ printf(" %2d",a[i][j]);}printf("\n");

} getch();}

Page 56: Borland C/C++ mintapéldák tömbökre

27. példa

Írjunk olyan programot, amely egy 2x3 - as és egy 3x2 - es mátrixot összeszoroz.

Page 57: Borland C/C++ mintapéldák tömbökre

#include <stdio.h>#include <conio.h>#define N 3#define M 2main(){

int a[N][M] ={1, 2,3, 4,5, 6};

int b[M][N] ={1, 2, 3,4, 5, 6 };

long c[N][N];int i, j, k;for(i=0; i<N; i++){ for(j=0; j<N; j++) {

c[i][j]=0L;for(k=0; k<M; k++){ {c[i][j] += a[i][k]*b[k][j];}

}}clrscr();for(i=0; i<N; i++){ for(j=0; j<N; j++)

{ printf("C[%d][%d] = %3ld%c",i,j,c[i][j], (j == N-1) ? '\n' : }'

'); }}getch();

}

Page 58: Borland C/C++ mintapéldák tömbökre

Gyakorló feladatok tömbökre1.) Töltsünk fel egy 10 elemû integer vektort ! Ezután számítsuk ki a vektor ele -

mek átlagát ! 2.) Határozzuk meg ugyanennek a vektornak a legnagyobb elemét !3.) Töltsünk fel két 10 elemû integer vektort ! Ezután határozzuk meg a két vektor

összeg ill. különbség vektorát !4.) Számítsuk ki az elôbbi két vektor skalárszorzatát !5.) Egy 20 fôs csoport zárthelyi eredményeit kell kiértékelni. A pontszámhatárok a

következôk :0 - 15 elégtelen 16 - 25 elégséges 26 - 35 közepes 36 - 45 jó 46 - 50 jeles

Az egyes zh. pontszámokat egy vektorba kell beolvasni, ki kell iratni az egyes zh-k osztályzatát, és meg kell állapítani, hogy hány elégtelen, elégséges ... volt a cso portban !

6.) Töltsünk fel egy 5x5-ös integer mátrixot ! Ezután határozzuk meg mindegyik sorának legnagyobb ill. legkisebb elemét !

7.) Töltsünk fel egy 5x5-ös double mátrixot ! ( Inicializálással is megoldható ! ) Ezu tán határozzuk meg sor ill. oszlop összegeit. Az összegeket megfelelô méretü és típusú tömbökben tároljuk és irassuk is ki !

8.) Töltsünk fel két 5x5-ös double mátrixot ! ( Inicializálással is megoldható ! ) Ezu tán képezzük a. különbség mátrixot és irassuk ki !

9.) Olvassunk be egy nxn - es mátrixot ! Készítsünk programot amely egy menü rend szerbôl történô választás alapján a következô értékeket számítja ki :

1. egy tetszôleges sor átlaga2. egy tetszôleges oszlop átlaga3. valamennyi sor átlaga4. valamennyi oszlop átlaga5. az összes elem átlaga

Page 59: Borland C/C++ mintapéldák tömbökre

10. feladat:Irjunk egy egyszerüsített morze jeleket elôállító programot ! A program

inputja egy négyjegyü egész szám ! Le is kell ellenôrizni, hogy valóban

négyjegyü-e !A számot elôször átkódoljuk úgy, hogy az egyeseket a százasokkal ill.

a tízeseket az ezresekkel cseréljük fel. Az így kapott számot kell morze jelek

sorozatává ala kítani a következôképpen : Az elsô jel a START legyen, ezt

három szóköz kö ves se. Ezután következzen a kódnak megfelelô jelsorozat

szóközökkel elválaszt va. Ezt a jelsorozatot kövesse három szóköz ill. a STOP

jel. Mindaddig "morzéz ni" kell amíg az 'i' billentyüt nyomjuk le a program által

feltett kérdésre. A szükséges morze kódok a következôk :

START = -.-.-

1 = .---- 2 = ..--- 3 = ...-- 4 = ....- 5 = .....6 = -.... 7 = --... 8 = ---.. 9 = ----. 0 = -----

STOP = .-.-.

Page 60: Borland C/C++ mintapéldák tömbökre

11. feladat:

Irjunk programot, amely beolvas egy karakter típusú vektorba egy számot. A szám max. 6 db egész jegyet, tizedespontot és két tizedesjegyet tartalmaz. Igazítsuk a számot jobbra úgy, hogy a formátuma 9.2 legyen !