0

I have been giving the task of making a box using all asterisks, given an input of say 5. Im supposed to make something that resembles a 5x5 box with nothing in between...


I am stuck at a dead-end here and any help would be appreciated!

My code so far is below, it isn't right :P

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
	int clm;
	int row;

	cout<<"How big of square do you want? Enter a number 1-20: ";
	cin>>clm;
	while (clm-- > 0)
	{
		row = clm;
		cout<<"*";

	while (row++ > 0)
		cout<<"*";
	cout<<endl;
	}
	
	return 0;
}
4
Contributors
5
Replies
6
Views
8 Years
Discussion Span
Last Post by winrawr
0

Alright, you're on the right track, but you're creating an infinite loop. A better way to handle this would be with for loops instead of while.

What you should do is draw out a few examples and try to analyze what the output should look like. A 3x3 and 4x4 square should be something like below, with an o showing the open space.

***
*o*
***

****
*oo*
*oo*
****

So, following that outline, what should a code of NxN produce? Looks like the first line should be of N number of *. The next inner lines should be of 2 *'s with N-2 spaces in between, but make sure you consider the number of lines in the middle. Then finally the last line is a repeat of the first line it seems. Now, that's right, but what happens if you have a 1x1? Make sure you consider that before assuming you're done.

That should help you figure out how to write the code.

0

Thanks for the help! Unfortunately our instructor wants us to use "only what we have learned" so Im stuck with the while, else if, if statements :\

0

Seemed to have figured it out, although I think it could be greaty simplified somehow...but I'm not sure.

#include <iostream>
#include <cstdlib>

using namespace std;


int main()
{
	int  square, vertCount=0, horzCount=0;
	cout<<"Enter square size: ";
	cin>>square;
	

while (square > vertCount++)  {

if  ( vertCount==1 ) {

while ((square > horzCount++)) 
	
	{
	cout<<"*";
	}

cout <<endl;
horzCount = 0;

}

else if (vertCount == square) 

{         

while (square > horzCount++ ) 

	{
	cout<<"*";
	}

	cout <<endl;
	horzCount = 0;
}

else 

	{
	cout<<"*";
	while (square - 2 > horzCount++) {
	cout<<" ";
	}

	cout<<"*";
	cout<<endl;
	horzCount = 0;
}
}
return 0;
0

Here is what I wrote,

#include<iostream>

using namespace std;

int main(int argc,char**argv){

	int siz=0,i=0,n;
	cout<< "\nHow big? ";
	cin>> siz;
	cout<< endl;
	
	while(i<siz){
		if(i==0||i==siz-1){
			n=0;
			while(n<siz){
				cout<< "* ";
				n++;
			}
		} else {
			cout<< "* ";
			n=2;
			while(n<siz){
				cout<< "  ";
				n++;
			}
			cout<< "*";
		}
		cout<< endl;
		i++;
	}
	
	return 0;
	
}
C:\c>gpp box.cpp -o box.exe
box.cpp:34:2: warning: no newline at end of file

C:\c>box

How big? [b]7[/b]

* * * * * * *
*           *
*           *
*           *
*           *
*           *
* * * * * * *

C:\c>
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.