Napisałem program , który miał rozwiązywać sudoku, ale coś nie działa.
Program zatrzymuj się po wyświetleniu: zaczynamy rozwiązywanie, i nic nie robi
#include <iostream>
#include<conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int w[81];
int s[81]={0};
int a,b,c,d ;
int i=0;
int roz(int i)
{
for(a=0,b=0,c=0, s[i]=1; a==0||b==0||c==0;a=1,b=1,c=1);
{
/***********sprawdza w poziomie***********/
if(i==(0||9||18||27||36||45||54||63||72)); //jesli jest w pierwszej kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i+4]||s[i+5]||s[i+6]||s[i+7]||s[i+8]));
{
s[i]+=1;
b=0;
c=0;
}
}
if (i==(1||10||19||28||37||46||55||64||73)); //jesli jest w 2. kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i+4]||s[i+5]||s[i+6]||s[i+7]||s[i-1]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(2||11||20||29||38||47||56||65||74)) //jesli jest w 3. kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i+4]||s[i+5]||s[i+6]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(3||12||21||30||39||48||57||66||75)) //jesli jest w 4.kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i+4]||s[i+5]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(4||13||22||31||40||49||58||67||76)) //jesli jest w 5. kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i+4]||s[i-4]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(5||14||23||32||41||50||59||68||77)) //jesli jest w 6. kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i+3]||s[i-5]||s[i-4]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(6||15||24||33||42||51||60||69||78)) //jesli jest w 7. kolumnie
{
while(s[i]==(s[i+1]||s[i+2]||s[i-6]||s[i-5]||s[i-4]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(7||16||25||34||43||52||61||70||79)) //jesli jest ww 8.kolumnie
{
while(s[i]==(s[i+1]||s[i-7]||s[i-6]||s[i-5]||s[i-4]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
if(i==(8||17||26||35||44||53||62||71||80)) //jesli jest w 9. kolumnie
{
while(s[i]==(s[i+1]||s[i-7]||s[i-6]||s[i-5]||s[i-4]||s[i-3]||s[i-1]||s[i-2]));
{
s[i]+=1;
b=0;
c=0;
}
}
/**************sprawdza w pionie************/
if(i==(0||1||2||3||4||5||6||7||8)) //jesli jest w 1. wierszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i+36]||s[i+45]||s[i+54]||s[i+63]||s[i+72]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(9||10||11||12||13||14||15||16||17)) //jesli jest w 2 .wierszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i+36]||s[i+45]||s[i+54]||s[i+63]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(18||19||20||21||22||23||24||25||26)) //jesli jest w 3. wieszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i+36]||s[i+45]||s[i+54]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(27||28||29||30||31||32||33||34||35)) //jesli jest w 4. wierszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i+36]||s[i+45]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(36||37||38||39||40||41||42||43||44)) // jesli jest w 5.wierszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i+36]||s[i-36]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(45||46||47||48||49||50||51||52||53)) //jesli jest w 6. wieszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i+27]||s[i-45]||s[i-36]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(54||55||56||57||58||59||60||61||62)) //jesli jest w 7. wierszu
{
while(s[i]==(s[i+9]||s[i+18]||s[i-54]||s[i-45]||s[i-36]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(63||64||65||66||67||68||69||70||71)) //jesli jest w 8. kolumnie
{
while(s[i]==(s[i+9]||s[i-63]||s[i-54]||s[i-45]||s[i-36]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
if(i==(72||73||74||75||76||77||78||79||80)) // jesli jest w 9.kolumnie
{
while(s[i]==(s[i-72]||s[i-63]||s[i-54]||s[i-45]||s[i-36]||s[i-27]||s[i-18]||s[i-9]))
{
s[i]+=1;
a=0;
c=0;
}
}
/*******sprawdza w kwadracie****/
if(i==(0||3||6||27||30||33||54||57||60))//jesli jest w lewym górnym rogu kwadratu
{
while(s[i]==(s[i+1]||s[i+2]||s[i+9]||s[i+10]||s[i+11]||s[i+18]||s[i+19]||s[i+20]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(1||4||7||28||31||34||55||58||61))//jesli jest na srodku gory kwadratu
{
while(s[i]==(s[i-1]||s[i+1]||s[i+8]||s[i+9]||s[i+10]||s[i+17]||s[i+18]||s[i+19]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(2||5||8||29||32||35||56||59||62))// jesli jest w prawym gornym rogu kwadratu
{
while(s[i]==(s[i-2]||s[i-1]||s[i+7]||s[i+8]||s[i+9]||s[i+16]||s[i+17]||s[i+18]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(9||12||15||36||39||42||63||66||69))//jesli jest w lewym srodku kwadratu
{
while(s[i]==(s[i-9]||s[i-8]||s[i-7]||s[i+1]||s[i+2]||s[i+9]||s[i+10]||s[i+11]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(10||13||16||37||40||43||64||67||70))//jesli jest w srodku kwadratu
{
while(s[i]==(s[i-10]||s[i-9]||s[i-8]||s[i-1]||s[i+1]||s[i+8]||s[i+9]||s[i+10]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(11||14||17||38||41||44||65||68||71))//jesli jest w prawym srodku kwadratu
{
while(s[i]==(s[i-11]||s[i-10]||s[i-9]||s[i-2]||s[i-1]||s[i+7]||s[i+8]||s[i+9]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(18||21||24||45||48||51||72||75||78))//jesli jest w lewym dolnym rogu kwadratu
{
while(s[i]==(s[i-18]||s[i-17]||s[i-16]||s[i-9]||s[i-8]||s[i-7]||s[i+1]||s[i+2]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(19||22||25||46||49||52||73||76||79))//jesli jest w dolnym srodku kwadratu
{
while(s[i]==(s[i-19]||s[i-18]||s[i-17]||s[i-10]||s[i-9]||s[i-8]||s[i-1]||s[i+1]))
{
s[i]+=1;
a=0;
b=0;
}
}
if(i==(20||23||26||47||50||53||74||77||80))//jesli jest w prawym dolnym rogu
{
while(s[i]==(s[i-20]||s[i-19]||s[i-18]||s[i-11]||s[i-10]||s[i-9]||s[i-2]||s[i-1]))
{
s[i]+=1;
a=0;
b=0;
}
}
}
}
int main(int argc, char** argv)
{
cout<<"ustal cyfry:"<<endl;
for(i=0; i<81; ++i)
{
cin>>s[i];
w[i]=s[i];
if ( (i==8) || (i==17) || (i==26) || (i==35) || (i==44) || (i==53) || (i==62) || (i==71) ||(i==80) )
{
cout<<s[0]<<s[1]<<s[2]<<"|"<<s[3]<<s[4]<<s[5]<<"|"<<s[6]<<s[7]<<s[8] <<endl // wyswietla sudoku
<<s[9]<<s[10]<<s[11]<<"|"<<s[12]<<s[13]<<s[14]<<"|"<<s[15]<<s[16]<<s[17]<<endl
<<s[18]<<s[19]<<s[20]<<"|"<<s[21]<<s[22]<<s[23]<<"|"<<s[24]<<s[25]<<s[26]<<endl
<<"-----------"<<endl
<<s[27]<<s[28]<<s[29]<<"|"<<s[30]<<s[31]<<s[32]<<"|"<<s[33]<<s[34]<<s[35]<<endl
<<s[36]<<s[37]<<s[38]<<"|"<<s[39]<<s[40]<<s[41]<<"|"<<s[42]<<s[43]<<s[44]<<endl
<<s[45]<<s[46]<<s[47]<<"|"<<s[48]<<s[49]<<s[50]<<"|"<<s[51]<<s[52]<<s[53]<<endl
<<"-----------"<<endl
<<s[54]<<s[55]<<s[56]<<"|"<<s[57]<<s[58]<<s[59]<<"|"<<s[60]<<s[61]<<s[62]<<endl
<<s[63]<<s[64]<<s[65]<<"|"<<s[66]<<s[67]<<s[68]<<"|"<<s[69]<<s[70]<<s[71]<<endl
<<s[72]<<s[73]<<s[74]<<"|"<<s[75]<<s[76]<<s[77]<<"|"<<s[78]<<s[79]<<s[80]<<endl;
}
}
cout<<"Zacznamy rozwiazywanie"<<endl;
for(i=0; i<81 ; ++i)
{
if(w[i]==0)
{
roz(i);
if(s[i]==10)
{
s[i]=0;
for(d=i;w[d]>0;++d) ;
i-=d;
}
}
}
cout<<s[0]<<s[1]<<s[2]<<"|"<<s[3]<<s[4]<<s[5]<<"|"<<s[6]<<s[7]<<s[8] <<endl // wyswietla sudoku
<<s[9]<<s[10]<<s[11]<<"|"<<s[12]<<s[13]<<s[14]<<"|"<<s[15]<<s[16]<<s[17]<<endl
<<s[18]<<s[19]<<s[20]<<"|"<<s[21]<<s[22]<<s[23]<<"|"<<s[24]<<s[25]<<s[26]<<endl
<<"-----------"<<endl
<<s[27]<<s[28]<<s[29]<<"|"<<s[30]<<s[31]<<s[32]<<"|"<<s[33]<<s[34]<<s[35]<<endl
<<s[36]<<s[37]<<s[38]<<"|"<<s[39]<<s[40]<<s[41]<<"|"<<s[42]<<s[43]<<s[44]<<endl
<<s[45]<<s[46]<<s[47]<<"|"<<s[48]<<s[49]<<s[50]<<"|"<<s[51]<<s[52]<<s[53]<<endl
<<"-----------"<<endl
<<s[54]<<s[55]<<s[56]<<"|"<<s[57]<<s[58]<<s[59]<<"|"<<s[60]<<s[61]<<s[62]<<endl
<<s[63]<<s[64]<<s[65]<<"|"<<s[66]<<s[67]<<s[68]<<"|"<<s[69]<<s[70]<<s[71]<<endl
<<s[72]<<s[73]<<s[74]<<"|"<<s[75]<<s[76]<<s[77]<<"|"<<s[78]<<s[79]<<s[80]<<endl;
}
Ma ktoś pomysł co zrobiłem źle??