C++ 中代码输出的问题

An issue with an output of a code in C++

我的代码有问题。

我的代码是:

#include <iostream>
#include <string>
#include <math.h>
using namespace std;

int min(int A[], int s)
{
    int x = A[0];
    for (int i = 0; i<s; i++)
        if (A[i]<x)
            x = A[i];
    return x;
}

int max(int A[], int s)
{
    int x = A[0];
    for (int i = 0; i<s; i++)
        if (A[i]>x)
            x = A[i];
    return x;
}


int main()
{
    int Array[10] = { 15,20,8,0,17,14,2,12,10,5 };

    while (1)
    {
        string UserInput;
        cin >> UserInput;

        if (UserInput == "Minimun")
        {
            int Minimum = min(Array, 10);
        }

        if (UserInput == "Maximum")
        {
            int Maximum = max(Array, 10);
        }

        if (UserInput == "Dropped ones")
        {
            int count = min(Array, 10) + 1;
            for (int i = min(Array, 10); i<max(Array, 10) - 1; i++)
                cout << count++ << "\n";
        }
    }
    return 0;
}

它没有错误,但它并没有像我想要的那样工作。

如果我有一个数组:int Array[10]= {15,20,8,0,17,14,2,12,10,5};

然后我在这个数组中找到了最大值和最小值。我想制作一个计数器,打印 0 到 20 之间的值,数组中的值除外。

表示输出应该是:

1
3
4
6
7
9
11
13
15
16
18
19

为什么我的代码不打印此输出?

请帮帮我,我不知道这段代码哪里错了。 提前致谢。

再试一次,但是 "cbegin" 和 "cend" 出现错误:

     #include <iostream>
     #include <vector>
     #include <algorithm>

       using namespace std;

       int main()
         {
         int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };

auto Minimum = *min_element( cbegin( Array ), cend( Array ) );
auto Maximum = *max_element( cbegin( Array ), cend( Array ) );

cout << "Min: " << Minimum << '\n';
cout << "Max: " << Maximum << '\n';

for( auto i = 1; i <= 20; ++i ) {
    if( find( cbegin( Array ), cend( Array ), i ) == cend( Array ) ) {
        cout << i << "\n";
    }
}

return 0;
 }

如果我理解你的 post 正确的话。根据您的要求,我将代码从使用向量更改为使用 c 数组。我拿出了用户输入的东西给你一个较小的样本来查看。

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };
    // part of the xutility header
    // better to use cbegin( Array );
    auto begin = &Array[ 0 ];
    // better to use cend( Array );
    auto end = begin + sizeof( Array ) / sizeof( Array[ 0 ] );

    auto Minimum = *min_element( begin, end );
    auto Maximum = *max_element( begin, end );

    cout << "Min: " << Minimum << '\n';
    cout << "Max: " << Maximum << '\n';

    for( auto i = 1; i <= 20; ++i ) {
        if( find( begin, end, i ) == end ) {
            cout << i << "\n";
        }
    }

    return 0;
}

它不起作用,因为你的 cin 只得到第一个词 "Dropped" 而不是 "Dropped ones"。如果你把它写成 1 个单词,似乎工作得很好:http://ideone.com/AjtOc7

如果你想要多个单词使用getline

std::string UserInput;
std::getline (std::cin, UserInput);

另外,考虑像答案中提到的那样使用 STL 库。