Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
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"; int i; printf("Bir string giriniz:"); scanf("%s",string1); printf("string1: %s\nstring2: %s\n" "karakterler arasinda boslukla string1:\n", string1,string2); for(int i=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\nHer fonksiyon ikinci cagri:\n" ); getch(); return 0; } void staticArrayInit( void ) {static int a[ 3 ]; int i; printf( "\nstaticArrayInit'e girerlen degerler:\n" ); for ( i = 0; i <= 2; i++ ) printf( "a[%d] = %d ", i, a[ i ] ); printf( "\nstaticArrayInit'den cikarken degerler:\n" ); printf( "a[%d] = %d ", i, a[ i ] += 5 );
4
void automaticArrayInit( void )
{ int a[ 3 ] = { 1, 2, 3 }, i; printf( "\n\nautomaticArrayInit'e girerlen degerler :\n" ); for ( i = 0; i <= 2; i++ ) printf("a[ %d ] = %d ", i, a[ i ] ); printf( "\nautomaticArrayInit'den cikarken degerler:\n" ); printf( "a[ %d ] = %d ", i, a[ i ] += 5 ); }
5
Dizileri Fonksiyonlara Geçirmek
Dizileri geçirmek İsmini parantez kullanmadan belirtmeliyiz. int myArray[ 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[], int arraySize ); 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("Butun dizinin referansa gore cagrilarak gecmesininin" " etkileri: \nOrjinal dizinin degerleri: \n"); for(i=0;i<BOYUT;i++) printf("%3d",a[i]); printf("\n"); diziyiAyarla(a,BOYUT); printf("Ayarlanan Dizi: \n"); printf("\nDizi elemaninin degere gore cagrilarak gecmesininin" " 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[],int boyut)
{ int i; for(i=0;i<boyut;i++) a[i]*=2; } void elemaniAyarla(int a) printf("elemani ayarladaki deger: %d\n",a*=2);
10
#include <stdio.h>
#include <conio.h> #define BOYUT 3 void diziyiAyarla(const int [], 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(const int a[],int boyut) int i; for(i=0;i<boyut;i++) a[i]*=2;
11
Dizileri Sıralamak Veri sıralamak Seçmeli sıralama
Ö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
#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; } void secmeliSiralama(int dizi[],int boyut) { int enkucuk, yedek; for (int i = 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; }
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 int lineerArama(const int[],int,int); int main() { int a[BOYUT],i,aramaD,eleman; for(i=0;i<BOYUT;i++) a[i]=2*i; printf("Tamsayi arama deger:"); scanf("%d",&aramaD); eleman=lineerArama(a,aramaD,BOYUT); if(eleman!=-1) printf("Bu deger, eleman %d' de bulundu\n",eleman); else printf("Bu deger bulunamadi\n"); getch(); return 0; } int lineerArama(const int dizi[],int key,int boyut) int i; 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. int b[ 2 ][ 2 ] = { { 1,}, { 3, 4 } };
18
#include <stdio.h>
#include <conio.h> void printArray( const int [][ 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( "Satir satir array1' in elemanlari:\n" ); printArray( array1 ); printf( "Satir satir array2' in elemanlari:\n" ); printArray( array2 ); printf( "Satir satir array3' in elemanlari:\n" ); printArray( array3 ); getch(); return 0; } void printArray( const int a[][ 3 ] ) { int i, j; for ( i = 0; i <= 1; i++ ) { for ( j = 0; j <= 2; j++ ) printf( "%d ", a[ i ][ j ] ); printf( "\n" ); }
19
#include <stdio.h>
#include <conio.h> #define STUDENTS 3 #define EXAMS 4 int minimum( const int [][ EXAMS ], int, int ); int maximum( const int [][ EXAMS ], int, int ); double average( const int [], int ); void printArray( const int [][ EXAMS ], int, int ); int main() { int student; const int studentGrades[ STUDENTS ][ EXAMS ] = { { 77, 68, 86, 73 }, { 96, 87, 89, 78 }, { 70, 90, 86, 81 } }; printf( "Dizi:\n" ); printArray( studentGrades, STUDENTS, EXAMS ); printf( "\n\nEn dusuk not: %d\nEn yuksek not: %d\n", minimum( studentGrades, STUDENTS, EXAMS ), maximum( studentGrades, STUDENTS, EXAMS ) );
20
for ( student = 0; student <= STUDENTS - 1; student++ )
printf( "Ogrenci %d icin ortalama: %.2f\n", student, average( studentGrades[ student ], EXAMS ) ); getch(); return 0; } int minimum( const int grades[][ EXAMS ], int pupils, int tests ) { int i, 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;
21
int maximum( const int grades[][ EXAMS ],
int pupils, int tests ) { int i, 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( const int setOfGrades[], int tests ) int i, total = 0; for ( i = 0; i <= tests - 1; i++ ) total += setOfGrades[ i ]; return ( double ) total / tests;
22
void printArray( const int grades[][ EXAMS ],
int pupils, int tests ) { int i, 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 ] ); }
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.