Bu bir üst mesajdaki programda, dizi elemanlarının her birine nasıl başlangıç değerler verilebildiğini gördük. İndeksler göz önüne alınarak, diziye değerler yerleştirilmesi ya da yazdırılması işlemleri tanımlanabilir. Örneğin, beş adet dizi elemanının ekran üzerinde yazdırılması işleminde indeksleri for deyimiyle birlikte kullanabiliriz.
Örnek:
Bir önceki örnekteki programı, indeksler için bir "i" değişkenini kullanarak daha kolay ve etkin biçimde oluşturabiliriz. Bu programda, dizi elemanlarının herbirinin tek tek kullanılması yerine, indeksleri göz önüne alınarak for döngüsü içinde yazdırılması sağlanmıştır.
Kod: Tümünü seç
#include <iostream>
using namespace std;
// yazilimadasi.com 2022
// Dizi değerleri tanımlanıyor..
int a[5]={1,2,3,4,5};
int i;
int main()
{
for (i=0;i<=4;i++)
cout << a[i] << "\n";
system("PAUSE");
}
Bu program çalıştırıldığında, bir önceki örnekteki sonuç alınır.
Çok Boyutlu Diziler
Tek boyutlu dizileri bir vektör olarak düşünebiliriz. C++ da tek boyutlu diziler dışında çok boyutlu dizileri tanımlayarak kullanmamız mümkündür. İki boyutlu bir dizi bir tablo olarak değerlendirilebilir. Bu durumda iki farklı indeksin kullanılması söz konusu olacaktır. Birinci indeks iki boyutlu tablonun satır elemanlarını, ikinci indeks ise sütun elemanlarını gösterecektir.
Örnek: İki boyutlu bir diziyi tanımladıktan sonra için bazı verilerle doldurduktan sonra görüntülemek istiyoruz. Bu amaçla aşağıdaki programı tasarlayabiliriz.
Kod: Tümünü seç
#include <iostream>
using namespace std;
//yazilimadasi.com 2022
// Dizi değerleri tanımlanıyor..
int dizi[5][2] = {{1,2}, {3,4}, {5,6}, {7,8}, {9,10}};
int main()
{
cout << "Dizi elemanlari:" << "\n";
for (int i = 0; i<5; i++)
for (int j=0; j<2; j++) {
cout << "[" << i << "][" << j << "]: ";
cout << dizi[i][j]<< "\n";
}
system("PAUSE");
}
Katar dizileri : (Strings)
Bazı programlama dillerinde katarlar (strings), ayrı bir veri türü olarak tanımlanabilmektedir. C'de ise bu mümkün değildir. Onun yerine, katarlar, karakterlerden oluşan normal bir boyutlu dizi olarak değerlendirilir. Bir katar, boşluk (NULL) ile veya bir başka deyişle '\0' karakteri ile son bulan bir karakter dizisi olarak kabul edilir. C++ de NULL değer olarak sıfır kabul edilebilir.
Katar boyutları tanımlanırken dikkatli olmak gerekir. Çünkü katarın en son karakteri NULL olacaktır. O halde, n boyutlu katarlara n+1 boyutluk yer ayırmakta yarar vardır.
C++'da katarların bildirimi ve kullanımı diğer dillerden farklıdır. Katarlarla ilgili bazı işlemler işleçler yerine özel fonksiyonlarla yerine getirilir.
Klavyeden Katar Okumak
Bir katarı klavyeden okumak için C++'ın gets() fonksiyonu kullanılır. Bu fonksiyon herhangi bir indeks tanımlamadan karakter katarlarının okunmasını sağlar. Söz konusu fonksiyon, klavye üzerindeki return tuşuna basılıncaya dek girilen tüm karakterleri okur. Okuduğu katarın sonuna satır sonu işaretini değil, NULL değerini yerleştirir.
gets() fonksiyonu, klavyeden girilen katarları, herhangi bir ek tanımlamaya gerek duymadan bir dizi içine yerleştirir. Dizinin herbir karakteri dizinin farklı bir hücresi içine yerleşir.
Örnek:
Aşağıdaki program klavyeden girilen katara ait tüm karakterleri tek tek görüntüler ;
Kod: Tümünü seç
#include <iostream>
using namespace std;
char katar[50];
int i;
int main()
{
gets(katar);
for (i=0;katar[i];i++)
cout<< katar[i] << "\n";
system("PAUSE");
}
Program çalıştığında şöyle bir sonuç alınır ;
Ekran üzerinde klavyeden bir değer girilmesi beklenir. Klavyeden herhangi bir cümle yazdığımızda yine klavyenin return tuşuna basıyoruz. Sonuç olarak, yazılan katar bir dizi içine yerleştirilir ve dizinin her bir elemanı tek tek yazdırılır.
Katar Kopyalama
C++ programı içinde, Bir dizgi içine belirli bir katar yerleştirilmesi işlemini geleneksel yollarla yapamayız.
Örneğin, şu şekilde bir tanım yapıldığını varsayalım:
Bu şekilde bir tanım hatalıdır. Çünkü bu atama göstergeye yapılan atamadır. Göstergelerin ne olduğunu bir sonraki bölümde ayrıntılı olarak ele alarak inceleyeceğiz. Atamanın bir katara yapılabilmesi için, C++'ın strcpy() fonksiyonu kullanılır. Bu fonksiyon şu şekilde tanımlanır:
Kod: Tümünü seç
#include <iostream>
using namespace std;
char katar[50];
int i;
intmain()
{
strcpy(katar,"www.yazilimadasi.com");
for(i=0;katar[i];i++)
cout<< katar[i] << "\n";
system("PAUSE");
}
Katarların Birleştirilmesi
İki katarın birleştirilerek tek bir katar haline dönüştürülmesi söz konusu ise C'nin strcat() fonksiyonu kullanılır.
Bu fonksiyon, var olan bir katarın sonuna bir başka katarı ekleyecektir. Tanıma göre, katar1 bir başka katar2 'nin sonuna eklenecektir. Örneğin "abc" katarının sonuna "def" katarı strcat() fonksiyonu kullanılarak eklenebilir.
Örnek:
İki katarı birleştirerek bir katar elde etmek istiyoruz. Katarlardan birincisi "Kazakistan" diğeri ise " ve Turkiye" biçiminde olsun. Bu iki katarı birleştirmek için aşağıda görüldüğü biçimde bir C++ programı düzenlenebilir:
Kod: Tümünü seç
#include <iostream>
using namespace std;
char katar[50];
int i;
int main()
{
strcpy(katar, "Avrupa");
strcat(katar, " ve Asya");
for (i=0;katar[i];i++)
cout << katar[i];
cout << "\n";
system("PAUSE");
}
Katarların Karşılaştırılması
İki katarın birbirleriyle karşılaştırılarak, içerdiği karakterlerin aynı olup olmadıkları test edilebilir. Bu amaçla strcmp() fonksiyonu kullanılır.
Bu karşılaştırma sonucunda, her iki katar birbirinin aynı ise "0"; birbirinden farklı ise "1" değeri üretilir. Elde edilen bu değer kullanılarak programın akışı yönlendirilebilir
Örnek :
İki katarı karşılaştıralım eğer iki katar birbirine eşit ise "Katarlar birbirinin aynı", farklı ise "Katarlar birbirinden farklı" mesajını göreceğiz ;
Kod: Tümünü seç
int main()
{
strcpy(katar1, "Turkiye");
strcpy(katar2, "Almanya");
if (strcmp(katar1,katar2))
cout << "Katarlar birbirinden farkli";
else
cout << "Katarlar birbirinin ayni";
cout << "\n";
system("PAUSE");
}
Katarların Uzunluğunu Bulmak
Bazı uygulamalarda bir katarın uzunluğunu bulmak söz konusu olabilir. Bir katarın uzunluğunu, yani kaç karakter içerdiğini elde etmek için C'nin standart strlen() fonksiyonu kullanılır. Bu fonksiyonu aşağıdaki örnekteki gibi tanımlarız ;
Aşağıdaki C++ programı bir katarın uzunluğunu bulmak amacıyla düzenlenmiştir:
Kod: Tümünü seç
#include <iostream>
using namespace std;
char katar[50];
int main()
{
strcpy(katar,"yazilimadasi.com");
cout << "Kelime:" << katar << "\n";
cout << "Karakter sayisi:" << strlen(katar);
cout << "\n";
system("PAUSE");
}
Program çalıştırıldığında katar'daki kelimenin(cümlenin) karakter sayısını bize verir.
Katar Dizilerine Başlangıç Değeri Atamak
Bir katar dizisine programın başında bir başlangıç değeri atanarak bu değerler kullanılabilir. Örneğin, a[] isimli bir katara "Fatih" dizgisini atamak için şöyle bir tanım yapılabilir:
Bunun yerine,
biçiminde bir tanım da yapılabilir.
Örnek: Bir dizi içine haftanın gün isimlerini yerleştirelim ve ekran üzerinde görüntüleyelim.
Kod: Tümünü seç
#include <iostream>
using namespace std;
int i,j;
char a[][80]={"Pazartesi","Sali","Carsamba",
"Persembe", "Cuma", "Cumartesi", "Pazar"};
int main()
{
for (i=0;a[i][0];i++)
{
for (j=0;a[i][j];j++)
cout << a[i][j];
cout << "\n";
}
system("PAUSE");
}