C++ dilinde diziler konusundan bahsedeceğim yine. Çünkü diziler gerçekten bir çok dilde temel oluşturmakta. Bu sebeple bu yazıda C++ dilince diziler ve kelime işlemleri yapan bir uygulama paylaşacağım.
Uygulamada kullanıcıdan alınan kelime bir diziye atılıyor. Sonrasında ise kendi yazdığımız bir fonksiyon ile bu dizinin uzunluğu bulduruluyor. Başka bir fonksiyon ile kullanıcıdan alınana cümlede ki boşluk karakterlerinin indisleri tespit ediliyor. Sonrasın da ise cümlemizi iki farklı tersten yazılım şekli ile ekrana yazdırıyoruz.
Uygulama hakkında detaylı bilgi ve indirme linki aşağıda mevcuttur.
Uygulama Bilgileri;
Dil: C++
Amacı: C++ ta dizi işlemleri, string işleme, fonksiyon yapısı, döngüler ile string yazdırma
Uygulamaya ait kod;
//19.02.2011 Diziler ve Stringler de işlemler #include <iostream> #include <stdlib.h> #include <conio.h> #define myCharLen 100//Dizi boyutu int arrayLen(char word[]);//Dizi uzunluğunu bulan fonksiyon void spaceStr(char word[],int direction);//Dizide ki boşlukları bulan fonksiyon void writeStr(char word[],int first,int last,int direction);//Karakter aralığını yazan fonksiyon void myMenu(void); int main(void) { myMenu(); char myWord[myCharLen]; printf("Kelime giriniz: "); gets(myWord);//gets ile karakter dizisi dizi içerisine aktarıldı printf("\nGirilen metin uzunlugu = %d\n",arrayLen(myWord)); printf("\nGirilen metnin tersi = "); spaceStr(myWord,0); printf("\nGirilen metnin tam tersi = "); spaceStr(myWord,1); printf("\n\n"); myMenu(); system("pause"); } void spaceStr(char word[],int direction) { int i,freeChar; int arrayLength = arrayLen(word)-1; //Diziler 0 sıfırdan başlıyor. -1 in amacı bu int preChar = arrayLength;//Önce ki karakter ilk durumda dizinin son indisinde if(direction==0) { for (i=arrayLength;i>=0;i--)//Tersten yazdırıyoruz { if(word[i] == 32) { //printf("%d. karakter bosluk",i); freeChar=i;//Boşluk bulundu ve boşKarakter değişkenine indis değeri atıldı writeStr(word,freeChar,preChar,direction);//fonksiyonumuz çağrıldı preChar=freeChar;//az önce bulunan boşlukKarakteri indisi şimdi önceki karakter oldu } } writeStr(word,0,preChar,direction);//cümlenin kalan son kısmını yazdırmak için } else if(direction==1) { int preChar = 0;//cümleyi baştan okutuyoruz.İlk karakterimiz sıfırıncı indiste for(i=0;i<=arrayLength;i++) { if(word[i] == 32) { freeChar=i; writeStr(word,preChar,freeChar,direction); preChar=freeChar; } } writeStr(word,preChar,arrayLength,direction);//en son kelimeyi yazdırmak için } else printf("An Error Funtion: spaceStr--> Direction"); } void writeStr(char word[],int first,int last,int direction) {//direction --> 0:düz || 1:ters int i; if(direction == 0) { for(i=first;i<=last;i++) printf("%c",word[i]); printf(" "); } else if(direction == 1) { for(i=last;i>=first;i--) printf("%c",word[i]); printf(" "); } else printf("An Error Funtion: WriteStr--> Direction"); } int arrayLen(char word[]) { int i = 0; while (word[i] != '\0')//word dizisinde \0 görene kadar oku i++; return i; } void myMenu(void) { printf("\t_________________________________________________________\n\n"); printf("\t blog.selcukoksuz.com \n"); printf(" Programlam 2 Dersi Dizilerde Islemler \n\n"); printf("\t_________________________________________________________\n\n"); } /*Bu kodlama B.Selçuk ÖKSÜZ tarafından hazırlanmıştır. Kodlar hakkında yada programlama hakkında düşünce ve görüşlerinizi http://blog.selcukoksuz.com adresi altında iletebilirsiniz. Facebook sayfası:*/
Uygulama Dosyası İndirme Linki:
Yorumunuz