如何在c ++中处理重叠值?

时间:2016-11-23 12:17:42

标签: c++ overlap

我目前正在尝试解决涉及不同重叠值范围的编程问题。任务是接受E-notation中的输入,这是不可避免地发生范围重叠的地方。

我有2个范围在1E-11处重叠。 1E-11和更低,1E-11和更高 输出将是1E-11是x或者是y。我会以编程方式解决这个问题:

(X_MIN would be 1E-11 and X_MAX 1E-8)
(Y_MAX would be 1E-11 and Y_MIN 1E-13)

(lengthOfRange <= X_MIN) && (lengthOfRange >= Y_MAX) ? 
cout << "This value entered indicates that it is x\n" :
cout << "It is y";

以这种方式表达如果我输入IE-11它会显示我&#34;输入的值表示...&#34;但永远不会告诉我它是y(可以理解 - 重叠!)

另一种方式是用这种方式表达:

(lengthOfRange <= X_MIN) && (lengthOfRange != Y_MAX) ? 
cout << "This value entered indicates that it is x\n" :
cout << "It is y";

输出总是&#34; ...是y ...&#34; (相同的差异 - 重叠!)没有其他决定因素可以告诉范围是x或y现在正在那里进行比赛。

...
if (lengthOfRange <= X_MIN) && (lengthOfRange == Y_MAX)
{
   cout << "The input indicates that it could be either x or y\n";
}
...

即使我以某种方式解决问题,例如用不同的值定义范围,最终也会导致同样的问题。我可以将MIN和MAX定义为lengthOfFrequency中的常量,这是完全不同的,然后我将不得不说:lengthOfFrequency = 1E-11;再次瞧瞧同样的问题。 1输入2范围在技术上是不同的,获得相同的一个,只有正确的E-not值。

有没有办法绕过这个而不涉及简单地说输入是x || ÿ?从技术上来说当然是这样,如果要在物理上解决这个问题,就可以分辨出1E-11不是1E-11,尽管它是1E-11。 (我希望我在这里有意义)。但是,再次,...有这样的方式,我将如何写它? (没有特别要求代码虽然它非常受欢迎,只是指向正确的方向。)或者我应该说输入是x || ÿ?

提前感谢您的回答!

**Minimum Complete Code:** 

   #include <iostream>

using std::cout;
using std::cin;

int main()
{
    /* Constants for ranges, min and max */
    const double X_RAYS_MIN = 1E-13,
                 X_RAYS_MAX = 1E-11,
                 Y_RAYS_MIN = 1E-11,
                 Y_RAYS_MAX = 1E-8,
                 Z_RAYS_MIN = 1E-7,
                 Z_RAYS_MAX = 3.8E-7;

    double lengthOfRange;

    /* Test output and validation */
    cout << "Enter value in scientifc notation: ";
    cin >> lengthOfRange;

    /* X_RAYS_MIN < is 1E-14, 1E-15, 1E-16 etc. > 1E-12, 1E-11 etc.. */
    if (lengthOfRange >= X_RAYS_MIN && lengthOfRange <= X_RAYS_MAX)
    {
        cout << "X_RAYS\n";
    }
    else if (lengthOfRange >= Y_RAYS_MIN && lengthOfRange <= Y_RAYS_MAX)
    {
        cout << "Y_RAYS\n";
    }

    system("pause");
    return 0;
}

输出为:1E-10为Y_RAYS,1E-9为Y_RAYS,1E-11为X_RAYS,1E-12为X_RAYS

不知怎的,我自己找到了解决问题的方法而没有采用任何迂回的方式......将鼠标悬停在1E-13上:

X_RAYS_MIN = 1E-13

VS显示我1.(numberofzeros)3E-13,并猜测...如果1E-11的输入是2E-11,则X_RAYS的输出变为Y_RAYS ...所以问题&#34;神奇&#34;解决了自己... 幸运我我想...... :)

0 个答案:

没有答案