• C

Unable to understand while my while loop doesn't work (my first C exercise)

Hi.

Yes, a nb.
I have a problem with the following program I need to write as an essay.
assuming these are my variables:

startRange = 9
endRange = 20

I need to calculate which are the "powerfull" numbers, never mind what it means :)
the thing is that my while doesn't exit when it reaches the appropriate condition.

I am talking about the only while loop in this piece of code, so it won't be hard for you guys to find it :)

                  printf("Number : acceeding / powerfull\n");
                  for(currentNumber=startRange; currentNumber<=endRange; currentNumber++)
                  {
                        x=2;
                        while(currentNumber%x!=0 && x<currentNumber)
                        {
                              printf("%d",currentNumber);
                              printf("\n");
                              x++;
                        }
                  }
LVL 1
webizAsked:
Who is Participating?
 
Kent OlsenConnect With a Mentor Data Warehouse Architect / DBACommented:
Hi webiz,

This might be a little clearer if the inner loop is rewritten.

               printf("Number : acceeding / powerfull\n");
               for(currentNumber=startRange; currentNumber<=endRange; currentNumber++)
               {
                    for (x=2; currentNumber%x!=0 && x<currentNumber; x++)
                    {
                         printf("%d\n",currentNumber);
                    }
               }

This is the exact loop that you execute in your example.  Perhaps you really mean to do something like this:

               printf("Number : acceeding / powerfull\n");
               for(currentNumber=startRange; currentNumber<=endRange; currentNumber++)
               {
                    for (x=2; x<currentNumber; x++)
                    {
                         if (currentNumber % x != 0)
                         {
                           printf("%d\n",currentNumber);
                           break;
                         }
                    }
               }


Good Luck,
Kent
0
 
ozoCommented:
It looks like the while loop does exit when currentNumber%x ==0 or x>= currentNumber
if that is not what you wanted, do you consider to be appropriate condition?
It may be hard for you to see what x is in the loop since you never print it.
0
 
webizAuthor Commented:
well, it might look like it but it doesn't ;)
what I am getting is the following result:

9
11
11
11
11
11
11
11
11
11
13
13
13
13
13
13
13
13
13
13
13
15
17
17
17
17
17
17
17
17
17
17
17
17
17
17
17
and so on...

while I am supposed to get only
9
11
13
17
.....
0
Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

 
ozoCommented:
well when currentNumber is 11,  x will loop from 2 to 10, and then exit the loop when x=11 and && x<currentNumber fails
each time through the loop, you print currentNumber, so you print it 11-2 = 9 times

Why are you supposed to get 9 and not 15?
0
 
numansiddiqueCommented:
what do u mean by powerfull numbers. if we know what it means it will be better to understand the problem
0
 
ozoCommented:
if you want powers of primes, then you should have included 16
0
 
grg99Commented:
you're printing "currentnumber" in the loop, so you'll see that value repeated as many times as the loop goes around.

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.