web-dev-qa-db-ja.com

1.#QNANエラーC ++

私はプログラミングに不慣れで、新しいプログラムを書こうとしています。プログラムをチェックしているときに、エラーコード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;
}
14
William Heck

1#QNANは「quiet NAN」の文字列表現です。 「NAN」は「非数」であり、floatとdoubleにのみ適用されます。

NANは、実際に「null」値を表すのに非常に役立ちます(実際の数を選択して、その自然な意味でその数が不要な最善のものを期待するのではなく)。

一部の数学演算は、その演算が「無効」(たとえば、負の数のログを取る)の場合にNANを返すことがあります。

あなたはC++からQNANを生成することができます

double d = std::numeric_limits<double>::quiet_NaN();

NANでの比較演算(==、<=など)は、等しいかどうかを比較しても偽を返します。ただし、!=は(それ自体と比較する場合でも)常に真を返します。

(コードの実際のバグは、doubleを返す関数のようですが、returnステートメントはありません)。

44
CashCow