For loop in c

  • Thread starter static
  • Start date
  • #1
3
0
My task is to draw a square on black background using ppm.
What I did is this loop:
Code:
	for (int h=0; h<=480; h++){
		for (int w=0; w<=640; w++){

				if (h>100 && h<380 && w<460){
				//green paint
			fprintf (fp, "%s", greenColor); 
			fprintf (fp, "%s", space);
				} else {
				//paint in black
			fprintf (fp, "%s", blackColor);
			fprintf (fp, "%s", space);
fprintf (fp, "%s", "\n");
				}
				
			}
			
		
	
	}
but instead of getting a square I get sth like this:
http://www.polew.pl/file/wastage/test.gif [Broken]

Why?
 
Last edited by a moderator:

Answers and Replies

  • #2
Hurkyl
Staff Emeritus
Science Advisor
Gold Member
14,916
19
Hrm. Your indentation didn't translate faithfully, but I do notice that the line where you print the newline is somewhat suspicious....
 
  • #3
34,012
5,662
How are your strings greenColor, blackColor, and space defined? It looks to me like some of your lines are too long and are wrapping to the next screen line.

I'm assuming that you are drawing lines from the top of the screen down, and that the upper left corner of the screen is (0, 0) and the lower right corner is (639, 479). This means that both your loops are running one iteration too many. The outer loop should be
Code:
for (h = 0; h < 480 ; h++)
{
}
and your inner loop should be similarly adjusted
Code:
for (w = 0; h < 640 ; h++)
{
}
My outer loop runs 480 times; yours runs 481 times. My inner loop runs 640 times for each iteration of the outer loop; your runs 641 times for each iteration of the outer loop.

Those points aside, your code puzzles me. I would think you would want to draw some solid black lines for 100 screen lines, and then draw lines that are black for the first 100 pixels, then green for 280 pixels, then black again for the remainder of each line for lines 101 through 379. I don't see your code doing the first black part on each line that the rectangle is in.

After that, you want to draw all black lines for the remaining screen lines.
 
  • #4
3
0
thanks Mark44, it works!
I just deleted equation signs from outer and inner loop and beautiful green square appeared.
 

Related Threads on For loop in c

  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
3
Views
3K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
11
Views
4K
Replies
29
Views
6K
Replies
14
Views
817
  • Last Post
Replies
4
Views
3K
Replies
25
Views
19K
Replies
2
Views
2K
  • Last Post
Replies
2
Views
2K
Top