Wil*_*eck 14 c++ error-handling
我是编程和尝试编写新程序的新手.在检查我的程序时,它返回错误代码1.#QNAN.我试过隔离变量并研究答案,但找不到任何解决方案.
我的代码:
// This is a program to decide what culvert should be properly used for a specific installation
// using given measurements and data
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
// initializing functions
double slope_function();
double cbasin();
// initializing classes: Subdivisions specs
//intitializing global variables
double edge_road =0;
double up_stream =0;
double down_stream =0;
double tbm =0.0;
//double culv_length =0;
double slope = 0.0 ;
char street_name[1001];
int min_culv = 15;
double up_strm_culv =0;
double dwn_strm_culv =0;
int main (int nNumberofArgs, char* pszArgs[])
{
cout<< "This program will allow the surveyor to double check their calculations\n";
cout << "in deciding what size, type, and requirements are allowed for the\n";
cout << "installation of culverts in Terrebonne Parish.\n\n";
// begin input
cout << "what is the name of the street\nwhere the culverts will be installed: ";
cin.getline (street_name,1000);
cout << endl;
cout << "What is the Benchmark: ";
cin >> tbm;
cout << endl;
cout << "What is the elevation of the edge of the road: ";
cin >> edge_road;
cout << endl;
cout << "What is the up-stream culvert size: ";
cin >> up_strm_culv;
cout << endl;
cout << "What is the culverts up-stream inverted elevation: ";
cin >> up_stream;
cout << endl;
cout << "What is the down-stream culvert size: ";
cin >> dwn_strm_culv;
cout << endl;
cout << "What is the culverts down-stream inverted elevation: ";
cin >> down_stream;
cout << endl;
cout << "What is the length of culvert requested: ";
cin >> culv_length;
cout << "Your slope is : ";
cout << slope_function();
cout << endl;
cout << street_name;
cout << endl;
cout << cbasin();
cout << endl;
// wait until user is ready before terminating program
// to allow the user to see the program results
system ("pause");
return 0;
}
// slope function
double slope_function()
{
double riseoverrun = 0.0;
slope = (up_stream - down_stream)/ culv_length;
return slope;
}
// Catch Basin function
double cbasin ( )
{
double cb = 0;
cb = culv_length / 60;
cout << endl;
cout << "You need ";
cout << cb;
cout << " catch basins for this job.";
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
Cas*_*Cow 44
1#QNAN是"安静NAN"的字符串表示."NAN"是"非数字",仅适用于浮点数和双打数.
NaN的实际上可以用来表示"空"值(而不是挑选一些真正的号码,并希望最好的,你不需要为它的自然含义数)是非常有用的.
如果操作"无效",则一些数学运算可以返回NAN(例如,取负数的对数).
您可以使用C++从C++生成QNAN
double d = std::numeric_limits<double>::quiet_NaN();
Run Code Online (Sandbox Code Playgroud)
任何比较操作(==,<=等等)上NAN返回false,即使它的平等与自己进行比较,除!=(与自己进行比较时,即使),它总是返回true.
(代码中的实际错误似乎是一个返回double但没有return语句的函数).