如何在不使用数组的情况下返回输入的最小值

时间:2018-10-31 19:00:05

标签: c++

请注意,这不是一个家庭作业问题,我不是在寻找答案,而是提示可以帮助我解决问题。该程序的目标是列出不使用数组输入的最小和最大数字。输入的输入0将退出程序,但不应记录为“低”值。我试图在if语句中将low设置为不等于零,但是无论如何它都会返回0。

#include <iostream>
using namespace std;
int main(){
    cout<<"Enter a Number: ";
    double input;
    int max = -100000000;
    int low = 100000000;
    cin>>input;
    for(int i = 0; i = input; i++){
    cout<<"Enter Another Number:";
    cin>>input;
    if(input > max != 0) { max = input; }
    else if (input < low != 0) { low = input; }
    }
    cout<<"MAX NUMBER WAS: "<< max << endl;
    cout<<"LOWEST NUMBER WAS: "<< low;
return 0;
}

4 个答案:

答案 0 :(得分:1)

因为我没有要点给您一些提示的提示,所以在这里我将添加提示: 因此,获得任何问题的正确解决方案的最简单方法是可视化该问题或在纸上写一个简单的示例,例如: 用户输入:

  

1,4,6,10,0

考虑一下自己,如果有人以相同的顺序向您显示此数字,您将如何找到最小和最大的数字?你会怎么做? 因此,一开始看到第一个数字 1 时,它是最小的,也是最大的,因为您没有更多的输入信息吗?

  

最小值= 1,最大值= 1

正在按照给定顺序向您显示数字的人现在向您显示第二个数字 4 ,您现在将做什么?可以肯定的是,您要比较当前阶段的输入是否小于 min (或 1 ),以及< strong> input 小于 min ,您将 input 值保存为 min max < / strong>:如果输入大于 max ,则将输入值保存为 max (或在这种情况下,因为我们的第二个数字是< strong> 4 ,并且 input 的值大于 max )所以

  

最大将花费 4 最小将是 1

。您对所有输入的数字重复相同的操作,或者如果输入 -1 ,则可以进行 while循环。循环将结束。 我想我让您知道您需要做什么,并根据我的提示为您提供帮助。抱歉,因为我在以前的答案中给了您源代码,现在我对其进行了编辑。 :)

答案 1 :(得分:0)

C ++提供了这种机制来找出特定于机器的最小值和最大值,因此您不必在变量中输入类似100000的值:

std::numeric_limits<int>::min();
std::numeric_limits<int>::max();

您可以将它们用于minmax变量。或者,您可以使用给定的第一个数字并将其分配给minmax

最后,

int number = 0, min = 0, max = 0;
std::cin >> number;
min = max = number;
while (number != 0) {
    if (number < min)
        min = number;
    else if (number > max)
        max = number;
    std::cin >> number;
}

这样的事情就足够了。然后,您可以根据需要使用变量。这样,您不必使用数组来存储所有变量。 另外,如果您是初学者,建议您看看The Definitive C++ Book Guide and List

答案 2 :(得分:0)

1)使用while(1)代替for(int i = 0; i = input; ++i)。这将是一个无限循环。您可以使用if条件添加break语句以退出循环。使用i = input时,条件循环可能永远不会执行。

2)您遇到的中断条件是input = 0。因此,请在循环中添加if (input == 0) break;语句。

3)将匹配条件修改为

if(input > max) { max = input; }
if (input < low) { low = input; }

4)匹配条件后读取新输入。

while(1){
    if (input == 0) { break; }
    if(input > max) { max = input; }
    if (input < low) { low = input; }
    cout<<"Enter Another Number:";
    cin>>input;
}

答案 3 :(得分:0)

最好在此处使用而不是您使用过的for循环。试试这个:

    int n, max, min;
    std::cout << "Enter a No. : ";
    std::cin >> n;
    //Assign 1st input to max and min 
    max = min = n;
    while(1){
        std::cout << "Enter a No. :";
        std::cin >> n;
        if(0 == n) //Terminating condition for loop
            break;
        if(n > max)
            max = n;
        else if(n < mi)
            min = n;
    }