CPP- квадратная полость- в чем ошибка?

Может кто-нибудь, пожалуйста, помогите мне? Я испортил этот код, он хорошо компилируется в первом раунде, но когда он зацикливается, он не распечатывается должным образом. Я не могу найти ошибку .. Спасибо!
Когда я сначала компилирую его с помощью Xcode, он дает правильную пустоту квадрата, но когда я вводлю второй раз, он не печатает ни одного квадрата.

#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++;
}
}
}

0

Решение

Вы не сбрасываете переменные a и b, вам нужно поставить эти строки

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

в начале внутри while(true) петля

0

Другие решения

#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 ();
}
0

По вопросам рекламы [email protected]