I need help with variables, please
I'm a begginer in C++. I use Microsoft Visual Studio 6.0. I'm writting a 4x4 Sudoku source code and I've named variables like that:
a1 b1 c1 d1
a2 b2 c2 d2
a3 b3 c3 d3
a4 b4 c4 d4
I've used while-if-break senteces and I've put printf sentences beetwen them like in the follow code:
Code:
//sudoku.cpp:
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<time.h>
void main(){
srand(time(0));
int a1;
int b1;
int c1;
int d1;
int a2;
int b2;
int c2;
int d2;
int a3;
int b3;
int c3;
int d3;
int a4;
int b4;
int c4;
int d4;
srand(time(0));
// 1st row
a1=(rand()%4)+1;
printf("a1 = %d\n",a1);
while((b1!=0)||(b1=a1)){
b1=rand()*5/32768;
if ((b1!=0)&&(b1!=a1)){
break;
printf("b1 %d\n",b1);
}}
printf("b1 = %d\n",b1);
while((c1!=0)||(c1=a1)||(c1=b1)){
c1=rand()*5/32768;
if ((c1!=0)&&(c1!=a1)&&(c1!=b1)){
break;
}}
printf("c1 = %d\n",c1);
while((d1!=0)||(d1=a1)||(d1=b1)||(d1=c1)){
d1=rand()*5/32768;
if ((d1!=0)&&(d1!=a1)&&(d1!=b1)&&(d1!=c1)){
break;
}}
printf("d1 = %d\n",d1);
// Column A
while((a2!=0)||(a2=a1)||(a2=b1)){
a2=rand()*5/32768;
if ((a2!=0)&&(a2!=a1)&&(a2!=b1)){
break;
}}
printf("a2 = %d\n",a2);
while((a3!=0)||(a3=a1)||(a3=a2)){
a3=rand()*5/32768;
if ((a3!=0)&&(a3!=a1)&&(a3!=a2)){
break;
}}
printf("a3 = %d\n",a3);
while((a4!=0)||(a4=a1)||(a4=a2)||(a4=a3)){
a4=rand()*5/32768;
if ((a4!=0)&&(a4!=a1)&&(a4!=a2)&&(a4!=a3)){
break;
}}
printf("a4 = %d\n",a4);
// Column D
while((d2!=0)||(d2=c1)||(d2=d1)||(d2=a2)){
d2=rand()*5/32768;
if ((d2!=0)&&(d2!=c1)&&(d2!=d1)&&(d2!=a2)){
break;
}}
printf("d2 = %d\n",d2);
while((d3!=0)||(d3=d1)||(d3=d2)||(d3=a3)){
d3=rand()*5/32768;
if ((d3!=0)&&(d3!=d1)&&(d3!=d2)&&(d3!=a3)){
break;
}}
printf("d3 = %d\n",d3);
while((d4!=0)||(d4=d1)||(d4=d2)||(d4=d3)||(d4=a4)){
d4=rand()*5/32768;
if ((d4!=0)&&(d4!=d1)&&(d4!=d2)&&(d4!=d3)&&(d4!=a4)){
break;
}}
printf("d4 = %d\n",d4);
// 4th row
while((b4!=0)||(b4=a3)||(b4=a4)||(b4=b1)||(b4=d4)){
b4=rand()*5/32768;
if ((b4!=0)&&(b4!=a3)&&(b4!=a4)&&(b4!=b1)&&(b4!=d4)){
break;
}}
printf("b4 = %d\n",b4);
while((c4!=0)||(c4=d3)||(c4=d4)||(c4=c1)||(c4=a4)||(c4=b4)){
c4=rand()*5/32768;
if ((c4!=0)&&(c4!=d3)&&(c4!=d4)&&(c4!=c1)&&(c4!=a4)){
break;
}}
printf("c4 = %d\n",c4);
// Central square
while((b2!=0)||(b2=a1)||(b2=b1)||(b2=a2)||(b2=d2)||(b2=b4)){
b2=rand()*5/32768;
if ((b2!=0)&&(b2!=a1)&&(b2!=b1)&&(b2!=a2)&&(b2!=d2)&&(b2!=b4)){
break;
}}
printf("b2 = %d\n",b2);
while((c2!=0)||(c2=c1)||(c2=d1)||(c2=a2)||(c2=b2)||(c2=d2)||(c2=c4)){
c2=rand()*5/32768;
if ((c2!=0)&&(c2!=c1)&&(c2!=d1)&&(c2!=a2)&&(c2!=b2)&&(c2!=d2)&&(c2!=c4)){
break;
}}
printf("c2 = %d\n",c2);
while((b3!=0)||(b3=a3)||(b3=a4)||(b3=b4)||(b3=b1)||(b3=b2||(b3=d3))){
b3=rand()*5/32768;
if ((b3!=0)&&(b3!=a3)&&(b3!=a4)&&(b3!=b4)&&(b3!=b1)&&(b3!=b2)&&(b3!=d3)){
break;
}}
printf("b3 = %d\n",b3);
while((c3!=0)||(c3=c4)||(c3=d4)||(c3=d3)||(c3=c1)||(c3=c2)||(c3=a3)||(c3=b3)){
c3=rand()*5/32768;
if ((c3!=0)&&(c3!=c4)&&(c3!=d4)&&(c3!=d3)&&(c3!=c1)&&(c3!=c2)&&(c3!=a3)&&(c3!=b3)){
break;
printf("c3 = %d\n",c3);
}}}
In that code the program works but sometimes it reach a absurd situation and the program stops for example, at the ninth variable:
2 1 3 4
4 ? ? 1
1 ? ? 2
3 ? ? !
To solve this issue I've tried to put all the process into another while-if-break senetence in order to finish the program only when the last variable to be determinated (c3) has a valor.
I've wrote that:
Code:
//sudoku.cpp:
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<time.h>
void main(){
srand(time(0));
int a1;
int b1;
int c1;
int d1;
int a2;
int b2;
int c2;
int d2;
int a3;
int b3;
int c3;
int d3;
int a4;
int b4;
int c4;
int d4;
srand(time(0));
d4=0;
while(d4=0){
// 1st row
a1=(rand()%4)+1;
printf("a1 = %d\n",a1);
while((b1!=0)||(b1=a1)){
b1=rand()*5/32768;
if ((b1!=0)&&(b1!=a1)){
break;
printf("b1 %d\n",b1);
}}
printf("b1 = %d\n",b1);
while((c1!=0)||(c1=a1)||(c1=b1)){
c1=rand()*5/32768;
if ((c1!=0)&&(c1!=a1)&&(c1!=b1)){
break;
}}
printf("c1 = %d\n",c1);
while((d1!=0)||(d1=a1)||(d1=b1)||(d1=c1)){
d1=rand()*5/32768;
if ((d1!=0)&&(d1!=a1)&&(d1!=b1)&&(d1!=c1)){
break;
}}
printf("d1 = %d\n",d1);
// Column A
while((a2!=0)||(a2=a1)||(a2=b1)){
a2=rand()*5/32768;
if ((a2!=0)&&(a2!=a1)&&(a2!=b1)){
break;
}}
printf("a2 = %d\n",a2);
while((a3!=0)||(a3=a1)||(a3=a2)){
a3=rand()*5/32768;
if ((a3!=0)&&(a3!=a1)&&(a3!=a2)){
break;
}}
printf("a3 = %d\n",a3);
while((a4!=0)||(a4=a1)||(a4=a2)||(a4=a3)){
a4=rand()*5/32768;
if ((a4!=0)&&(a4!=a1)&&(a4!=a2)&&(a4!=a3)){
break;
}}
printf("a4 = %d\n",a4);
// Column D
while((d2!=0)||(d2=c1)||(d2=d1)||(d2=a2)){
d2=rand()*5/32768;
if ((d2!=0)&&(d2!=c1)&&(d2!=d1)&&(d2!=a2)){
break;
}}
printf("d2 = %d\n",d2);
while((d3!=0)||(d3=d1)||(d3=d2)||(d3=a3)){
d3=rand()*5/32768;
if ((d3!=0)&&(d3!=d1)&&(d3!=d2)&&(d3!=a3)){
break;
}}
printf("d3 = %d\n",d3);
while((d4!=0)||(d4=d1)||(d4=d2)||(d4=d3)||(d4=a4)){
d4=rand()*5/32768;
if ((d4!=0)&&(d4!=d1)&&(d4!=d2)&&(d4!=d3)&&(d4!=a4)){
break;
}}
printf("d4 = %d\n",d4);
// 4th row
while((b4!=0)||(b4=a3)||(b4=a4)||(b4=b1)||(b4=d4)){
b4=rand()*5/32768;
if ((b4!=0)&&(b4!=a3)&&(b4!=a4)&&(b4!=b1)&&(b4!=d4)){
break;
}}
printf("b4 = %d\n",b4);
while((c4!=0)||(c4=d3)||(c4=d4)||(c4=c1)||(c4=a4)||(c4=b4)){
c4=rand()*5/32768;
if ((c4!=0)&&(c4!=d3)&&(c4!=d4)&&(c4!=c1)&&(c4!=a4)){
break;
}}
printf("c4 = %d\n",c4);
// Central square
while((b2!=0)||(b2=a1)||(b2=b1)||(b2=a2)||(b2=d2)||(b2=b4)){
b2=rand()*5/32768;
if ((b2!=0)&&(b2!=a1)&&(b2!=b1)&&(b2!=a2)&&(b2!=d2)&&(b2!=b4)){
break;
}}
printf("b2 = %d\n",b2);
while((c2!=0)||(c2=c1)||(c2=d1)||(c2=a2)||(c2=b2)||(c2=d2)||(c2=c4)){
c2=rand()*5/32768;
if ((c2!=0)&&(c2!=c1)&&(c2!=d1)&&(c2!=a2)&&(c2!=b2)&&(c2!=d2)&&(c2!=c4)){
break;
}}
printf("c2 = %d\n",c2);
while((b3!=0)||(b3=a3)||(b3=a4)||(b3=b4)||(b3=b1)||(b3=b2||(b3=d3))){
b3=rand()*5/32768;
if ((b3!=0)&&(b3!=a3)&&(b3!=a4)&&(b3!=b4)&&(b3!=b1)&&(b3!=b2)&&(b3!=d3)){
break;
}}
printf("b3 = %d\n",b3);
while((c3!=0)||(c3=c4)||(c3=d4)||(c3=d3)||(c3=c1)||(c3=c2)||(c3=a3)||(c3=b3)){
c3=rand()*5/32768;
if ((c3!=0)&&(c3!=c4)&&(c3!=d4)&&(c3!=d3)&&(c3!=c1)&&(c3!=c2)&&(c3!=a3)&&(c3!=b3)){
break;
}}
printf("c3 = %d\n",c3);
if (b4!=0){
break;
}}
printf("a1 = %d\n",a1);
}
In that code original printf sentences doesn't appears when I run the program and the last one appera like no initialized.
How can I solve that problem?
Thank you for your help.