While loop - Variable not changing in C

  • Thread starter Thread starter A.J.710
  • Start date Start date
  • Tags Tags
    Loop Variable
Click For Summary
SUMMARY

The discussion centers on a programming issue related to a while loop in C, specifically regarding variable assignment versus comparison. The user is attempting to prompt for four non-zero integers and terminate the loop if any integer is zero. The problem arises from using the assignment operator '=' instead of the comparison operator '==' in the if statement, causing the loop to not terminate as expected. The correct syntax should be 'if (a == 0)' to properly evaluate the condition.

PREREQUISITES
  • Understanding of C programming syntax
  • Knowledge of control flow statements in C
  • Familiarity with variable assignment and comparison operators
  • Basic input/output operations in C using printf and scanf
NEXT STEPS
  • Review C programming control flow statements, focusing on while loops
  • Learn about the differences between assignment and comparison operators in C
  • Practice writing input validation loops in C
  • Explore debugging techniques for C programs to identify logical errors
USEFUL FOR

Students learning C programming, educators teaching programming concepts, and developers troubleshooting while loops and input validation in their code.

A.J.710
Messages
56
Reaction score
1
I am not sure if this is supposed to go in the homework forum or not since it is more of an off physics topic so sorry if it is incorrect.

I have a programming assignment for class and I am having a lot of trouble with a while loop. For this part of the program I have to prompt the user to enter 4 non zero integers. If one of them is 0 I have to prompt them to re enter the integers. If all of them are 0 the program has to be terminated. I am doing it in a while loop as instructed but I can't get the variable to change when the statement is true.

I am not nearly done. I am just testing for the first variable so far just to get the hang of it.

Here is little section of the program that I cannot get to work. Basically if the first integer entered is 0 it should end the while loop and end the program, if not, it continues with the rest of the program which is basically just adding two rational numbers and finding the GCD to simplify them. (that part is obviously not shown here).

The issue I am having is that "again" never changes to 0 and it just keeps running the rest of the program and then going back to the printf function in the while loop.

int main( )
{
int a, b, c, d, again, azero, pzero;
int num, den, g, sum;
again = 1;


while (again==1)
{
printf("Please enter four non zero integers \n");
scanf("%d %d %d %d",&a, &b, &c, &d);

if ((a=0))
{
again = 0;
}
else
 
Physics news on Phys.org
A.J.710 said:
if ((a=0))

Think again about this... hint: you did a similar comparison correctly elsewhere in the code you showed us.
 
Is it supposed to be (a==0)?

jtbell said:
Think again about this... hint: you did a similar comparison correctly elsewhere in the code you showed us.
 
== is used for comparison
= is used as an assignment operator
 
camel-man said:
== is used for comparison
= is used as an assignment operator


Got it, Thanks
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
11K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 17 ·
Replies
17
Views
2K
  • · Replies 17 ·
Replies
17
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 19 ·
Replies
19
Views
3K
  • · Replies 10 ·
Replies
10
Views
3K