Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

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

Posted on 2006-11-15
Medium Priority
223 Views
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++;
}
}
0
Question by:webiz
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 84

Expert Comment

ID: 17951658
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

LVL 1

Author Comment

ID: 17951746
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

LVL 84

Expert Comment

ID: 17951787
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

LVL 2

Expert Comment

ID: 17953776
what do u mean by powerfull numbers. if we know what it means it will be better to understand the problem
0

LVL 84

Expert Comment

ID: 17953793
if you want powers of primes, then you should have included 16
0

LVL 22

Expert Comment

ID: 17954953
you're printing "currentnumber" in the loop, so you'll see that value repeated as many times as the loop goes around.

0

LVL 46

Accepted Solution

Kent Olsen earned 1000 total points
ID: 17955360
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ouā¦
Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were smallā¦
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.
###### Suggested Courses
Course of the Month11 days, 18 hours left to enroll