First

matviy's Avatar, Join Date: Aug 2007
Newbie Member
I started out with C++ a few days ago and im trying to create my first program. Its supposed to prompt you for a character (example: 5,#,%,+) anything. Then draw a 20 x 10 box using that character.

########
#..............#
#..............#
########

Something like that. Since i'm learning new concepts, i tried to use loops and "if" statements to get this done. Each time it draws a line, it adds +1 to a "line counting" variable. When the couting variable = 1, it draws a full line, when its anywhere between 1-10 it draws the character once, a huge space in between (char space) then it draws the character once again. When it finishes drawing the 9th line, and the "line couting" variable becomes 10, it draws the last line, adds +1 again, and then breaks out of the loop because the "line counting" value is no longer < 11

For some reason, this doesn't work at all. Try running it for yourself. line > 11 starts to loop, line < 11 dosnt do anything.

Code:
#include <iostream.h>

int main()
{
	int line = 1; //line counting cariable
	char space[20] = "                  "; //Space variable
	char c[2] = ""; //Character to draw the box with.
		
		//Prompts user to give "c" a vale.
		cout << "Please enter a single character (eg. *,%,R,7): ";
		cin.getline(c,2);
	
		//Should begin the loop
	while (11 < line); //for some reason, this dosnt start the loop. 11 < line does start it.
	{
		if ((line = 1) || (line = 10)); //Should draw the first, or last line.
		{
			cout << "\n" << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c << c;
			line = 1 + line;
		}
	
		if ((line > 1) && (line < 10)); //Should draw all the lines in between, of the line value is between 1-10 
		{
			cout << "\n" << c << space << c;
			line = 1 + line;
		}
	}
}
0
DaWei's Avatar, Join Date: Dec 2006
Team Leader
Well, you set line to 1, then you say "while (11 < line)". Last time I looked, 11 wasn't less than 1. I wouldn't start, either.
0
matviy's Avatar, Join Date: Aug 2007
Newbie Member
Apologies, i made a big typo.

The only way for me to start the loops is (line > 11) or (11 < line). I cant imagine why it works. When i try (line = 1) it still wont start. If i try (line != 11) it STILL doesn't start. It simply prompts me to enter a character, then when i hit enter, it just hangs.

When i do (line > 11) or (11 < line) and the loops seems to start, i get only part of my box:

################
#...............................#

So it seems to go through the loop one time, then come to its senses, realizes that 1 isn't greater than 11, and quits the loop. I am really clueless about what might be the problem. Could someone try running this on their own system and seeing if it works? Maybe its just a problem with my setup.
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
The culprit is condition
Code:
((line = 1) || (line = 10)
You should use == instead of = or else it will assign the value 1.

Offtopic comment:
Also I like the idea of making space into the post but you could have used the code block.