0

文字のユーザー入力値と cout と cin を使用して三角形の高さを作成する方法を理解する必要があるコードでほぼ完了しました。これはすべてハードコードされたコードです。

基本的に、プログラムは以下で作成した関数 drawline を使用して三角形を描画することになっていると言いましたが、コンパイルして実行すると、1 を入力するとユーザーの選択を入力するように求められ、if (userChoice == 1){} 基本的に、lineLength と displayChar の値を入力できる cin と cout のコード構造が必要です。

#include <iostream>
#include <string>
#include <math.h>

using namespace std;

void drawLine (int lineLength, char displayChar);
void placePoint (int lineLength) ;

int main()
{
    int userChoice = 0;
    cout << "**********************************" << endl;
    cout << "* 1 - DrawTriangle *" << endl;
    cout << "* 2 - Plot Sine graph *" << endl;
    cout << "* 3 - Exit *" << endl;
    cout << "Enter a selection, please: " << endl;
    cin >> userChoice;

    int x,y,t =0;
    char displayChar = ' ';
    int lineLength = 0;
    double sinVal= 0.00;
    double rad = 0.00;
    int plotPoint = 0;

    if (userChoice == 1)
        for (int x=1; x <= lineLength; x=x+1) {
            drawLine ( x, displayChar);
        }//end for

    for (int y=lineLength-1; y >= 1; y=y-1) {
        drawLine ( y, displayChar );
    }//end for
}//end main at this point.

void drawLine (int lineLength, char displayChar) 
{
    for (int x=1; x <= lineLength; x=x+1) {
        cout << displayChar;
    }
    cout << endl;

    for (int y=y-1; y >= 1; y=y-1) {
        cout << displayChar;
    }
    cout << endl;
} //end drawline
4

3 に答える 3

0
for (int y=y-1; y >= 1; y=y-1)

y を不定値に初期化します。これは、ループがランダムな、場合によっては非常に長い持続時間を持つことを意味します。

于 2012-10-12T10:04:08.333 に答える
0

問題は、それcinがストリームであることです (参照ドキュメントuserChoiceを参照)。そのため、値が int であるため、単にストリームすることはできません。代わりに、文字列を使用する必要があります。

string response;
cin >> response;

次に、この SO questionのメソッドのいずれかを使用して、文字列を解析して int を取得する必要がありますstrtol

ここでの int の読み取りに関する同様の質問:標準入力 C++ から整数の文字列を適切に読み取り、解析する方法

responseまたは、比較に文字列を使用します。

if(response == '1') {
    //...
}
于 2012-10-12T08:14:23.297 に答える