Could someone help me optimize some very redundent code?
Jan 15, 2008 at 7:16pm UTC
I know there's a much better way to write it, but I'm just getting back into programming with C++
I know about the while() loop, but I always mess it up.
Here's my sloppy code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
//dupe test
if (num2 == num)
{num2 = 1 + rand() % (52 - 1 + 1);}
if (num3 == num || num3 == num2)
{num3 = 1 + rand() % (52 - 1 + 1);}
if (num4 == num || num4 == num2 || num4 == num3)
{num4 = 1 + rand() % (52 - 1 + 1);}
if (num5 == num || num5 == num2 || num5 == num3 || num5 == num4)
{num5 = 1 + rand() % (52 - 1 + 1);}
if (compNum == num || compNum == num2 || compNum == num3 || compNum == num4 || compNum == num5)
{compNum = 1 + rand() % (52 - 1 + 1);}
if (compNum2 == num || compNum2 == num2 || compNum2 == num3 || compNum2 == num4 ||
compNum2 == num5 || compNum2 == compNum)
{compNum2 = 1 + rand() % (52 - 1 + 1);}
if (compNum3 == num || compNum3 == num2 || compNum3 == num3 || compNum3 == num4 ||
compNum3 == num5 || compNum3 == compNum || compNum3 == compNum2)
{compNum3 = 1 + rand() % (52 - 1 + 1);}
if (compNum4 == num || compNum4 == num2 || compNum4 == num3 || compNum4 == num4 ||
compNum4 == num5 || compNum4 == compNum || compNum4 == compNum2 || compNum4 == compNum3)
{compNum4 = 1 + rand() % (52 - 1 + 1);}
if (compNum5 == num || compNum5 == num2 || compNum5 == num3 || compNum5 == num4 ||
compNum5 == num5 || compNum5 == compNum || compNum5 == compNum2 || compNum5 == compNum3 || compNum5 == compNum4)
{compNum5 = 1 + rand() % (52 - 1 + 1);}
Last edited on Jan 15, 2008 at 8:57pm UTC
Jan 15, 2008 at 8:55pm UTC
I use to copy n paste this 4 more times, to recheck
now i finally got the while, if-else loop working:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//dupe test
num = 1 + rand() % (52 - 1 + 1); test=1;
num2 = 1 + rand() % (52 - 1 + 1);
while (test==1)
if (num2 == num)
{num2 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
num3 = 1 + rand() % (52 - 1 + 1);
while (test==2)
if (num3 == num || num3 == num2)
{num3 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
num4 = 1 + rand() % (52 - 1 + 1);
while (test==3)
if (num4 == num || num4 == num2 || num4 == num3)
{num4 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
num5 = 1 + rand() % (52 - 1 + 1);
while (test==4)
if (num5 == num || num5 == num2 || num5 == num3 || num5 == num4)
{num5 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
compNum = 1 + rand() % (52 - 1 + 1);
while (test==5)
if (compNum == num || compNum == num2 || compNum == num3 || compNum == num4 || compNum == num5)
{compNum = 1 + rand() % (52 - 1 + 1);}
else {test++;}
compNum2 = 1 + rand() % (52 - 1 + 1);
while (test==6)
if (compNum2 == num || compNum2 == num2 || compNum2 == num3 || compNum2 == num4 ||
compNum2 == num5 || compNum2 == compNum)
{compNum2 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
compNum3 = 1 + rand() % (52 - 1 + 1);
while (test==7)
if (compNum3 == num || compNum3 == num2 || compNum3 == num3 || compNum3 == num4 ||
compNum3 == num5 || compNum3 == compNum || compNum3 == compNum2)
{compNum3 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
compNum4 = 1 + rand() % (52 - 1 + 1);
while (test==8)
if (compNum4 == num || compNum4 == num2 || compNum4 == num3 || compNum4 == num4 ||
compNum4 == num5 || compNum4 == compNum || compNum4 == compNum2 || compNum4 == compNum3)
{compNum4 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
compNum5 = 1 + rand() % (52 - 1 + 1);
while (test==9)
if (compNum5 == num || compNum5 == num2 || compNum5 == num3 || compNum5 == num4 || compNum5 == num5 ||
compNum5 == compNum || compNum5 == compNum2 || compNum5 == compNum3 || compNum5 == compNum4)
{compNum5 = 1 + rand() % (52 - 1 + 1);}
else {test++;}
can someone help me make this shorter? i want to add 2 more players, and it's silly to make that if() statement longer and longer each time.
Last edited on Jan 15, 2008 at 8:57pm UTC
Jan 16, 2008 at 8:22am UTC
first, (52-1+1) is 52 anyway...
then, how about using arrays and for-loops?
1 2 3 4 5 6 7 8 9
int num[10], repeat;
for (int n=0; n<10; n++)
{
do {
repeat=0;
num[n]=1+rand()%52;
for (int m=0; m<n; m++) if (num[n]==num[m]) repeat=1;
} while (repeat);
}
now num contains 10 different random numbers.
Jan 17, 2008 at 11:35pm UTC
hi please could u befor or after sending u code just explain what is it about so we can get at least a general idea about it :).
regard.
Topic archived. No new replies allowed.