gpt4 book ai didi

error-handling - 矩形错误检查功能的C++区域

转载 作者:行者123 更新时间:2023-12-03 08:28:37 25 4
gpt4 key购买 nike

以下是我在程序中的代码,其中要求用户输入长度和宽度,然后计算面积,并显示长度,宽度和面积。

我试图将错误检查功能合并到用户输入的代码底部,以便如果用户键入的不是数字,则显示Invalid input. Try again:

我浏览了多个论坛帖子,并且已经讨论了几个小时,因此,我非常感谢尝试使错误检查功能正常工作的帮助。

#include <iostream>
#include <cstdlib>
#include <limits>
using namespace std;

// Write the prototypes for the getLength,
// getWidth, getArea, and displayData
// functions here.

double getLength();
double getWidth();
double getArea(double, double);
void displayData(double, double, double);
double error(double);

int main()
{
double len, // The rectangle's length
wid, // The rectangle's width
ar; // The rectangle's area

// Get the rectangle's length.
len = getLength();

// Get the rectangle's width.
wid = getWidth();

// Get the rectangle's area.
ar = getArea(len, wid);

// Display the rectangle's data.
displayData(len, wid, ar);

return 0;
}

double getLength ()
{

double length;
cout << "Please enter the length of the rectangle:" << endl;
cin >> length;
error (length);
return length;

}

double getWidth ()
{

double width;
cout << "Please enter the width of the rectangle:" << endl;
cin >> width;
error (width);
return width;

}

double getArea (double length, double width)
{

double area;
area = length*width;
return area;

}

void displayData(double length, double width, double area)
{

cout << "The length is: " << length << endl;
cout << "The width is: " << width << endl;
cout << "The area is: " << area << endl;

}

double error(double x)
{

while(!(cin>>x))

{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');

cout << "Invalid input. Try again: " << endl;
cin>>x;

return x;
}
cout << "You entered: " << x << endl;

return x;

}

最佳答案

看起来像一个控制台应用程序,所以您可能正在使用scanf()?在这种情况下,您应该检查scanf()的返回值以查看已扫描和格式化了多少个项目:
int结果= scanf(“%f”,&length);

如果结果为零,则用户键入了不能解释为 double 值的值。您不知道为什么它无效,也无法确定用户是否在两次输入之后输入了垃圾,但这总比没有好。

如果您读取字符串然后自己解析,或者寻找可以为您解析的第三方代码,则可以做更多的验证。

关于error-handling - 矩形错误检查功能的C++区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com