我需要让用户输入三角形的值和一个字符吗?

时间:2012-10-12 08:06:20

标签: c++

我差不多完成了代码,我只需要弄清楚如何使用cout和cin为字符和三角形的高度设置用户输入值,谢谢这是我的所有代码硬编码。

我觉得我说错了基本上程序应该使用我在下面创建的函数drawline绘制一个三角形,当我编译并运行它要求我输入用户选择如果我输入1它运行代码在if(userChoice == 1){}基本上我想要一个cin和cout代码结构,允许它们为lineLength和displayChar输入它们的值。

#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

3 个答案:

答案 0 :(得分:0)

问题是cin是一个流(请参阅reference document),因此您不能将值流式传输到userChoice,因为它是一个int。相反,您需要使用字符串:

string response;
cin >> response;

然后你需要使用this SO question中的一种方法解析字符串以获取int,例如strtol

关于阅读这里的类似问题:How to properly read and parse a string of integers from stdin C++

或者,只需使用字符串response进行比较:

if(response == '1') {
    //...
}

答案 1 :(得分:0)

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

将y初始化为不确定的值。这意味着循环将具有随机的,可能非常长的持续时间。

答案 2 :(得分:-1)

您无法使用cin设置整数。由于cin是一个流,因此您可以使用它来设置字符串。从那里你可以使用atoi将字符串转换为整数。您可以在cplusplus.com上查看详情。

您的实施应该是这样的:

string userChoiceString;
cin >> userChoiceString;
userChoice = atoi(userChoiceString.c_str());