-1

私はさまざまなことにランダム関数を使用しようとしています。今のところは機能しますが、1つの問題が発生します。コードでランダムにFを生成したいのですが、後で配列になる必要があります。また、私はそれを使用する必要があり、1つずつ実行する必要がある場合は、コードが長すぎて面倒になると思います。私がこれを行う方法を知っていますか?

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main(){
    srand(time(0));
    //random numbers 1 to 10 for Time:
    int t = rand() % 10 + 1 ;
    cout << "There is "<< t << " Time;
    int* F1 = new int [t];
    int* F2 = new int [t];
    int* F3 = new int [t];
    int* F4 = new int [t];
    int* F5 = new int [t];
    cout << "Time per F: 0 Not available, 1 available;
    //For F1
    for(int i = 0; i < t; i++){
        //random numbers 0 or 1:
        F1[i] = rand() % 2 ;
    }
    cout << "The Time for F1 is ";
    for(int a = 0; a < t; a++){
        cout << " "<< F1[a] <<" ";
    } 
    //For F2
    for(int j = 0; j < t; j++){
        //random numbers 0 or 1:
        F2[j] = rand() % 2 ;
    }
    cout << "The Time slot for F2 is ";
    for(int b = 0; b < t; b++){
        cout << " "<< F2[b] << " ";
    }
    return 0;
}

ありがとうございました

編集:あなたが私に与えた解決策で、私が行う解決策を見つけるのに役立ちますint F [em] [t];

4

3 に答える 3

0

配列の配列を使用します。

#include <ctime>
#include <cstdlib>
using namespace std;
int main(){
   srand(time(0));
    //random numbers 1 to 10 for Time:
    int t = rand() % 10 + 1 ;
    cout << "Time per F: 0 Not available, 1 available";
    const int f_num = 5;
    cout << "There is "<< t << "Time";
    int* F = new int*[f_num];
    for(int i = 0; i < f_num; i++){
       F[i] = new int[t];
       cout << "The Time for F"<<i<<" is :";
       for(int j = 0; j < t; j++){
          //random numbers 0 or 1:
          F[i][j] = rand() % 2 ;
          cout << " "<< F1[i][j] <<" ";
       }
    }
}

ところで、あなたのコードはCのようなものです。C ++では、通常std::vector、プレーン配列の代わりに使用し、rand()の代わりにhttp://en.cppreference.com/w/cpp/numeric/randomを使用します。また、は使用しないでくださいusing namespace std。これにより、名前の衝突が発生する可能性があります。

于 2013-03-12T04:19:03.600 に答える
0

C ++を使用していて、標準ライブラリにアクセスできるので、これはstd :: vector:と同じくらい安全に記述できます。

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <vector>

using namespace std;
int main()
{
    srand(time(0));

    //Random number from 3 to 7
    int numberOfVectors = (rand() % 7) + 3;

    //Random number from 1 to 10.
    int size = (rand() % 10) + 1;

    std::cout << "There are " << numberOfVectors << " vectors." << std::endl;
    std::cout << "Each vector has " << size  << " elements." << std::endl;

    std::vector< std::vector<int> > vectorOfVectorOfInt;

    std::cout << "Value per element: 0 = Not available, 1 = available" << std::endl;

    for(int vec = 0; vec < numberOfVectors; vec++)
    {
        //Create a new vector with 'size' elements.
        std::vector<int> newVector(size);

        for(int i = 0; i < size; i++)
        {
            //Generate a random value between 0 and 50
            newVector[i] = (rand() % 50);
        }

        //Add the vector to our vector-of-vectors.
        vectorOfVectorOfInt.push_back(newVector);

        std::cout << "The values for Vector #" << (vec+1) << " is:";
        for(int b = 0; b < size; b++)
        {
            int value = vectorOfVectorOfInt[vec][b];
            std::cout << "\t" << value;
        }
        std::cout << std::endl;
    }

    return 0;
}

ここで実行して結果を確認できます:http://ideone.com/RWQhjO

于 2013-03-12T04:41:56.377 に答える
0

私はさまざまなことにランダム関数を使用しようとしています。

ランダムなもの、おそらく。

今のところは機能しますが、1つの問題が発生します。コードでランダムにFを生成したいのですが、後で配列になる必要があります。

の値を生成したのと同じように、これを生成できますt

const int number_of_fs = rand() % 10 + 1;
std::cout << "Working with " << number_of_fs << " Fs" << std::endl;

また、私はそれを使用する必要があり、1つずつ実行する必要がある場合は、コードが長すぎて面倒になると思います。私がこれを行う方法を知っていますか?

コードはすでに長すぎて乱雑で、メモリリークがあります。dを取得しないポインタへのポインタではなく、標準コンテナライブラリのコンテナを使用する必要があります。delete

std::mapたとえば、a of std::vectorsを使用した場合、コードは次のようになります。

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <map>
#include <vector>

int main(){
    srand(time(0));
    //random numbers 1 to 10 for Time:
    const int t = rand() % 10 + 1;
    std::cout << "There is "<< t << " Time" << std::endl;
    const int number_of_fs = rand() % 10 + 1;
    std::cout << "Working with " << number_of_fs << " Fs" << std::endl;

    std::map<int, std::vector<int> > f;

    std::cout << "Time per F: 0 Not available, 1 available" << std::endl;

    for (int f_slot = 1; f_slot <= number_of_fs; ++f_slot) {
        for(int i = 0; i < t; i++){
            //random numbers 0 or 1:
            f[f_slot].push_back(rand() % 2);
        }
        std::cout << "The Time for F" << f_slot << " is " << std::endl;
        std::copy(f[f_slot].begin(), f[f_slot].end(), 
            std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
}

それが実行されるのを見てください

もちろん、これらのコンテナーの内容の入力と印刷は、おそらく別々の関数に抽出する必要がありますが、コードを完全に書き直したくありませんでした。

于 2013-03-12T04:49:57.407 に答える