C Dili String Analiz (Strupper, Arama, Ters Çevirme , Frekans Bulma )

Aşağıdaki program c dilinde istenilen string üzerinde şu işlemleri yapmaktadır.İşlemler string.h kütüphanesi olmaksızın yapılmaktadır

  • Stringin kücük olan harflerini büyüğe çevirme (strupper fonksiyonu )
  • Stringin tamamını ters çevirme (strrev fonksiyonu)
  • String içinde belirli birşeyi arama (strstr fonksiyonu )
  • String içinde her harfin frekansını hesaplama

Dev C++ Kodu

#include <stdio.h>

       char secim,cumle[40],terscumle[40],aranacak[40],gerekli[40];
       int i,j,k;
       main() {
       printf("***************KELIME ANALIZ*************n");
       printf("Stringi giriniz: <Turkce karakter kullanmayiniz> n");
       gets(cumle);
       while(1) {
                fflush(stdin);
       printf("nn****************MENU***************nn");
       printf("Lutfen Bir Secim Yapinna> Buyuk Harf Yapmanb> Tersine Cevirmenc> String icerisinde kelime arama:nd> Frekans Hesaplama:ne> Exitn");
       printf("Secim : ");
       scanf("%c",&secim);
       switch(secim)
       {
                    case'a': harfibuyut(); break;
                    case'b': terscevir(); break;
                    case'c': arama(); break;
                    case'd': frekans(); break;
                    case'e': goto cikis; break;
                    default: printf("Hatali secim a,b,c,d,e den birini sec !n"); break;
       }
                    }
       cikis:
       getchar();   

       }  
       //FONKSİYONLAR BAŞLANGIC

       harfibuyut() {
                 for(i=0;i<40;i++) 
                 {
                  if(cumle[i] >90)  { cumle[i]-='a'-'A'; }//ASCII FARKINI ALARAK ŞARTI SAĞLAYAN DEGERLERİ BÜYÜTME İŞLEMİ
                 }
                  puts(cumle);
                    }
       ///String Ters Cevirme Fonksiyonu ..           
       terscevir() {
                  int count=0; k=0;
                  for(i=0;i<cumle[i]!='\n';i++) count++; //GİRİLEN STRİNGİN KAÇ KARAKTER 
                  for(i=count;i>=0;i--) {                //FARKLI BİR DİZİYE TERS ŞEKİLDE AKTARMA
                  terscumle[k]=cumle[i-1]; k++;  
                  }
                  aktar();                               //ANA DİZİMİ YENİ DEĞERLERLE GERİ DOLDURMA
                  puts(cumle);}
       ///Arama Fonksiyonu ... 
       arama ()   {

             printf("Aranacak kelimeyi giriniz : ");
             fflush(stdin);
             gets(aranacak);
             int count=0,boyut=0;
              for(i=0;i<aranacak[i]!='\n';i++) boyut++; // ARANACAK KELİMEMİN BOYUTUNU ALDIM 
              for(i=0; cumle[i]!='\n'; i++){
              if(cumle[i] == aranacak[0]){
              k=1;
              while(aranacak[k]!='\n' && aranacak[k]==cumle[k+i]) // STRİNGİN SONUNA KADAR HARF HARF KONTROL
              k++;//K değişkenimiz while döngüsü beraberinde artıyor
              if(k == boyut)
              count++;  // 2 boyut birbirne eşit oldugunda ve harf harf kontrol yapıldıktan sonra kaç kere tekrar etmiş arttırıyoruz
                      }
              }
              if(count>0)
              printf("%s kelimesi %d kez tekrar etmistir ",aranacak,count);
              else printf("Aranan kelime bu stringde bulunamadi");

              }

       ///Frekans Hesaplama Fonksiyonu ..          
       frekans() {
                char harf='A';
                float count,boyut=0;
                for(i=0;i<cumle[i]!='\n';i++){ if(cumle[i]!=32 )boyut++;}  //STRİNG BOYUTU ALMA '32' ascıı space tusu

                  for(j=0;j<'z'-'A'+1;j++) {  
                       count=0;  // TÜM ALFABEYİ TARAMAK İÇİN FOR **TÜRKCE KARAKTERLERDE HATA ALABİLİRSİNİZ**

                    for(i=0;i<cumle[i]!='\n';i++) {                               
                    if(cumle[i]==harf) {  count++;  }     } // HER HARFİN AYRI AYRI SAYDIRILMASI 
                    if(count>0) 
                    printf("%c %.0f kez kullanildi frekansi : %.2f n",harf,count,((count/boyut)*100)); // HARF GEÇMİŞSE FREKANS HESABINI GÖSTER        
                                  harf++;                 
                               }  
                  }      

       aktar() {
                for(i=0;i<40;i++) cumle[i]=terscumle[i]; // BAZEN LAZIM OLUYOR .. 
               }

Visual Studio Çalışır Kod

#include <stdio.h>
      //FONKSİYON PROTOTİPLERİ
       void harfibuyut(void);
	   void terscevir(void);
	   void arama(void);
	   void frekans(void);
	   void aktar();
       char secim,cumle[40],terscumle[40],aranacak[40];
       int i,j,k,count=0,boyut=0;
       main() {
       printf("***************KELIME ANALIZ*************n");
       printf("Stringi giriniz: <Turkce karakter kullanmayiniz> n");
       gets(cumle);
       while(1) {
                fflush(stdin);
       printf("nn****************MENU***************nn");
       printf("Lutfen Bir Secim Yapinna> Buyuk Harf Yapmanb> Tersine Cevirmenc> String icerisinde kelime arama:nd> Frekans Hesaplama:ne> Exitn");
       printf("Secim : ");
       scanf("%c",&secim);
       switch(secim)
       {
                    case'a': harfibuyut(); break;
                    case'b': terscevir(); break;
                    case'c': arama(); break;
                    case'd': frekans(); break;
                    case'e': goto cikis; break;
                    default: printf("Hatali secim a,b,c,d,e den birini sec !n"); break;
       }
                    }
       cikis:
       getchar();   
            
       }  
       //FONKSİYONLAR BAŞLANGIC
       
       void harfibuyut(void) {
                 for(i=0;i<40;i++) 
                 {
                  if(cumle[i] >90)  { cumle[i]-='a'-'A'; }//ASCII FARKINI ALARAK ŞARTI SAĞLAYAN DEGERLERİ BÜYÜTME İŞLEMİ
                 }
                  puts(cumle);
                    }
       ///String Ters Cevirme Fonksiyonu ..           
      void terscevir() {
                  int count=0; k=0;
                  for(i=0;i<cumle[i]!='\n';i++) count++; //GİRİLEN STRİNGİN KAÇ KARAKTER 
                  for(i=count;i>=0;i--) {                //FARKLI BİR DİZİYE TERS ŞEKİLDE AKTARMA
                  terscumle[k]=cumle[i-1]; k++;  
                  }
                  aktar();                               //ANA DİZİMİ YENİ DEĞERLERLE GERİ DOLDURMA
                  puts(cumle);}
       ///Arama Fonksiyonu ... 
      void arama ()   {
             
             printf("Aranacak kelimeyi giriniz : ");
             fflush(stdin);
             gets(aranacak);
             
              for(i=0;i<aranacak[i]!='\n';i++) boyut++; // ARANACAK KELİMEMİN BOYUTUNU ALDIM 
              for(i=0; cumle[i]!='\n'; i++){
              if(cumle[i] == aranacak[0]){
              k=1;
              while(aranacak[k]!='\n' && aranacak[k]==cumle[k+i]) // STRİNGİN SONUNA KADAR HARF HARF KONTROL
              k++;//K değişkenimiz while döngüsü beraberinde artıyor
              if(k == boyut)
              count++;  // 2 boyut birbirne eşit oldugunda ve harf harf kontrol yapıldıktan sonra kaç kere tekrar etmiş arttırıyoruz
                      }
              }
              if(count>0)
              printf("%s kelimesi %d kez tekrar etmistir ",aranacak,count);
              else printf("Aranan kelime bu stringde bulunamadi");
              
              }
            ;
    
 
                  
       ///Frekans Hesaplama Fonksiyonu ..          
     void frekans() {
                char harf='A';
                float count,boyut=0;
                for(i=0;i<cumle[i]!='\n';i++){ if(cumle[i]!=32 )boyut++;}  //STRİNG BOYUTU ALMA '32' ascıı space tusu
                  
                  for(j=0;j<'z'-'A'+1;j++) {  
                       count=0;  // TÜM ALFABEYİ TARAMAK İÇİN FOR **TÜRKCE KARAKTERLERDE HATA ALABİLİRSİNİZ**
          
                    for(i=0;i<cumle[i]!='\n';i++) {                               
                    if(cumle[i]==harf) {  count++;  }     } // HER HARFİN AYRI AYRI SAYDIRILMASI 
                    if(count>0) 
                    printf("%c %.0f kez kullanildi frekansi : %.2f n",harf,count,((count/boyut)*100)); // HARF GEÇMİŞSE FREKANS HESABINI GÖSTER        
                                  harf++;                 
                               }  
                  }      
                 
      void aktar() {
                for(i=0;i<40;i++) cumle[i]=terscumle[i]; // BAZEN LAZIM OLUYOR .. 
               }
               
     

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir