MasterOfTheDark
Grünschnabel
Code:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int s[81];//array
int i;//laufvariable der for schleifen
srand(time(NULL));
for(i=0;i<81;i=i+1)
{
s[i]=rand()%9+1;
}
//wagrecht
for(i=0;i<9;i=i+1)//schleife wird 8 mal durchgeführt, in der schlefie wird überprüft ob es //gleiche zahlen in der selben reihe gibt
{
while((s[i*9]==s[i*9+1])||(s[i*9]==s[i*9+2])||(s[i*9]==s[i*9+3])||(s[i*9]==s[i*9+4])||(s[i*9]==s[i*9+5])||(s[i*9]==s[i*9+6])||(s[i*9]==s[i*9+7])||(s[i*9]==s[i*9+8]))//schließt aus, dass die erste zahl in der zeile gleich mit allen anderen ist
{
s[i*9]=rand()%9+1;
}
while((s[i*9+1]==s[i*9])||(s[i*9+1]==s[i*9+2])||(s[i*9+1]==s[i*9+3])||(s[i*9+1]==s[i*9+4])||(s[i*9+1]==s[i*9+5])||(s[i*9+1]==s[i*9+6])||(s[i*9+1]==s[i*9+7])||(s[i*9+1]==s[i*9+8]))//schließt aus, dass die zweite zahl in der zeile gleich mit allen anderen ist, die nächsten schleifen machen genau das selbe mit der darauffolgenend zahl=>zahlen einer zeile sidn immer unterschiedlich
{
s[i*9+1]=rand()%9+1;
}
while((s[i*9+2]==s[i*9+1])||(s[i*9+2]==s[i*9])||(s[i*9+2]==s[i*9+3])||(s[i*9+2]==s[i*9+4])||(s[i*9+2]==s[i*9+5])||(s[i*9+2]==s[i*9+6])||(s[i*9+2]==s[i*9+7])||(s[i*9+2]==s[i*9+8]))
{
s[i*9+2]=rand()%9+1;
}
while((s[i*9+3]==s[i*9])||(s[i*9+3]==s[i*9+1])||(s[i*9+3]==s[i*9+2])||(s[i*9+3]==s[i*9+4])||(s[i*9+3]==s[i*9+5])||(s[i*9+3]==s[i*9+6])||(s[i*9+3]==s[i*9+7])||(s[i*9+3]==s[i*9+8]))
{
s[i*9+3]=rand()%9+1;
}
while((s[i*9+4]==s[i*9])||(s[i*9+4]==s[i*9+1])||(s[i*9+4]==s[i*9+2])||(s[i*9+4]==s[i*9+3])||(s[i*9+4]==s[i*9+5])||(s[i*9+4]==s[i*9+6])||(s[i*9+4]==s[i*9+7])||(s[i*9+4]==s[i*9+8]))
{
s[i*9+4]=rand()%9+1;
}
while((s[i*9+5]==s[i*9])||(s[i*9+5]==s[i*9+1])||(s[i*9+5]==s[i*9+2])||(s[i*9+5]==s[i*9+3])||(s[i*9+5]==s[i*9+4])||(s[i*9+5]==s[i*9+6])||(s[i*9+5]==s[i*9+7])||(s[i*9+5]==s[i*9+8]))
{
s[i*9+5]=rand()%9+1;
}
while((s[i*9+6]==s[i*9])||(s[i*9+6]==s[i*9+1])||(s[i*9+6]==s[i*9+2])||(s[i*9+6]==s[i*9+3])||(s[i*9+6]==s[i*9+4])||(s[i*9+6]==s[i*9+5])||(s[i*9+6]==s[i*9+7])||(s[i*9+6]==s[i*9+8]))
{
s[i*9+6]=rand()%9+1;
}
while((s[i*9+7]==s[i*9])||(s[i*9+7]==s[i*9+1])||(s[i*9+7]==s[i*9+2])||(s[i*9+7]==s[i*9+3])||(s[i*9+7]==s[i*9+4])||(s[i*9+7]==s[i*9+5])||(s[i*9+7]==s[i*9+6])||(s[i*9+7]==s[i*9+8]))
{
s[i*9+7]=rand()%9+1;
}
while((s[i*9+8]==s[i*9])||(s[i*9+8]==s[i*9+1])||(s[i*9+8]==s[i*9+2])||(s[i*9+8]==s[i*9+3])||(s[i*9+8]==s[i*9+4])||(s[i*9+8]==s[i*9+5])||(s[i*9+8]==s[i*9+6])||(s[i*9+8]==s[i*9+7]))
{
s[i*9+8]=rand()%9+1;
}
}
//wagrecht sollte unterschiedlich sein
printf("%d %d %d %d %d %d %d %d %d \n",s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8]);
printf("%d %d %d %d %d %d %d %d %d \n",s[9],s[10],s[11],s[12],s[13],s[14],s[15],s[16],s[17]);
printf("%d %d %d %d %d %d %d %d %d \n",s[18],s[19],s[20],s[21],s[22],s[23],s[24],s[25],s[26]);
printf("%d %d %d %d %d %d %d %d %d \n",s[27],s[28],s[29],s[30],s[31],s[32],s[33],s[34],s[35]);
printf("%d %d %d %d %d %d %d %d %d \n",s[36],s[37],s[38],s[39],s[40],s[41],s[42],s[43],s[44]);
printf("%d %d %d %d %d %d %d %d %d \n",s[45],s[46],s[47],s[48],s[49],s[50],s[51],s[52],s[53]);
printf("%d %d %d %d %d %d %d %d %d \n",s[54],s[55],s[56],s[57],s[58],s[59],s[60],s[61],s[62]);
printf("%d %d %d %d %d %d %d %d %d \n",s[63],s[64],s[65],s[66],s[67],s[68],s[69],s[70],s[71]);
printf("%d %d %d %d %d %d %d %d %d \n\n\n\n",s[72],s[73],s[74],s[75],s[76],s[77],s[78],s[79],s[80]);
//senkrecht
for(i=0;i<9;i=i+1)
{
while((s[i+9]==s[i])||(s[i+9]==s[i+18])||(s[i+9]==s[i+27])||(s[i+9]==s[i+36])||(s[i+9]==s[i+45])||(s[i+9]==s[i+54])||(s[i+9]==s[i+63])||(s[i+9]==s[i+72]))//erste zahl einer spalte ist unterschiedlich mit den anderen
{
s[i+9]=rand()%9+1;
}
while((s[i+18]==s[i])||(s[i+18]==s[i+9])||(s[i+18]==s[i+27])||(s[i+18]==s[i+36])||(s[i+18]==s[i+45])||(s[i+18]==s[i+54])||(s[i+18]==s[i+63])||(s[i+18]==s[i+72]))//2.zahl einer spalte ist unterschiedlich mit den anderen usw...
{
s[i+18]=rand()%9+1;
}
while((s[i+27]==s[i])||(s[i+27]==s[i+9])||(s[i+27]==s[i+18])||(s[i+27]==s[i+36])||(s[i+27]==s[i+45])||(s[i+27]==s[i+54])||(s[i+27]==s[i+63])||(s[i+27]==s[i+72]))
{
s[i+27]=rand()%9+1;
}
while((s[i+36]==s[i])||(s[i+36]==s[i+9])||(s[i+36]==s[i+18])||(s[i+36]==s[i+27])||(s[i+36]==s[i+45])||(s[i+36]==s[i+54])||(s[i+36]==s[i+63])||(s[i+36]==s[i+72]))
{
s[i+36]=rand()%9+1;
}
while((s[i+45]==s[i])||(s[i+45]==s[i+9])||(s[i+45]==s[i+18])||(s[i+45]==s[i+27])||(s[i+45]==s[i+36])||(s[i+45]==s[i+54])||(s[i+45]==s[i+63])||(s[i+45]==s[i+72]))
{
s[i+45]=rand()%9+1;
}
while((s[i+54]==s[i])||(s[i+54]==s[i+9])||(s[i+54]==s[i+18])||(s[i+54]==s[i+27])||(s[i+54]==s[i+36])||(s[i+54]==s[i+45])||(s[i+54]==s[i+63])||(s[i+54]==s[i+72]))
{
s[i+54]=rand()%9+1;
}
while((s[i+63]==s[i])||(s[i+63]==s[i+9])||(s[i+63]==s[i+18])||(s[i+63]==s[i+27])||(s[i+63]==s[i+36])||(s[i+63]==s[i+45])||(s[i+63]==s[i+54])||(s[i+63]==s[i+72]))
{
s[i+63]=rand()%9+1;
}
while((s[i+72]==s[i])||(s[i+72]==s[i+9])||(s[i+72]==s[i+18])||(s[i+72]==s[i+27])||(s[i+72]==s[i+36])||(s[i+72]==s[i+45])||(s[i+72]==s[i+54])||(s[i+72]==s[i+63]))
{
s[i+72]=rand()%9+1;
}
}
//senkrecht sollte unterschiedlich sein
printf("%d %d %d %d %d %d %d %d %d \n",s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8]);
printf("%d %d %d %d %d %d %d %d %d \n",s[9],s[10],s[11],s[12],s[13],s[14],s[15],s[16],s[17]);
printf("%d %d %d %d %d %d %d %d %d \n",s[18],s[19],s[20],s[21],s[22],s[23],s[24],s[25],s[26]);
printf("%d %d %d %d %d %d %d %d %d \n",s[27],s[28],s[29],s[30],s[31],s[32],s[33],s[34],s[35]);
printf("%d %d %d %d %d %d %d %d %d \n",s[36],s[37],s[38],s[39],s[40],s[41],s[42],s[43],s[44]);
printf("%d %d %d %d %d %d %d %d %d \n",s[45],s[46],s[47],s[48],s[49],s[50],s[51],s[52],s[53]);
printf("%d %d %d %d %d %d %d %d %d \n",s[54],s[55],s[56],s[57],s[58],s[59],s[60],s[61],s[62]);
printf("%d %d %d %d %d %d %d %d %d \n",s[63],s[64],s[65],s[66],s[67],s[68],s[69],s[70],s[71]);
printf("%d %d %d %d %d %d %d %d %d \n",s[72],s[73],s[74],s[75],s[76],s[77],s[78],s[79],s[80]);
system("PAUSE");
return EXIT_SUCCESS;
}
nun hab ich das problem, dass ich nicht weiß, wie ich das ganze zu einem "richtigen" sudoku zusammenfüge(ohne die regel, dass in jedem 3x3 quadrat jede zahl nur einmal vorkommen darf)
lg masterOfTheDark ;-)
Zuletzt bearbeitet: