运行程序,将数据保存在文本文件中并将其读回

时间:2014-11-15 17:53:56

标签: c++ ubuntu text-files

出于某种原因(我不知道作为C ++初学者)我的程序在将数据输出到文本文件时遇到了麻烦。长话短说:

我正在制作一个生命游戏计划,其中一个菜单选项必须显示游戏统计数据。程序应该运行,将数据发送到文本文件,然后,当我在菜单上回调它时,我会在屏幕上显示statistcs。

统计数据只不过是显示“世代号”和“活细胞数”的文本文件。它将保存在文本文件中,例如:(没有点)

  1. 30
  2. 41
  3. 49
  4. 52
  5. 如上所述,这个想法是从第1代开始,但我的程序从第90代开始。大问题:为什么?

    1. 41
    2. 49
    3. 52
    4. 程序的其余部分,包括其他菜单选项,工作得很好,没有任何警告。 我使用CodeBlocks + Ubuntu。

      非常感谢任何帮助!

      (...)
      
      void world::statistics(){
      
      int statsmenuchoice();
      int alivecells;
      int generation();
      int i,j;
      void displayItems(int x);
      void getItems();
      
      // write to file
      ofstream worldFile;
         worldFile.open("stats.txt");
      
          for (int generation; generation < MAX; generation++){
              one();
              alivecells = 0;
          for (i=0; i<MAX; i++) {
              for (j=0; j<MAX; j++) {
      
                  if (population[i][j]) alivecells++;}}{
            worldFile << generation << ' ' << alivecells << ' ' << endl;
                  }
             } 
      
         worldFile.close();
      
      // read from file and print on screen
          int statsmenuoption;
          printf("\033[0m\033[2J\033[H"); // empty screen in terminal
          statsmenuoption = statsmenuchoice();
      
          while(statsmenuoption != 2){ // return to menu
              switch(statsmenuoption){
              case 1:
                  displayItems(1); break;
              } 
                  statsmenuoption = statsmenuchoice();
          } 
          }
      
      
      // statistics (sub)menu function
      int statsmenuchoice(){
          int choice;
      
          cout << endl << " Choose 1 for Statistics or 2 for mainmenu: " << endl;
          cout << endl << " 1 :: show statistics" << endl;
          cout << " 2 :: back to (main)menu" << endl << endl;
      
          cin >> choice;
          return choice;
      }
      
      // display items function
      void displayItems(int x){
      
          ifstream worldFile("stats.txt");
          int generation;
          int alivecells;
          printf("\033[0m\033[2J\033[H");
          if(x==1){
              while(alivecells >> generation >> alivecells){
                      if(alivecells>0){
                  cout << generation << ' ' << alivecells << ' ' << endl;
                      } 
              } 
          } 
      
      } // world::statistics
      
      (...)
      

1 个答案:

答案 0 :(得分:0)

添加= 0,因此该行变为:

for (int generation = 0; generation < MAX; generation++){