你能帮我解决简单的问题吗?我对C++非常熟悉,并且从《编程:Bjarne Stroustrup的C++原理与实践》中学习。我以前从未学过C++,所以我不熟悉许多有用的特性。演习说:
“6.现在更改循环的主体,使其仅读取一个双精度
每次都是这样定义两个变量以跟踪
最小的,哪一个是你迄今为止看到的最大的价值。每个
循环时间写出输入的值。如果是
到目前为止最小的,在数字后面写到目前为止最小的如果是的话
迄今为止最大的,在数字后面写下迄今为止最大的”
我不知道不使用向量如何正确地做这件事。这是我的代码:

#include "C:/std_lib_facilities.h"

int main()
{
    double a, b,differ=0;
    char c=' ';
    cout << "Enter two values: \n";
    while (c != '|' && cin >> a >> b )
    {
        if (a > b)
        {
            cout << "The smaller value is: "<< b << " and the larger value is: " << a << "\n \n";
            differ = a - b;
            if (differ < 1.0 / 100)
                cout << "Numbers are almost equal\n\n";
        }
        else if (a < b)
        {
            cout << "The smaller value is: " << a << " and the larger value is: " << b << "\n \n";
            differ = b - a;
            if (differ < 1.0 / 100)
                cout << "Numbers are almost equal\n\n";
        }
        else
        {
            cout << "These values are equal!\n";
        }
        cout << "Enter a character | to break loop: \n";
        cin >> c;
    }
    cout << "You have exited the loop.\n";
    keep_window_open();
}

下面是前面的步骤,我已经用上面的代码解决了这些问题:
编写一个由while循环组成的程序,while循环(每次循环)读取两个int,然后打印它们退出
当输入终止的“”时的程序。
更改程序以写出较小的值为:后跟较小的数字,较大的值为:后跟
价值更大。
扩充程序,使其写入的行数相等(仅当它们相等时)。
更改程序,使其使用双精度数而不是整数。
更改程序,使其写出的数字在写出后几乎相等,如果两个数字都是
数字相差小于1.0/100。
你能告诉我怎么做第六步吗?我有一些想法,但没有一个奏效。。
以下是新代码:
#include "C:/std_lib_facilities.h"

int main()
{
    double smallestSoFar = std::numeric_limits<double>::max();
    double largestSoFar = std::numeric_limits<double>::min();
    double a,differ=0;
    char c=' ';
    cout << "Enter value: \n";

    while (c != '|' && cin >> a)
    {
        if (a > largestSoFar)
        {
            largestSoFar = a;
            cout <<"Largest so far is: "<< largestSoFar << endl;
        }
        else if (a < smallestSoFar)
        {
            smallestSoFar = a;
            cout <<"Smallest so far is: "<< smallestSoFar << endl;
        }
        else if(smallestSoFar >= a && a<=largestSoFar)
            cout << a << endl;
        cout << "Enter a character | to break loop: \n";
        cin >> c;
    }
    cout << "You have exited the loop.\n";
    keep_window_open();
}

最佳答案

我不知道不使用向量如何正确地做这件事。
你不需要向量描述正确地说明了两个变量就足够了:

// Declare these variables before the loop
double smallestSoFar = std::numeric_limits<double>::max();
double largestSoFar = std::numeric_limits<double>::min();

修改循环以读入a,而不是同时读入ab。根据smallestSoFarlargestSoFar检查新输入的值,进行打印,并根据需要重新分配最小值和最大值。请注意,第一次您应该看到两个打印输出-最大的迄今为止和最小的迄今为止。

关于c++ - 到目前为止,跟踪哪个值最小,哪个值最大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37236764/

10-08 22:14