2013-08-28 2 views
0

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

#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

Вероятно потому, что вы не сбросить 'a' в вашей' while ... true' петле. Попытайтесь положить 'a = 1;' непосредственно перед 'while (num> = a)' – darthbith

ответ

0

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

//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(); 
} 
Смежные вопросы