跟踪哪个是最小的,哪个是循环中迄今为止的最大值

时间:2016-05-15 09:46:42

标签: c++ algorithm

你可以帮我解决一个简单的问题吗?我对C ++非常新鲜,并且从Bjarne Stroustrup"中学习书籍和#34;编程:使用C ++的原理和实践。我之前从未学习过C ++,因此我不熟悉许多有用的功能。演习说:

  

" 6。现在改变循环的主体,使其只读取一个双精度   每一次。定义两个变量来跟踪哪个变量   最小,这是你目前看到的最大值。每   通过循环的时间写出输入的值。如果是的话   到目前为止最小的,写到目前为止最小的数字。如果是   到目前为止最大的,写出最大的数字"

我不知道如何在不使用矢量的情况下正确执行此操作。这是我的代码:

Option Strict On

以上是以前的步骤,我已用上面的代码解决了这些步骤:

  
      
  1. 编写一个由while循环组成的程序(每次循环)读入两个整数然后打印它们。退出   程序何时终止' |'进入。      
        
    1. 更改程序以写出较小的值为:后跟较小的数字,较大的值为:后跟   更大的价值。
    2.   
    3. 对程序进行扩充,使其在数字相等的情况下写入行(如果它们相等)。
    4.   
    5. 更改程序,使其使用双打而不是整数。
    6.   
    7. 更改程序,以便在写出后写出数字几乎相等,哪个更大,如果是两个则更小   数字相差不到1.0 / 100.
    8.   
  2.   

你能否给我一些提示如何做第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();
}

3 个答案:

答案 0 :(得分:3)

  

我不知道如何在不使用矢量的情况下正确执行此操作。

你不需要矢量。描述正确地说两个变量就足够了:

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

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

答案 1 :(得分:0)

#include < iostream>
#include < cstdlib>

 int main() {

 double num_1 = 0;
 double num_2 = 0;
 double largest = 0;
 double smallest = 0;

 bool condition1 = true;

 while (true) {

    std::cin >> num_1;

    if (num_1 > largest){
        largest = num_1;
    }
    else if (num_1 < smallest) {
        smallest = num_1;
    }

    std::cout << "The largest so far: " << largest << std::endl;

    std::cin >> num_2;

    if (condition1) {
        smallest = largest;
        condition1 = false;
    }

    if (num_2 < smallest) {
        smallest = num_2;
    }
    else if (num_2 > largest) {
        largest = num_2;
    }

    std::cout << "The smallest so far: " << smallest << std::endl;
}

system("pause");
return 0;
}

答案 2 :(得分:-1)

double large = 0;
double small = 0;

double input;
int counter = 0;

while (counter < 5) {
    cin >> input;
    cout <<"Large value: "<< large << '\t' <<"Small value: "<< small\
        << '\t' <<"Input value: "<< input << '\n';
    if (input < small) {
        cout << "The smallest value is " << input<<\
            "\nthe largest value is "<< large<<'\n';
        small = input;
    }

    else if (input > small&& input < large) {
        cout << "The smallest value is " << small << \
            "\nthe largest value is " << large<<'\n';
    }
    else if (input > small&& input > large) {
        cout << "The smallest value is " << small << \
            "\nthe largest value is " << input << '\n';
        large = input;
    }
    counter += 1;