SUDOKU OYUNUNUN C++ TA GERÇEKLENMESİ

SUDOKU OYUNU BİLİNDİĞİ GİBİ ZEVKLİ BİR BULMACA OYUNUDUR.BU BULMACADA KURAL YATAY VE DİKEY BİR ŞEKİLDE AYRICA HER 3*3 MATRİSLERİN İÇERİSİNDE Kİ TÜM RAKAMLAR DA 1-9 ARASINDA OLMALIDIR BUNU RANDOM OLARAK TA YAPILABİLİR.

#include<iostream>
using namespace std;

int p[9][9],q[9][2],r[9][2];

void eliminate(int a,int b)
{
   if(a>0) 
    {
       for(int x=0;x<a;x++)    
          {
             for(int i=0;i<9;i++) 
               if(q[i][0]==p[x][b])
               {
                     q[i][1]=1;
                     break;             
               }
          } 
    }
    
        if(b>0) 
       {
         for(int x=0;x<b;x++)    
          {
             for(int i=0;i<9;i++) 
               if(q[i][0]==p[a][x])
               {
                     q[i][1]=1;
                     break;             
               }
          } 

    }
    
    if(a%3==1)
     a-=1;
     else if(a%3==2)
     a-=2;
     if(b%3==1)
     b-=1;
     else if(b%3==2)
     b-=2;
   
    for(int x=a;x<=a+2;x++)
    {
       for(int y=b;y<=b+2;y++)    
            if(p[x][y]!=0)
              {
                 for(int i=0;i<9;i++)        
                    if(q[i][0]==p[x][y])
                       {
                           q[i][1]=1;            
                            break;           
                       }                      
              }           
    }
}

void choose(int a,int b)
{
        int l=0;
   if(a>0&&b<6)
   { 
   if(b%3==0&&b+3<=8)
   b+=3;
   else if(b%3==1&&b+3<=8)
   b+=2;
   else if(b%3==2&&b+3<=8)
   b+=1;

   a-=1;
  
   for(int x=b;x<=b+2;x++)
   {
       r[l][0]=p[a][x];
       l++;           
   } 
   

    int count=0;
    
   for(int i=0;i<9;i++) 
     {
     if(q[i][1]==0)
        {
           for(int p=0;p<9;p++)
           if(r[p][0]!=0&&r[p][0]==q[i][0])
           count++;
           if(count==0)
           {   
           r[l][0]=q[i][0]; 
           l++;     
           break;       
           } 
        count=0;
} }

}

void appointment()
{
      for(int i=0;i<9;i++) 
      {
      q[i][0]=i+1; 
      q[i][1]=0;
      }
     
     for(int i=0;i<9;i++) 
      {
      r[i][0]=0; 
      r[i][1]=0;
      }
     
}

bool control(int a,int b,int c)
{
     int count=0;
    
     for(int x=0;x<b;x++)
     if(c==p[a][x])
     count++;
    
     for(int x=0;x<a;x++)
     if(c==p[x][b])
     count++;
    
     if(a%3==1)
     a-=1;
     else if(a%3==2)
     a-=2;
     if(b%3==1)
     b-=1;
     else if(b%3==2)
     b-=2;
   
    for(int x=a;x<=a+2;x++)
    {
       for(int y=b;y<=b+2;y++)    
          if(c==p[x][y])
           count++;                        
                         
    }
    
     if(count==0)
     return true;
}

void start()
{
  
     int y;
    for(int i=0;i<9;i++)     
     {
       for(int j=0;j<9;j++)    
         {
         eliminate(i,j);
         choose(i,j);
        
         for(int h=0;h<9;h++)
         if(r[h][0]!=0)
         {
            y=r[h][0];
            if(control(i,j,y)==true)
            {          
           p[i][j]=y;
           r[h][1]=1;
           break;           
         }
         }
            appointment();
     }
    
     }
     
}

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

main()
{
    appointment();   //  q ya değer atadık
    start(); 
    print(); 
   
system (“pause”);     
}

MEHMET SALİH DEVECİ

YAZILIM MÜHENDİSİ

 217 views last month,  3 views today

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 mehmetsalih.deveci@outlook.com. -                                                                                                                                                                                                                                                 - Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  mehmetsalih.deveci@outlook.com a mail atabilirsiniz.

Check Also

blank

Visual Kriptografi Ulutaş ın Metodu -6

İkinci Share in Üretilmesi Share ler için pattern seçme sürecinde üç share in patternleri belirlenirken …

9 comments

  1. blank

    yaaaa bn bu kodları c++ da derledm fakat 3*3 lük bütün sayıları gösteriyor bnm istediğimm kod aslında boşluklar olup kişi kendisi dolduracak ve yanlış yere sayı geldiğinde ekrena “yanlış girdiniz” die uyarı versin istiyorum. oyun tamamlandığında ise tebrikler oyun bitti desin istiyorum ve ekrana “başka bir oyuna geçmek istermisiniz “diye yazsın ve kullanıcııda “evett” ,”hayır” dediğinde oyun biitsin veya kullanıcı tekrar başka bir oyuna geçsin bilmem anlatabildim mi derdimi çok araştırdım ama şuan kimse yapamadı. sizden ümit bekliorum yoksa sınııfta kalıcammmm:(

  2. blank

    sayın mehmet hocam

    sudoku kodunuzu inceledim yalnız her defasında aynı sudoku tablosunu oluşturan bi kod bu.ben şu sıralar sudoku uygulaması üzerine projeyle uğraşıyorum.benim her defasında farklı bi sudoku tablosu oluşturan bi koda ihtiyacım var sizin yazdığınız gibi tamamen dolu olacak şekilde.belki sizin yazdığınız kodu kullanabilirim ama bunu nasıl her defasında çalıştırdığımda farklı bi tablo elde edebilirim.

    ilginiz için teşekkürler.

  3. blank

    dediğiniz şekilde yaptım ama işin içine kontroller girdiği için 5-10 saniyede felan cevap veriyor.neyse en azından şimdilik buda iyi.
    sağolun yardımlarınız için.

  4. blank

    Bana Visual Studyoda Sudoku programı lazım
    Direk İndireceğim Bi Link vrsa Atarmısnız

  5. blank

    What’s the point of writing about this?

Leave a Reply