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

<<  April 2019  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Yazıları geniş takvimde göster