Herkese iyi günler dileriz. Bu yazımızda sizlere dışarıdan girilen bir metinde aynı harflerin yan yana gelme sayısını hesaplayan C dili programının kodlarını ve anlatımı paylaşacağız.
Masaüstü programlamanın en temel dili C programlama dilidir. C dilini ve algoritmasını çözen bir kişi hemen hemen tüm dillerinin temelini anlar. Bu yüzden üniversitelerde genellikle C, C++ vb. temel yazılım dillerini öğretirler. Bizler de sizlere yardımcı olabilmek için üniversite sınavlarında sorulabilecek tarzda bir program yazmak istedik. Aslında bunu sorucevap.mmsrn.com sitemizdeki bir arkadaş yapmamızı istedi. Onun sayesinde yazdık ve sizlerle paylaşıyoruz. Arkadaşlar ufaktan programın çalışma mantığını anlatalım ardından kodları paylaşalım. Zaten kodların anlatımını da kodların yanlarına ekledik.
Şimdi bu programa yazı girmek için yeni bir metin belgesi oluşturmanız gerekiyor yani uzantısı txt olmalı çünkü program koduna böyle yazacağız. Biz örnek olması açısından mmsrn.txt adında metin belgesi oluşturduk. Metin belgesini kodlar hangi dosyada bulunuyorsa onun oraya eklemeniz gerekiyor. Dosyamıza ise “ahmett musstafa ibrahimm” yazısını girdik.
Yukarıda gördüğünüz gibi sizler de metininizi veya yazınızı yeni oluşturduğunuz metin belgesine yazmanız gerekiyor.İsmini de .txt uzantısıyla birlikte aşağıdaki program kodlarındaki m=fopen(“mmsrn.txt”,”r”) kısmına eklemeniz gerekiyor.Yani mmsrn’yi silip kendi dosyanızın adını yazın.
Bu şekilde sizler de sınırsız sayıda kelime ve yazı girebilirsiniz. Ardından programı çalıştırdığımızda bu metin belgesi içindeki yazıda yan yana aynı harf kaç kere geçmiştir onu sorgulatacağız. Şimdi kodları ve anlatımı paylaşalım.
C Programlama Dili Aynı Harflerin Yan Yana Gelme Sayısını Bulan Program Kodları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <stdio.h>//Kütüphanelerimizi ekliyoruz. #include <conio.h> #include <stdlib.h> #include <locale.h> int main(){//Burası ana fonksiyonumuz oluyor. setlocale(LC_ALL, "Turkish");//Türkçe karakter sorunu çözümü için bu kodu ekledik. FILE *m; int aa=0,gg=0,i=0;//Burada ifadelerimizi tanımladık. char ch,ca[100];//ca dizisini 100 karakterli tanımladık maksimum 100 karakter gireriz diye.Ama siz istediğiniz sayıyı yazın sorun olmaz burada. m=fopen("mmsrn.txt","r");//fopen ile metin belgemizi programa okutuyoruz ve fopen kodu içerisine dosyamızın tam adını yazıyoruz.Ben mmsrn.txt olarak oluşturmuştum siz değiştirebilirsiniz. while(!feof(m)){//Biz while ile yaptık siz for döngüsüne de alabilirsiniz. ch=getc(m);//Şimdi burada getc() kodu ile teker teker metin belgesi içindeki yazıları ch'ye aktardık. ca[i]=ch;//Ardından ch'den ise ca[] dizimize aktardık.Böylelikle diziden rahatlıkla yan yana harf kontrolü yapabileceğiz. i++; aa++;//burada aa ifadesi ile toplam karakter sayısını öğrenmiş olduk. } for(i=0;i<aa;i++){//toplam karakter sayısı aa'ya kadar for döngüsü devam etsin istedik. if(ca[i]==ca[i+1]){ //Burada if kontrolü yaptık eğer i. harf i+1. harfe eşitse bunu +1 olarak algılayacak ve gg değeri 1 artmış olacak. gg++; printf("\n %c%c harfleri yan yana yazılmış" , ca[i], ca[i+1]); } } printf("\n sonuç olarak aynı harflerin toplam yanyana gelme sayısı= %d",gg); //Sonuç olarak ise toplam yanyana girilen harf sayısını programımız vermiş olacak. getch(); return 0; } |
Gördüğünüz gibi arkadaşlar kodlar bu şekildedir. Şimdi örnek yapalım.
Biz yukarıda da yazdığımız gibi metin belgesine “ahmett musstafa ibrahimm” yazısını girmiştik. Bu metini yazdığımız yazıda ahmett kısmında t’ler yan yana gelmiş, musstafa kısmında s harfleri yan yana gelmiş, ibrahimm kısmında ise mm harfleri yan yana gelmiştir. Bu yüzden cevabımız 3 çıkacaktır. Şimdi örnek ekran görüntüsünü atalım sizlere bakalım program gerçekten doğru mu bulacak.
Evet arkadaşlar gördüğünüz gibi cevabınız doğru çıktı. Bu program sayesinde yan yana girilen harflerin sayısını bulabilirsiniz. Programı kendinize göre düzenleyebilir ve ekstra kodlar ekleyerek programı zenginleştirebilirsiniz.
Şimdilik bu kadar. Umarız faydalı olur. Anlamadığınız veya sormak istediğiniz yerler olursa lütfen yorum kısmından yazınız. Teşekkürler iyi çalışmalar dileriz…
Bu Yazıya Tepkin Ne Oldu ?