Here's what I have
Code:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
void random1();
void checkall();
int norepeat[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int row1[4];
int row2[4];
int row3[4];
int row4[4];
int randomnumber;
int main()
{
random1();
checkall();
return 0;
}
void random1()
{
srand(time(0));
for (int a=0;a<4;a=a+0)
{
int randomnumber=rand()%16+1;
if (norepeat[randomnumber] == 0)
{
row1[a]=randomnumber;
norepeat[randomnumber]=1;
a=a+1;
}
}
for (int b=0;b<4;b=b+0)
{
int randomnumber=rand()%16+1;
if (norepeat[randomnumber] == 0)
{
row2[b]=randomnumber;
norepeat[randomnumber]=1;
b=b+1;
}
}
for (int c=0;c<4;c=c+0)
{
int randomnumber=rand()%16+1;
if (norepeat[randomnumber] == 0)
{
row3[c]=randomnumber;
norepeat[randomnumber]=1;
c=c+1;
}
}
for (int d=0;d<4;d=d+0)
{
int randomnumber=rand()%16+1;
if (norepeat[randomnumber] == 0)
{
row4[d]=randomnumber;
norepeat[randomnumber]=1;
d=d+1;
}
}
}
void checkall()
{
if(row1[0]+row1[1]+row1[2]+row1[3]==34 && row2[0]+row2[1]+row2[2]+row2[3]==34 && row3[0]+row3[1]+row3[2]+row3[3]==34 && row4[0]+row4[1]+row4[2]+row4[3]==34 && row1[0]+row2[0]+row3[0]+row4[0]==34 && row1[1]+row2[1]+row3[1]+row4[1]==34 && row1[2]+row2[2]+row3[2]+row4[2]==34
&& row1[3]+row2[3]+row3[3]+row4[3]==34 && row1[0]+row2[1]+row3[2]+row4[3]==34 && row1[3]+row2[2]+row3[1]+row4[0]==34)
{
cout<<row1[0]<<" "<<row1[1]<<" "<<row1[2]<<" "<<row1[3]<<endl;
cout<<row2[0]<<" "<<row2[1]<<" "<<row2[2]<<" "<<row2[3]<<endl;
cout<<row3[0]<<" "<<row3[1]<<" "<<row3[2]<<" "<<row3[3]<<endl;
cout<<row4[0]<<" "<<row4[1]<<" "<<row4[2]<<" "<<row4[3]<<endl;
}else
{
random1();
}
}
That should work I think, but it doesn't display anything so I wouldn't know. Is there any way to check to make sure it is working or something.
BTW, the array only has to be 4x4 and it has to equal 34 on all sides, you were right about the 36, it should have been higher - I wasn't thinking...