2014-02-06 80 views
0

這裏是一個由點組成的正方形,25 x 25網格的代碼。我需要從用戶x1,x2,y1,y2和兩個字符(例如@和/)獲取輸入,並創建一個矩形,其中一個字符填充內部,一個矩形畫出矩形。我不知道如何將這些輸入處理到循環中並創建所述矩形。 這是頭文件....網格上的矩形

// Rectangle.h 

#ifndef Rectangle_h 
#define Rectangle_h 

#include <iostream> 
using namespace std; 

class Rectangle 
{ 
private: 
float length, width, perimeter, area; 
int a, i, j, h, x1, x2, y1, y2; 
char inner; 

public: 
Rectangle(); // default constructor 

void printGrid(); 
void setValues(); 
void setIntChar(); 


}; 

#endif 

這是源代碼....

void Rectangle::setValues() 
{ 
do 
{ 
    cout << "Enter x1, x2, y1, and y2 such that x1 < x2 and y1 < y2:\n"; 
    cin >> x1; 
    cin >> x2; 
    cin >> y1; 
    cin >> y2; 
} 
while(x1 >= x2 || y1 >= y2); 

cout << endl << "Rectangle accepted.\n\n"; 
} 

void Rectangle::setIntChar() 
{ 
cout << "Enter a character to fill the interior of the rectangle: \n" << endl; 
cin >> inner; 
cout << endl << endl; 
} 

void Rectangle::printGrid() 
{ 
for(i = 0; i < 25; i++) // prints 25 rows of 25 dots and a space after each dot 
{ 
    if(i < 16) 
    cout << 25 - i << " ";// prints 25 - 10 in descending order 

if(i > 15) 
    cout << 25 - i << " "; // prints 9 - 1 in descending order 

for(j = 0; j < 25; j++) // prints a line of 25 dots and 2 spaces after each dot 
    cout << ". "; 

for(h = 0; h < 25; h++) // prints a line of 25 double-spaces 
    cout << " "; 

cout << endl;  // ends the line after each iteration  
} 

cout << " "; 

for (i = 1; i <= 25; i++) 
{ 
    if(i < 10) 
     cout << i << " "; 

    if(i > 9) 
    cout << i << " "; 
} 

cout << endl << endl; 

}

這是主要的功能....

#include "Rectangle.h" 

///// main ///// 

int main() 
{ 
Rectangle grid; // creates an object of the Rectangle class 

grid.setValues(); 
grid.setIntChar(); 
grid.printGrid(); 
} 
+0

假設這是一個班級作業,可能會在整個代碼中使用像「25」這樣的幻數來扣分。您可能已經瞭解了常量。也許不會。 對於投入,他們告訴你關於cin和cout,是嗎?不要擔心循環。只需讓他們使用它們來調用你的功能。 – m24p

+0

我想我不明白你的建議。該矩形需要出現在網格中。 「只需拿到它們並用它們來調用你的功能」。你能爲我澄清一點嗎? – user3254558

回答

0

嗯,我不知道你在C++中學到了多少東西,但看起來你正在使用類?什麼是Rectangle類的成員變量?據推測,這件事情就像

class Rectangle { 
    public: 
     Rectangle(); // constructor sets member variables to default values 
     void getInputFromUser(); // using stdout and stdin, prompts the user for x1, y1, x2, y2, line char, fill char, and sets the member variables to these values 
     void printGrid(); // uses member variables to determine how to print the grid 

     ... 

    private: 
     // private methods 

     ... 

     // private variables 

     int m_x1; 
     int m_x2; 
     int m_y1; 
     int m_y2; 
     char m_lineChar; 
     char m_fillChar; 

     // static constants 

     static const int kMinXValue; // set to 0 in the cpp file 
     static const int kMinYValue; // set to 0 in the cpp file 
     static const int kMaxXValue; // set to 25 in the cpp file 
     static const int kMaxYValue; // set to 25 in the cpp file 
}; 

所以,在你的類,你getInputFromUser()的實現都將有一些代碼行像cout << "Please enter the top left corner's x value << endl;cin >> m_x1;

你實現printGrid的()都將有一些代碼行像for(int y = kMinYValue; y < kMaxYValue; y++) { // iterate through the rowsif(y == m_y1 || y == m_y2) { // we need to print the m_lineChar value if the x value is in range

希望這回答你的問題夠你解決問題。如果您需要針對特定​​問題的具體幫助,您需要更具體地瞭解您所做的工作,您的代碼是什麼以及您的代碼問題。

+0

我已經添加了我的頭文件,源代碼和主要功能。這是我正在與之合作。我的網格看起來不錯,這正是我想要的方式。我只是不知道如何接受用戶的輸入,並在我的網格中創建一個矩形。 – user3254558

+0

您已經有來自用戶的輸入。我不明白這個問題?你還需要一個用於外部字符的函數,所以像setIntChar那樣爲你的外部字符做一個函數,並且存儲一個corrosponding成員變量。 現在在你的代碼中:'for(j = 0; j <25; j ++)//在每個點後面打印一行25個點和2個空格' 我假設你想用正確的字符替換點?然後這是for循環添加條件檢查i和j針對x1,x2,y1和y2,以確定要打印的內容。 – m24p

+0

是的,我想用用戶選擇的字符替換點。我試着檢查i和j對x1,x2等。結果是字符被打印在開頭或變量i所代表的行的末尾。問題是我無法弄清楚如何用輸入字符替換點來形成一個矩形。 – user3254558