私はクリスマスツリーを描くためにループを作成しようとしていますが、出力が間違っています。私は答えを探してみましたが、見つけられないと思われます。答えは明白かもしれませんが、私はたくさんお見逃ししており、どんな助けも大歓迎です!ループの繰り返し描画のトラブルのため
#include <iostream>
#include <assert.h>
#include <iomanip>
using namespace std;
const char blank = ' ';
const char leaf = '#';
const char wood = '|';
const int minSize = 4;
const int maxSize = 20;
int treeHeight;
int& getValidHeight(int&);
void drawALineOfFoliage(int);
void drawFoliage(int);
void drawTrunk(int);
void drawAXmasTree(int);
void drawAXmasTree(int treeHeight) {
getValidHeight(treeHeight);
drawFoliage(treeHeight);
drawTrunk(treeHeight);
}
int& getValidHeight(int& treeHeight) {
cout << ("Please enter the size of the tree (4-20):\n");
cin >> treeHeight;
while ((treeHeight < minSize) || (maxSize < treeHeight)) {
cout << "ERROR: Invalid height! Enter the size of the tree (4-20):\n";
cin >> treeHeight;
return treeHeight;
}
}
void drawALineOfFoliage(int treeHeight) {
for (int x = 0; x < treeHeight; ++x){
for (int y = treeHeight; y > x; --y){
cout << blank;}
for (int y = 0; y < x; ++y){
cout << leaf;}}}
void drawFoliage(int treeHeight) {
int branchLine = 1;
do {
drawALineOfFoliage(treeHeight);
branchLine += 1;
} while (branchLine <= (treeHeight - 2));}
void drawTrunk(int treeHeight) {
int trunkLine(1), spaces;
while (trunkLine <= 2) {
spaces = 1;
while (spaces <= (treeHeight - 3)) {
cout << blank;
spaces += 1;}
cout << wood << "\n";
trunkLine += 1;
}
}
int main()
{
drawAXmasTree(treeHeight);
system("pause");}
出力はちょうどクリスマスツリー解体であるので、すべての レベルが同じライン上にあり、数回繰り返し
'出力が間違っています'正しい出力と出力を表示 –
OT: 'int&getValidHeight(int&treeHeight)'なぜここで参照を使用しますか?入力を読み込んで値を返すだけです。 –
ああ - 「宿題」というタグを追加するとよいでしょう。 – xtofl