C++ 我应该怎么做才能得到用户输入的最小序列?

C++ 我应该怎么做才能得到用户输入的最小序列?,c++,C++,我正在制作一个程序,该程序将读取用户的输入,直到用户输入非数字的内容。我必须用向量来做这个。因此,用户必须定义元素的值和向量的大小。numVals应根据用户输入的元素数量进行初始化。程序应该找到序列的第二小数目。所以我试着得到第一个最小的数字,因为这更容易。但输入值总是零,而不是最小值。谁能告诉我怎么了 #include<iostream> #include<vector> #include<limits> #include<stdexcept>

我正在制作一个程序,该程序将读取用户的输入,直到用户输入非数字的内容。我必须用向量来做这个。因此,用户必须定义元素的值和向量的大小。numVals应根据用户输入的元素数量进行初始化。程序应该找到序列的第二小数目。所以我试着得到第一个最小的数字,因为这更容易。但输入值总是零,而不是最小值。谁能告诉我怎么了

#include<iostream>
#include<vector>
#include<limits>
#include<stdexcept>
using namespace std;

int main(){        
    unsigned int i;
    int numVals; 
    int min;        

    vector<int>sequence(numVals);       

    cout << "sequence: ";
    while (cin.good()){
       for (i=0; i<sequence.size(); ++i){        
            cin >> sequence.at(i);              
           }  
    }

    min =sequence.at(0);
    for (i=0; i<sequence.size();++i){
        if (sequence.at(i)< min){
            min=sequence.at(i);
        }
    }
    cout << min << endl;
    return 0;
}  
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
无符号整数i;
整数;
int-min;
向量序列(numVals);
cout序列at(i);
}  
}
最小值=序列。在(0)处;

对于(i=0;i来说,您的代码有很多问题。下面的代码应该符合您的想法

#include<iostream>
#include<vector>

using namespace std;

int main()
{ 
    int num;
    vector<int>sequence;

    cout << "sequence: ";
    while(cin >> num)
       sequence.push_back(num);

    int min = sequence.at(0);

    for (int n: sequence)
    {
        if (n < min)
          min = n;
    }

    cout << min << endl;
}
#包括
#包括
使用名称空间std;
int main()
{ 
int-num;
矢量序列;
cout>num)
顺序。推回(num);
int min=序列。在(0)处;
for(int n:序列)
{
如果(n向量序列中的cout(numVals);
numVals
未初始化。让我们从显而易见的开始。为了找到最小值,您不需要保留整个序列。假设有人在电话上读一系列数字,而您没有纸或笔,而且序列太长,无法记住。您仍然可以找到最小的数字吗?嗯……您没有需要迭代所有序列。初始化“min”使用std::numeric\u limits::max。当你收到输入时,你可以用最后一个输入检查。如果你想对向量做些什么,请忘记我的想法,不要比原来的更好。
cin>>num
是使cin变差的原因。在这之前检查cin是否好,你什么都买不到。@n.m.我不会说没有更好的。有cr基准差异。原来的不起作用,这一个起作用。我的意图不是重构或重新设计OP的代码,只是指出错误并提供一个快速的解决方法。@n.m.在cin不好时,通过根本不插入来修复它。它起作用了,因为“工作”的定义很糟糕。它可能通过了测试。现在您正在进行反惯用重复检查,这在技术上是可行的,但会使您的代码在代码审查中失败。您是否熟悉
while(cin>>…)
惯用用法?这确实更好;)