Showing posts with label dizi uzunluğu bulma. Show all posts
Showing posts with label dizi uzunluğu bulma. Show all posts

Monday, May 21, 2012

Karakter(katar) dizileri

Katar dizileri char türden dizilerdir. Katar dizileri özellik olarak diğer dizelere benzerlik gösterir. Char türden diziler daha çok içlerinde yazı tutmak için 
tanımlanırlar.char türden bir dizinin içinde bir yazı tutmanın dışında  küçük tamsayıları tutmak amacıyla da kullanılabilinir.

char katar[100];

şeklinde tanımlanan katar dizisi bütün elemanları char türden olan 100 elemanlı bir dizidir.
char türden bir dizi içinde bir yazı tutmak demek, dizinin her bir elemanına sırayla yazının bir karakterini atamak anlamına gelir.
galatasaray kelimesinin karakterlerini dizi adli bir  katar dizisine tutulması;

char dizi[100]; ise
0.index  g
1.index  a
2.index  l
..
11.index y  şeklinde tutulur.

Null (\0) Karekteri;

'\0' karakteri karakter dizileri üzerinde yapılan işlemleri hızlandırmak için kullanılır. Örneğin int türden bir dizi kullanıldığında dizi elemanları üzerinde
 döngüleri kullanarak işlem yaparken dizi uzunluğunun mutlaka bilinmesi gerekmektedir. Ama char türden diziler söz konusu olduğunda artık dizi  uzunluğunu 
 bilmemiz gerekmez, çünkü yazının sonunda '\0' karakter bulunacağından, kontrol ifadelerinde budurum test edilerek yazının sonuna gelinip gelinmediği anlaşılır. Ancak '\0' karakterin, karakter dizilerinde yazıların son elemanı olarak kullanılmasının dezavantajı da diziye fazladan bir karakter yani
'\0' karakteri eklemek zorunluluğudur. Bu nedenle 10 elemanlı bir diziye en fazla 10 – 1 tane karakter girilebilinir.

char dizi[3] =”Ali”;  C++'da hata verir. nedeni ise;

1. 'A' dizi[0]
2. 'l' dizi[1]
3. 'i' dizi[2]
... buraya bu durumda null karakteryerleştirilmiyor.(sonuncu index dolu.)

 Şimdi dizi adlı katar dizisinin elemanlarını ekrana yazdırmak istersek ne yapmalıyız?

char dizi[100]="galatasaray";
for(i=0; i<100; i++)
cout<<dizi[i]; 
    ifadesini kullanırsak program galatasaray harflerini yazdırdıktan sonraki indexleri boş olarak ekrana yazdırmaya devam eder. bu boş indexleri \0 simgeler.
 
yani;  
char dizi[4]= "ali" olsun 1.index a, 2.index l, 3.index i, 4.index ise \0 olur . '\o' null değeri olarak ifade edilir.  belli bir karekteri ifade etmez.

örnek; dizi uzunluğunu bulan program;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    int i=0;
    char dizi[20] = "galatasaray";
    
    while(dizi[i] != '\0')  //0 dan baslayan dizinin index teki sayi null değerine eşit olmadığı sürece döngüye gir
                                    ve i yi 1 arttır.\0 ' ' içine yazılır.
    i++;
    cout<<"uzunluk: " << i;
    getch();
}

örnek; çok boyutlu karakter dizisi kullanımı;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[][8] = {"ali","veli","mesut","adem"};
    
    cout<<dizi[1];   //ekrana veli yazar.
    
    getch();
}  


örnek; klavyeden girilen kelimeyi tersten yazdıran program;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    int i=0;
    int k;
    char dizi[20];
    cout<<"kelime giriniz: ";
    gets(dizi);
    while(dizi[i] != '\0')  //dizinin uzunluğunu bulmak için 0dan başlayan dizi index inin Null olmadığı kontrol 
                                    ettirdik. Null değerine ulaşınca döngü bitecek.
    i++;
    
    for(k=i; k>=0; k--)//k değerini dizi uzunluğuna atadık. dizi uzunluğu 0 a eşitlenesiye kadar teker teker 
                                   değeri düşecek. uzunluğun numarasındaki indexte yer alan karekter ilk olarak 
                                   devamında  0ncı indexteki karaktere kadar tek tek ekrana yazılacak.  kelime mal ise 
                                    ilk olarak 2.indexteki l ardından 1.endexteki a son olarak 0.indexteki m yazılacak 
                                    kelime lam olacak.
    cout<< dizi[k];
    
    getch();
    return 0;
}

String olarak dizi tanımlama;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    string dizi[10]={"sifir","bir","iki","uc","dort"}; //index numarası ile dizideki elemanların satırlarına ulaşılabilir. 
    
    cout<< dizi[3];
    
getch();
return 0;
}

Katarları Kopyalama;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    strcpy(dizi,"sampiyon");
    puts(dizi);
    
getch();
return 0;
}


katarları birleştirme;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30]="galatasaray";
    strcat(dizi,"sampiyon");
    puts(dizi);
    
getch();
return 0;
}

Puts ve Gets İfadeleri;

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    //cin>>dizi;  //yerine ;
gets(dizi);  //kullanabiliriz fark olarak imlec alt satırdan başlar.

    
    //cout<<dizi; // yerinede
puts(dizi);  //kullanılabilinir.
    
getch();
return 0;
}


Dizinin uzunluğunu bulma;

strlen(dizi) kodu ile dizi adlı dizinin uzunluğunu bulabiliriz.

#include <iostream>
#include <conio.h>

using namespace std;

int main(){
    
    char dizi[30];
    gets(dizi); //klavyeden değer girdirdik.
    cout<<"dizininin boyutu" << strlen(dizi) << endl;
    puts(dizi);  //değerleri okuttuk.
    
getch();
return 0;
}