CPP- Square Hollow- What is the mistake?

414 views Asked by At

Can Someone please help me? I worte this code it compiles fine at first round but when it loops it doesnt print out properly. I cant find the mistake.. Thank you! When i compile it with Xcode first it gave the right square hollow but when i input second time it did not print out any square.

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


#include <string>
using std::string;
#include <cstdlib>

int main()
{
    int a;
    int b;
    int num=0;
    string buf;

    //initialize a and b
    a = 1;
    b = 1;

    // ask user to repeat the process again at end of the first promt
    while( true )
    {
        cout << "Please enter size of square between #1-20: \n";
        cin >> buf; num = atoi (buf.c_str());
        cin.ignore(1000, 10);

        if( num < 1 || num > 20 )
            break;

        //process of printing square
        while ( num >= a)
        {
            b = 1;
            while ( num >= b )
            {
                if ( a == 1 || a == num || b == 1 || b == num )
                    cout << "*";
                else
                    cout << " ";
                b++;
            }
            cout << endl;
            a++;
        }
    }
}
2

There are 2 answers

0
hidrargyro On

You are not resetting the a and b variables, you need to put these lines

//initialize a and b
a = 1;
b = 1;

at the beginning inside of the while(true) loop

0
wara wara On
#include<iostream>
#include<conio>
main()
{
    int squareHeight, squareWidth;
    cout<< "Enter Height:  ";
    cin>>  squareHeight;
    cout<< "Enter Widht:   ";
    cin>>  squareWidth;
  for(int width=1; width<=squareHeight; width++)
    {
   if(width <= 1)
   for(int width=1; width<=squareWidth; width++)
            {
                cout<< "*";
            }
        else if(width<squareHeight)
        {
            cout<< endl;
for(int width2=1; width2<=squareWidth; width2++)
      {
      if(width2==1 || width2==squareWidth)
                    cout<< "*";
                else
                    cout<< " ";
            }
        }
        else
        {
            cout<< endl;
for(int width3=1; width3<=squareWidth; width3++)
   {
                cout<<"*";
            }
        }
    }
    getch ();
}