2013-08-28 1 views
0

Can 누군가 나를 도와주세요. 나는이 코드를 첫 번째 라운드에서 잘 컴파일하지만 루프를 돌릴 때 올바르게 출력하지 못한다. 나는 실수를 찾지 못한다. .. 고마워! Xcode를 먼저 컴파일하면 오른쪽 사각형이 비어 있지만 두 번째로 입력하면 사각형이 인쇄되지 않습니다. 당신이 재설정되지 않기 때문에 당신은 a와 b 변수를 재설정하지 않는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

아마 while(true) 루프 내부의 시작 부분에이 라인

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

을 둘 필요 'while ... true'루프에서 'a'를 선택하십시오. 'while (num> = a)'의 바로 앞에'a = 1; '을 넣으십시오. – darthbith

답변

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