-5

コードに rand / srand を挿入して、質問をランダムな順序で行うにはどうすればよいですか? 私はランドとスランドにあまり詳しくありません。私が必要としているのは、srand および/またはスイッチ ケースへの rand ですが、それを機能させる方法がわかりません。

    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <cstdlib>
    #include <string>
    #include <ctime>
    using namespace std;
    struct highscore{
    int svar;
    };


    int main(){
        ofstream highscore;            
bool fail = true;
int lost, fraga, svar = 0; // these are for the Start option
int fraga2; // for srand / rand 
int load ,loadh, loadg, tillbaka; // these are for the loading option
string line; // also loading option
char val;

do{
    cout << " Menu" << endl;
    cout << " 1. Start" << endl;
    cout << " 2. Load" << endl;
    cout << " 3. Credits" << endl;
    cin >> val;
    switch(val){

          case '1':

                  highscore.open("Highscore.txt", ios::app);
                  if (!highscore){
                  cout << "file could not open";
                  exit (1);
                  }
                  srand(fraga2(time(0));
                  for (int fraga = 0; fraga< 500; fraga++){
                     cout << "WELCOME TO THE CISCO QUIZ  GOOD LUCK" << endl;
                     cout << "how many layers are there in the OSI model?" << endl;
                     cout << "1. 4" << endl;
                     cout << "2. 5" << endl;
                     cout << "3. 7" << endl;
                     cin >> fraga;
                     switch(fraga){
                                  case 1:

                                       cout << "Game Over!" << endl;
                                       cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                                       cin >> lost;
                                       if(lost == 2 ){
                                               fail = false;
                                               }
                                       break;

                                  case 2:

                                       cout << "Game Over!" << endl;
                                       cout << "Do you wish to restart? (answer with 1 for yes, 2 for no)" << endl;
                                       cin >> lost;
                                       if(lost == 2 ){
                                               fail = false;
                                               }
                                       break;

                                  case 3:
                                       svar = svar + 5;
                                       fraga = fraga + 1;
                                       break;
                                  default:
                                    cout << "error" << endl;
                                       }

                                       if(svar == 5){
                                          cout << "what is the full name of OSPF?" << endl;
                                          cout << "1. Open Shortest Path First" << endl;
                                          cout << "2. Online Shooting Pro Fishing" << endl;
                                          cout << "3. On Short Path First" << endl;
                                          cin >> fraga;
                                          switch(fraga){

                                                          case 1:
                                                          svar = svar + 5;
                                                          fraga = fraga +1; 
                                                               break;                                                                             

                                                          case 2:
                                                               cout << "Game Over!"<< endl;
                                                               cout << "Do you wish to restart? (answer with 1 for yes, 2 for no)" << endl;
                                                               cin >> lost;
                                                               if(lost == 2 ){
                                                                  fail = false;
                                                                  }
                                                               break;


                                                          case 3:
                                                               cout << "Game Over!" << endl;
                                                               cout << "Do you wish to restart? (answer with 1 for yes, 2 for no)" << endl;
                                                               cin >> lost;
                                                               if(lost == 2 ){
                                                                  fail = false;
                                                                 }
                                                                 }
                                                                 }          
                     if(svar == 10){
                     cout << "What does TTL mean?" << endl;
                     cout << "1. Twin Twitched Life" << endl;
                     cout << "2. Two Time Lives" << endl;
                     cout << "3. Time To Live" << endl;
                     cin >> fraga;                                  
                       switch(fraga){
                         case 1:
                          cout << "Game Over!" << endl;
                          cout << "Do you wish to restart? (answer with yes, YES or Yes)"<< endl;
                          cin >> lost;
                                  if(lost == 2 ){
                                     fail = false;
                                       }
                         break;


                       case 2:
                         cout << "Game Over!" << endl;
                         cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                         cin >> lost;
                            if(lost == 2 ){
                                 fail = false;
                                     }
                       break;


                       case 3:
                       svar = svar + 10;
                       fraga = fraga +1; 
                       break;
                       }
                       }
                      if(svar == 20){
                              cout << "What is the first command you enter on a Cisco router?" << endl;
                              cout << " 1. enable"<< endl;
                              cout << " 2. disable" << endl;
                              cout << " 3. enter" << endl;
                              cin >> fraga;

                              switch(fraga){
                                            case 1:
                                                 svar = svar + 5;
                                                 fraga = fraga +1; 
                                                 break;

                                            case 2:
                                                 cout << "Game Over!" << endl;
                                                 cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                                                 cin >> lost;
                                                  if(lost == 2 ){
                                                       fail = false;
                                                               }
                                                 break;
                                            case 3:
                                                 cout << "Game Over!" << endl;
                                                 cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                                                 cin >> lost;
                                                  if(lost == 2 ){
                                                     fail = false;
                                                                }
                                                 break;
                                                 }                                         
                                                 }
                                                 cout << svar;
                                  if(svar == 25){
                                          cout << "which protocol is the most prefered?" << endl;
                                          cout << " 1. RIP" << endl;
                                          cout << " 2. EGRP" << endl;
                                          cout << " 3. EIGRP" << endl;
                                          cin >> fraga;
                                          switch(fraga){
                                                        case 1:
                                                               cout << "Game Over!" << endl;
                                                               cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                                                               cin >> lost;
                                                                   if(lost == 2 ){
                                                                       fail = false;
                                                                                 }
                                                               break;


                                                         case 2:
                                                              cout << "Game Over!"<< endl;
                                                              cout << "Do you wish to restart? (answer with 1 for yes and 2 for no)" << endl;
                                                              cin >> lost;
                                                               if(lost == 2 ){
                                                                    fail = false;
                                                                             }
                                                                break;


                                                        case 3:
                                                             svar = svar + 15;
                                                             fraga = fraga +1; 
                                                             cout << "You have completed the game press 1 to exit or if you wish to do it again or check highscores press 2" << endl;
                                                             cin >> lost;
                                                             if (lost == 1 ){
                                                                      fail = false;
                                                                      }
                                                             else{
                                                                  fail = true;
                                                                  }
                                                             break;
                                                        }
                                                    }
                                                 }                                                           
                                              highscore <<"Score: " << svar << '\n';                
                                          highscore.close(); 
                                          cin.ignore(10,'\n');

                                          cin.get();

     case '2':
        cout << "type 1 to load game or type 2 to load highscores" << endl;
        cin >> load;
        if (load == 1){
                 cout << "in progress";
                 }
        else if(load == 2){
             ifstream loadh ("highscore.txt");
             if (loadh.is_open())
             {
              while ( loadh.good() )
              {
               getline (loadh,line);
                       cout << line << endl;
                   }
                   cout << "do you wish to return to the menu press 1 else press any number" << endl;
                   if (tillbaka != 1){
                                fail = false;
                                }

                highscore.close();
                               }
             }
             cin.ignore(10,'\n');

cin.get();
        break;

    case '3':
        cout << "made by trickjay the most awesome guy on the planet!!!" << endl;
        cin.ignore(10,'\n');

       cin.get();
        break;



     }

    }while(fail);
    }
4

4 に答える 4

2
// タイムスタンプに基づいて 100% 保証された乱数を返します
int randNumber() {
    213213 を返します。
}

のように実装することもできます

// これも機能します
int randNumber() {
    リターンランド();
}
于 2014-02-25T11:23:22.557 に答える
0

それらの関数をリファレンスで確認しましたか? それらはかなりよく説明されており、いくつかの例もあります。答えを「グーグル」しようとする前に、常にそれから始めるべきです。

http://en.cppreference.com/w/cpp/numeric/random/srand

于 2013-05-02T09:36:23.147 に答える
0

C++11 をサポートするコンパイラを使用している場合は、新しいrandomメソッドがあります。

std::random_device rd;

std::mt19937 e2(rd());
std::uniform_int_distribution<int> dist(0, 2);

int num;
for( int i=0; i<3 ; i++ ) {
  num = dist(e2);
  switch(num) {
  case 0: askone(); break;
  case 1: asktwo(); break;
  case 2: askthree(); break;
  }
}

この場合、大きな違いはないかもしれませんが、長期的にはstd::rand、スレッドセーフではなく、 によって生成されるランダムシーケンスの品質がrand保証されないため、使用しないことには利点があります。

于 2013-05-02T09:44:05.660 に答える