610 likes | 811 Views
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 <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; }
E N D
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 <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; • }
2. példa • Írjunk programot, ami beolvas 10 számot és fordított sorrendben kiírja azokat.
#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; • }
3. példa • Írjunk programot, amely egy integer típusú tömbből kiválasztja a legkisebb elemet
#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); }
4. példa • Írjunk programot, amely egy integer típusú tömbből kiválasztja a legnagyobb elemét.
#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); }
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.
#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");
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(); }
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!
#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; • }
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!
#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; • }
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 */
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 */
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!
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!
#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'); • }
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; • }
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!
#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'); • }
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; • }
13. példa • Készíts egy 3x3-as mátrixot, töltsd fel elemekkel, majd írasd ki az elemeit sor illetve oszlopfolytonosan is!
#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; • }
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; • }
14. példa • Írjunk programot, ami beolvas 10 számot és fordított sorrendben kiírja azokat.
#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; • }
15. példa • Írjunk programot, ami beolvas egy nevet és kiírja.
#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; • }
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.’
#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; • }
17. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti maximum kiválasztás szerint.
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 ); • } • }
18. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti minimum kiválasztás szerint.
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 ); • } • }
19. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendeti beszúrásos rendezés alapján
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; • } • }
20. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi buborék rendezés alapján.
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 ); • }
#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; • } • } • }
21. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi Shell rendezés alapján.
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; • } • } • }
22. példa • Írjunk olyan függvényt amely egy tömb elemeit sorbarendezi Shell rendezés alapján.
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 ); • } • }
23. példa • Írjunk olyan függvényt amely egy tömb elemei között lineárisan keres meg egy elemet.
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; • }
24. példa • Írjunk olyan függvényt amely egy tömb elemei között binárians keres meg egy elemet.