1 / 22

Dizi Kullanan Örnekler

Dizi Kullanan Örnekler. Karakter Dizisi ‘merhaba’ gibi bir string aslında, C’de bağımsız karakterlerden oluşmuş static bir dizidir. Bir string kullanılarak ilk değerler atanabilir. Örneğin; char string1[] = "first"; n ull karakteri olan ‘’ string’i sonlandırır.

grant
Download Presentation

Dizi Kullanan Örnekler

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dizi Kullanan Örnekler • Karakter Dizisi • ‘merhaba’ gibi bir string aslında, C’de bağımsız karakterlerden oluşmuş static bir dizidir. • Bir string kullanılarak ilk değerler atanabilir. Örneğin; char string1[] = "first"; • null karakteri olan ‘\0’ string’i sonlandırır. • String1 aslında 6 elemanlıdır. Ve aşağıdakine denktir. char string1[] = { 'f', 'i', 'r', 's', 't', '\0' }; • Her bir karaktere erişlebilir. string1[3]’ ‘s’ karakteridir. • Bir dizinin ismi bu dizinin başlangıç adresi olup böylece scanf için & kullanılmaya ihtiyaç duyulmaz. scanf( "%s", string2 ); • İlk boşluk karakteri gelen dek klavyeden okumaya devam eder. • Dizinin büyüklüğüne dikkat etmez bu sebepten dizinin sonunda öteye de yazabilir.

  2. #include <stdio.h> #include <conio.h> int main() { char string1[20],string2[]="string literal"; inti; printf("Bir string giriniz:"); scanf("%s",string1); printf("string1: %s\nstring2: %s\n" "karakterlerarasindaboslukla string1:\n", string1,string2); for(inti=0;string1[i]!='\0';i++) printf("%c ",string1[i]); printf("\n"); getch(); return 0; }

  3. #include <conio.h> #include <stdio.h> void staticArrayInit( void ); void automaticArrayInit( void ); int main() { printf( "Her fonksiyon ilk cagri:\n" ); staticArrayInit(); automaticArrayInit(); printf( "\n\nHerfonksiyonikincicagri:\n" ); staticArrayInit(); automaticArrayInit(); getch(); return 0; } void staticArrayInit( void ) {static int a[ 3 ]; inti; printf( "\nstaticArrayInit'egirerlendegerler:\n" ); for ( i = 0; i <= 2; i++ ) printf( "a[%d] = %d ", i, a[ i ] ); printf( "\nstaticArrayInit'dencikarkendegerler:\n" ); for ( i = 0; i <= 2; i++ ) printf( "a[%d] = %d ", i, a[ i ] += 5 ); }

  4. void automaticArrayInit( void ) { int a[ 3 ] = { 1, 2, 3 }, i; printf( "\n\nautomaticArrayInit'egirerlendegerler :\n" ); for ( i = 0; i <= 2; i++ ) printf("a[ %d ] = %d ", i, a[ i ] ); printf( "\nautomaticArrayInit'dencikarkendegerler:\n" ); for ( i = 0; i <= 2; i++ ) printf( "a[ %d ] = %d ", i, a[ i ] += 5 ); }

  5. Dizileri Fonksiyonlara Geçirmek • Dizileri geçirmek • İsmini parantez kullanmadan belirtmeliyiz. intmyArray[ 24 ]; myFunction( myArray, 24 ); • Dizi boyutu da genellikle geçirilir. • Referansa göre çağırma yöntemiyle geçirilir. • İsmi, dizinin ilk elemanının adresidir. • Fonksiyon dizinin nerede tutulduğunu kesin olarak bilir. • Elemanları orijinal hafıza konumunda değiştirir. • Dizi elemanlarını geçirmek • Değere göre çağırır. • İndislenmiş adı ile fonksiyona geçirilir.(myArray[ 3 ])

  6. Dizileri Fonksiyonlara Geçirmek • Fonksiyon prototipinde void modifyArray( int b[], intarraySize); • b parametresi tamsayılardan oluşan bir dizi • arraySize ise dizi elemanlarının sayısı

  7. #include <stdio.h> #include <conio.h> int main() { char dizi[5]; printf("dizi=%x\n&dizi[0]=%x\n" "&dizi=%x\n", dizi,&dizi[0],&dizi); getch(); return 0; }

  8. #include <stdio.h> #include <conio.h> #define BOYUT 5 void diziyiAyarla(int [], int); void elemaniAyarla(int); int main() { int a[BOYUT]={0,1,2,3,4},i; printf("Butundizininreferansa gore cagrilarakgecmesininin" " etkileri: \nOrjinaldizinindegerleri: \n"); for(i=0;i<BOYUT;i++) printf("%3d",a[i]); printf("\n"); diziyiAyarla(a,BOYUT); printf("AyarlananDizi: \n"); for(i=0;i<BOYUT;i++) printf("%3d",a[i]); printf("\nDizielemaninindegere gore cagrilarakgecmesininin" " etkileri: \n\na[3] degeri:%d\n",a[3]); elemaniAyarla(a[3]); printf("a[3] degeri:%d\n",a[3]); getch(); return 0; }

  9. void diziyiAyarla(int a[],intboyut) { inti; for(i=0;i<boyut;i++) a[i]*=2; } void elemaniAyarla(int a) { printf("elemaniayarladakideger: %d\n",a*=2); }

  10. #include <stdio.h> #include <conio.h> #define BOYUT 3 void diziyiAyarla(constint [], int); int main() { int a[BOYUT]={10,20,30},i; diziyiAyarla(a,BOYUT); for(i=0;i<BOYUT;i++) printf("%d ",a[i]); getch(); return 0; } void diziyiAyarla(constint a[],intboyut) { inti; for(i=0;i<boyut;i++) a[i]*=2; }

  11. Dizileri Sıralamak • Veri sıralamak • Önemli bilgisayar uygulamalarından biridir. • Hemen hemen tüm organizasyonlar bazı verileri sıralamak zorundadır. • Seçmeli sıralama • Listedeki en küçük değerli öğeyi bul. • İlk konumdaki öğeyle bulunan en küçük değerli öğenin yerini değiştir. • Yukarıdaki adımları listenin ilk elemanından sonrası için (ikinci elemandan başlayarak) yinele.

  12. Seçmeli Sıralama

  13. void secmeliSiralama(intdizi[],intboyut) { intenkucuk, yedek; for (inti = 0; i < boyut-1; i++) { enkucuk = i; for (int j = i + 1; j < boyut; j++) if (dizi[j] < dizi[enkucuk]) enkucuk = j; yedek = dizi[i]; dizi[i] = dizi[enkucuk]; dizi[enkucuk] = yedek; } } #include <stdio.h> #include <conio.h> #define BOYUT 10 void secmeliSiralama(int [], int); int main() { int a[BOYUT]={2,6,4,8,10,12,89,68,45,37},i; secmeliSiralama(a,BOYUT); for(i=0;i<BOYUT;i++) printf("%d ",a[i]); getch(); return 0; }

  14. Dizilerde Arama Yapmak • Bir dizide belirli bir arama değerine eşit bir değer olup olmadığının kararı • Lineer arama • Basit • Dizinin her elemanını arama değeriyle karşılaştırır. • Küçük ya da sıralanmamış dizilerde iyi çalışır.

  15. #include <stdio.h> #include <conio.h> #define BOYUT 100 intlineerArama(constint[],int,int); int main() { int a[BOYUT],i,aramaD,eleman; for(i=0;i<BOYUT;i++) a[i]=2*i; printf("Tamsayiaramadeger:"); scanf("%d",&aramaD); eleman=lineerArama(a,aramaD,BOYUT); if(eleman!=-1) printf("Bu deger, eleman %d' de bulundu\n",eleman); else printf("Bu degerbulunamadi\n"); getch(); return 0; } intlineerArama(constintdizi[],intkey,intboyut) { inti; for(i=0;i<BOYUT;i++) if(dizi[i]==key) return i; return -1; }

  16. Çok Boyutlu Diziler • Çok boyutlu diziler • Satırlar ve sütunlar biçiminde düzenlenmiş tablolar. • Matrisler gibi: Satır tanımla ardından sütun. • Bildirim • int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; • Değerler parantez içinde satırlara göre gruplandırılmıştır. • Eğer bir satır değeri içinde yeterince atama değeri yoksa, satırda diğer elemanlara 0 atanır. intb[ 2 ][ 2 ] = { { 1,}, { 3, 4 } };

  17. #include <stdio.h> #include <conio.h> void printArray( constint [][ 3 ] ); int main() { int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }, array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }, array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; printf( "Satirsatir array1' in elemanlari:\n" ); printArray( array1 ); printf( "Satirsatir array2' in elemanlari:\n" ); printArray( array2 ); printf( "Satirsatir array3' in elemanlari:\n" ); printArray( array3 ); getch(); return 0; } void printArray( constint a[][ 3 ] ) { inti, j; for ( i = 0; i <= 1; i++ ) { for ( j = 0; j <= 2; j++ ) printf( "%d ", a[ i ][ j ] ); printf( "\n" ); } }

  18. #include <stdio.h> #include <conio.h> #define STUDENTS 3 #define EXAMS 4 int minimum( constint [][ EXAMS ], int, int ); int maximum( constint [][ EXAMS ], int, int ); double average( constint [], int ); void printArray( constint [][ EXAMS ], int, int ); int main() { int student; constintstudentGrades[ STUDENTS ][ EXAMS ] = { { 77, 68, 86, 73 }, { 96, 87, 89, 78 }, { 70, 90, 86, 81 } }; printf( "Dizi:\n" ); printArray( studentGrades, STUDENTS, EXAMS ); printf( "\n\nEndusuk not: %d\nEnyuksek not: %d\n", minimum( studentGrades, STUDENTS, EXAMS ), maximum( studentGrades, STUDENTS, EXAMS ) );

  19. for ( student = 0; student <= STUDENTS - 1; student++ ) printf( "Ogrenci %d icinortalama: %.2f\n", student, average( studentGrades[ student ], EXAMS ) ); getch(); return 0; } int minimum( constint grades[][ EXAMS ], int pupils, int tests ) { inti, j, lowGrade = 100; for ( i = 0; i <= pupils - 1; i++ ) for ( j = 0; j <= tests - 1; j++ ) if ( grades[ i ][ j ] < lowGrade ) lowGrade = grades[ i ][ j ]; return lowGrade; }

  20. int maximum( constint grades[][ EXAMS ], int pupils, int tests ) { inti, j, highGrade = 0; for ( i = 0; i <= pupils - 1; i++ ) for ( j = 0; j <= tests - 1; j++ ) if ( grades[ i ][ j ] > highGrade ) highGrade = grades[ i ][ j ]; return highGrade; } double average( constintsetOfGrades[], int tests ) { inti, total = 0; for ( i = 0; i <= tests - 1; i++ ) total += setOfGrades[ i ]; return ( double ) total / tests; }

  21. void printArray( constint grades[][ EXAMS ], int pupils, int tests ) { inti, j; printf( " [0] [1] [2] [3]" ); for ( i = 0; i <= pupils - 1; i++ ) { printf( "\nogrenciNotlari[%d] ", i ); for ( j = 0; j <= tests - 1; j++ ) printf( "%-5d", grades[ i ][ j ] ); } }

More Related