C++ ile Yığıt Yapısı Kullanarak Girilen İfade İçinde Parantez Kontrolü

Batuhan Düzgün tarafından yayınlanmıştır 24. January 2011 10:13

 

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

class MyStack
{
      private :
              int ParantezSayaci;
              int StackElemanSayaci;
              char *KarakterDizisi;
              
              char MyStack_ElemanCikar(){
              StackElemanSayaci--;
              char Gecici=KarakterDizisi[StackElemanSayaci];
              KarakterDizisi[StackElemanSayaci]=' ';
              
              return Gecici;
              }
              
      public :
              
              MyStack(int MAX){
              ParantezSayaci=0;
              StackElemanSayaci=0;
              KarakterDizisi=new (nothrow) char[MAX];
              }
              
              void MyStack_ElemanEkle(char GelenKarakter){
              KarakterDizisi[StackElemanSayaci]=GelenKarakter;
              StackElemanSayaci++;
              
              }
              
              int IfadeUygunmu(){
              int Bayrak=1;
              int MAX=StackElemanSayaci;
              
              for(int i=0; i<MAX; i++){
              
              char Gecici=MyStack_ElemanCikar();

              if(Gecici=='('){
              ParantezSayaci++;
              
              }
              else if(Gecici==')'){
              ParantezSayaci--;
              
              }
              
              if(ParantezSayaci<0){
              Bayrak=0;
              break;
              }
              }  
              
              if(ParantezSayaci!=0){
              Bayrak=0;
              }
              
              return Bayrak;
              }
};

int main(int argc, char *argv[])
{
    string Ifade;
    
    cout<<"Parantez kontrolu yapilacak olan ifadeyi giriniz...\n";
    cin>>Ifade;
    
    MyStack *YigitYapisi=new MyStack((int)Ifade.length());
    
    for(int i=Ifade.length()-1; i>-1; i--){
    
    char Gecici=(char)Ifade[i];

    YigitYapisi->MyStack_ElemanEkle(Gecici);
    
    }
    if(YigitYapisi->IfadeUygunmu()==1){
    cout<<"Girilen ifade uygundur!\n";
    }
    else
    {
    cout<<"Girilen ifade uygun degildir!\n";
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Batuhan Düzgün

Sakarya Üniversitesi

Bilgisayar Mühendisliği

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Qt ve C++

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster