SEKİZ (8) VEZİR OYUNUNUN C++ TA GERÇEKLENMESİ

SEKİZ VEZİR,SATRANÇ TAHTASI ÜZERİNDE HİÇ BİR VEZİRİN BİRBİRLERİNİ TEHDİT ETMEYECEK ŞEKİLDE 8*8 LİK BİR MATRİS ÜZERİNDE DİZİLMESİYLE GERÇEKLENEN BİR OYUNDUR BURDA BEN RANDOM OLARAK YER BULMAYA ÇALIŞTIĞIM İÇİN BAZEN SONUÇ ÇIKMAYABİLİR BUNUN İÇİN BİR KAÇ DEFA KOŞTURULMASI GEREKEBİLİR.ANLAŞILMAYAN YERLERİ SORABİLİRSİNİZ.

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;

char p[8][8];

void isaretle(int a,int b)
{
    int c=b;
    if(a==7)
     return;
    
     if(b==0&&a<7)
     {
        for(int i=a+1;i<8;i++)
           p[i][++b]=’,’;            
     for(int i=a+1;i<8;i++)
        p[i][0]=’,’;   
     }
     else if(b==7&&a<7)
     {
       for(int i=a+1;i<8;i++)
           p[i][–b]=’,’;     
        for(int i=a+1;i<8;i++)
        p[i][7]=’,’;   
     }
     else if(b!=0&&b!=7&&a<7)
     {
          for(int i=a+1;i<8;i++)
          {
           b++;      
           if(b<8)      
           p[i][b]=’,’;    
           else
           break;
           }
          b=c;
         for(int i=a+1;i<8;i++)
           p[i][b]=’,’;
           b=c;
         for(int i=a+1;i<8;i++)
         {
            b–;    
           if(b>=0)     
           p[i][b]=’,’;   
           else
           break;
           }
     }  
}

void deveci()
{
           for(int i=0;i<8;i++)
           for(int j=0;j<8;j++)        
           p[i][j]=’.’;    
}

bool okay(int a)
{
     int count=0;
     for(int j=0;j<8;j++)
     if(p[a][j]==’.’)
     count++;
    
     if(count==0)
     return false;
     else
     return true;   
}

void start()
{
     int y,count=0;

     for(int i=0;i<8;i++)
     {
        y:    
          int x=rand()%8;
             if(p[i][x]!=’.’)
                goto y;
         
          if(okay(i)==true)
          {    
           p[i][x]=’V’;
            isaretle(i,x);    
          }
          else
          {
          count++;
          break;
          }
     }    

}

void print()
{
    for(int i=0;i<8;i++)
    {
       for(int j=0;j<8;j++)           
        cout<<p[i][j]<<”  “;
        cout<<endl<<endl;   
    }  
    
}

main()
{
      srand(time(NULL));
      deveci();
      start();
      print();
     
     
     
system (“pause”);     
}

MEHMET SALİH DEVECİ

YAZILIM MÜHENDİSİ

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

25 comments

  1. Merhaba çok güzel bir konu teşekkürler..;)

    Benim bir sorum olucaktı? C#’Da console ekranında yazmak istiyorum yardımcı olursanız sevinirim.. :/

    • BİLGİSAYAR MÜHENDİSİ

      Aslında kodların tamamını C# ekranına entegre etmeniz çok kolaydır…zaten bu kod genel anlamda programlanmıştır bu yüzden C# a entegresi çok kolaydır sanırım kısa sürede gerçekleştirebilirsiniz.

  2. bu s,stemi console uygulamasına aktaramadım c# kullanıyorum . Bu konuda yardımcı olursanız çok sevinirim. Benim için önemli bir ödev

  3. bu sanırım c++ da yazılmış. bunu c# a nasıl geçirebiliriz acaba.bilmediğim cok terim var ondan sanırım yardımcı olabilirseniz çok sevinirim yada bir iletişim bilgisi verirseniz size ulsassam

  4. Ya benim bunu C de yazmam lazım :S C++ değil 🙂 ama nasıl yapıcamı bi türlü çözemedim yani mantığını anlamadım :SYardım ederseniz çok sevinicem :S

    • BİLGİSAYAR MÜHENDİSİ

      Merhaba merve hanım….Sadece bu uygulama için konuşuyorum Bu uygulama için yazdığım kod içerisinde sadece cout ve cin için printf ve scanf kullanmanız bununla beraber kütüphane olarak ise #include yerine #include ve #include kullanmanız yeterlidir…Bu değişiklikleri yaptıktan sonra ortaya çıkacak kod C ile yazılmış bir 8 vezir oyunu olmuş olacaktır…

  5. 1 aydır c# da ugraşıyorum ve yapamadım artık aptal olduguma inanmaya başladım :S
    ne yaptıysam olmuyor ..

    • BİLGİSAYAR MÜHENDİSİ

      Estafirullah Yusuf bey…Öncellikle şunu söyliyeyim 8 vezir in C# lık tarafı pek yok çünkü algoritmik bir problemdir…O yüzden öncellikle problemin algoritmasını çıkarıp ardından kodlasanız iyi olur…

  6. abi yok ya bıktırdı beni artık ..ama ugraşıyorum yinede neden ugraşıyorsam..bir gün biiznillah bu soruyu cözücem cok yakında ..c# da yeni başladım belki bir türlü o yüzden cözemiyorum ama bilmiyorum artık kafayı yetirdi abi..

  7. algoritmayı cözemedim galiba eger genelde tek algoritmamı kullanılır ? tam olarak bir bilgim yok mehmet abi bu arada meslek lisesi okuyorum..

    • meslek lisesi okuyorum dememin sebepi algoritmalar ve sayre konusu işlemedik abi daha yeni yeni yazılıma girdik .. acaba bu soruyu cözmek icin bir algoritmamı bilmek lazım..

      • BİLGİSAYAR MÜHENDİSİ

        EEE yusuf tabiki bu problem sadece algoritmik bir problemdir..İşin matematiğini algoritmasını çözdükten sonra programlaman iyise 1-2 saatte kodlarsın bu problemi…Zaten bu problemdeki en büyük şey Algoritmadır…

  8. ilk veziri koydugum yere göre bazen 8 tane vezir diziyor bazen de sıkışıyor 7 tane yada daha sacma birşey cıkartıyor acaba nasıl bir algoritma izlemeliyim cözüm icin abi ?

  9. tmm rabbime cok şükür yaptım..:) bir count degişkeni ile 8 vezirden fazla vezir varsa bir daha random üretiyor.bu sefer başarılı olunuyor : )

  10. rabbe hamd-ü senalar olsun diyelim..bu arada sen bende eklisin ama hic acmıyorsun abi : ) haberin olsun..

    • BİLGİSAYAR MÜHENDİSİ

      neyi hiç açmıyorum Face imi Msn imi??? Msn i ben nerdeyse hiç kullanmıyom ama face sürekli açık…

  11. iyi günler 8 vezir problemi konusunda sormam gereken bazı seyler var yardımcı olabilirseniz cok sevinirim

  12. ” SİSTEM BELİRTİLEN DOSYAYI BULAMADI ” HATASI ALIYORUM NE YAPMAM LAZIM 🙁

  13. TY for this piece, it has been incredibly helpful to me! Much easier to understand than anything else out there.

  14. There are some attention-grabbing cut-off dates in this article but I don’t know if I see all of them heart to heart. There’s some validity but I’ll take hold opinion till I look into it further. Good article , thanks and we would like extra! Added to FeedBurner as properly

Leave a Reply

Your email address will not be published. Required fields are marked *