使用一个数字来退出C 的程序,同时不评估实际数字

  • 本文关键字:数字 程序 评估 退出 一个 c++
  • 更新时间 :
  • 英文 :


我正在尝试创建一个循环,该循环允许用户输入整数,直到他们使用数字-99退出程序为止。然后,该程序应该在屏幕上打印最大和最小的数字,但它一直在说我的最小数字是-99。

这是我到目前为止的代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    //Initialize integers for use
    long int number, largest, smallest;
    // Set condition for user input 
    while (number != -99)
    {
        // Allow user to input numbers to test 
        cout << " Enter a number to find the smallest and largest integer. " << endl;
        cout << " Enter -99 to quit " << endl;
        cin >> number;

        // Evaluate user input 
        if (number < smallest)
        {
            smallest = number;
        }
        if (number > largest)
        {
            largest = number;
        }
    }
    cout << " The smallest number you entered was " << smallest << endl;
    cout << " The largest number you entered was " << largest << endl;
    return 0;
}

阅读后立即检查数字,然后脱离循环,而不是使用它来更新smallestlargest

您还需要初始化smallestlargest,然后才能将它们与新数字进行比较。我在下面是通过专门处理循环的第一次迭代(使用first_time变量(来完成此操作。

#include <iostream>
using namespace std;
int main()
{
    //Initialize integers for use
    long int number, largest, smallest;
    bool first_time = true;
    // Set condition for user input 
    while (true)
    {
        // Allow user to input numbers to test 
        cout << " Enter a number to find the smallest and largest integer. " << endl;
        cout << " Enter -99 to quit " << endl;
        cin >> number;
        if (number == -99) {
            break;
        }
        // Evaluate user input 
        if (first_time) {
            smallest = largest = number;
            first_time = false;
        } else if (number < smallest) 
        {
            smallest = number;
        } else if (number > largest)
        {
            largest = number;
        }
    }
    if (!first_time) {
        cout << " The smallest number you entered was " << smallest << endl;
        cout << " The largest number you entered was " << largest << endl;
    }
    return 0;
}

尝试以下代码:

#include <iostream>
using namespace std;
int main()
{
    bool isInitialised = false;
    //Initialize integers for use
    long int number, largest, smallest;
    // Set condition for user input 
    while (true)
    {
        // Allow user to input numbers to test 
        cout << " Enter a number to find the smallest and largest integer. " << endl;
        cout << " Enter -99 to quit " << endl;
        cin >> number;
        // if number is -99, break loop
        if (number == -99) {
            break;
        }
        // Evaluate user input 
        if (!isInitialised) {
            isInitialised = true;
            smallest = number;
            largest = number;
            // after first input no need to make comparisons.
            continue;
        } 
        if (number < smallest) 
        {
            smallest = number;
        }
        else if (number > largest)
        {
            largest = number;
        }
    }
    cout << " The smallest number you entered was " << smallest << endl;
    cout << " The largest number you entered was " << largest << endl;
    return 0;
}

正确的正确。

扰流板警报和警告...

如果您在完成作业之前阅读了这篇文章,您将不会遭受教练想要的痛苦和屈辱。而且他/她会知道这不是您的工作。(我只是想到了一种使它看起来甚至光滑的方法,但现在已经足够光滑了。(

#include <iostream>
#include <numeric>
#include <algorithm>
using namespace std; // Forgive me, for I have sinned.
using int_t = long int;
int_t get_number(int_t &number, int_t &largest, int_t &smallest) {
    cout << " >";
    while (!(cin >> number)) {
        cout << "Try again." << endl;
        cout << "> ";
        cin.clear(); cin.ignore(10000, 'n');
    }
    smallest = min(smallest, number);
    largest = max(largest, number);
    return number;
} 
int main()
{
    cout << " Enter numbers to find the smallest and largest integer. " << endl;
    cout << " Enter -99 to quit " << endl;
    int_t largest = numeric_limits<int_t>().min();
    int_t smallest = numeric_limits<int_t>().max();
    int_t number = get_number(number, largest, smallest);
    while(-99 != number) {
        number = get_number(number, largest, smallest);
    }
    cout << " The smallest number you entered was " << smallest << endl;
    cout << " The largest number you entered was " << largest << endl;
    return 0;
}

您正在面临问题,因为当用户输入-99时,您也将其存储在smallest中。尝试下面的代码,仅在较小的的情况下覆盖数字,如果不是-99

    // Evaluate user input 
    if (number < smallest && number != -99)
    {
        smallest = number;
    }

最新更新