-3

これが私のコードです:

#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;

int main()
{
    srand((unsigned) time(0));
    int random_integer;
    int lowest =- 10, highest = 10;
    int range = (highest-lowest) + 1;
    for(int index = 0; index < 20; index++) {
        random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
        cout << random_integer << ' ';
    }

    cout << "\n=============== \n";
    system("pause"); 
}

コンピューターが生成する数字を並べ替えて、最低から最高の順に並べてから、2 番目に高い数字を出力するにはどうすればよいですか? ありがとうございました。

4

4 に答える 4

0

<algorithm>ベクトルで乱数を作成するために使用することを検討してから、ベクトルを単純に並べ替える必要があります。

#include <algorithm>
#include <vector>

int myRandomFunction() {
   ...
}

/* Preallocate some space */
std::vector<int> values(100);
std::algorithm::generate(values.begin(), values.end(), myRandomFunction);
std::sort(values.begin(), values.end());
于 2013-04-01T20:03:47.283 に答える
0

vectorandを使用して、次のようなことができますsort()

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <vector>
#include <algorithm>

using namespace std;
int main()
{
    vector<int> v;
    srand((unsigned)time(0));
    int random_integer;
    int lowest=-10, highest=10;
    int range=(highest-lowest)+1;
    for(int index=0; index<20; index++){
        random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
        v.push_back(random_integer);
        //cout << random_integer << ' ';
    }
    sort(v.begin(),v.end());
    cout << endl << v[v.size()-2] << endl;

    cout<<"\n=============== \n";
    system("pause"); 
}

これは 2 番目に大きい数値を表示するだけです。

#include <iostream>
#include <time.h>
#include <cstdlib>
#include <algorithm>

using namespace std;
int main()
{

    srand((unsigned)time(0));
    int random_integer;
    int lowest=-10, highest=10;
    int a=lowest,b=lowest;
    int range=(highest-lowest)+1;
    for(int index=0; index<20; index++){
        random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
        cout << random_integer << ' ';
        if(a<random_integer) 
        {
            a=random_integer;
            continue;
        }
        if(b<random_integer) 
        {
            b=random_integer;
            continue;
        }
        //cout << random_integer << ' ';
    }
    cout << endl << min(a,b) << endl;

    cout<<"\n=============== \n";
    system("pause"); 
}
于 2013-04-01T20:03:58.653 に答える