出于某种原因(我不知道作为C ++初学者)我的程序在将数据输出到文本文件时遇到了麻烦。长话短说:
我正在制作一个生命游戏计划,其中一个菜单选项必须显示游戏统计数据。程序应该运行,将数据发送到文本文件,然后,当我在菜单上回调它时,我会在屏幕上显示statistcs。
统计数据只不过是显示“世代号”和“活细胞数”的文本文件。它将保存在文本文件中,例如:(没有点)
如上所述,这个想法是从第1代开始,但我的程序从第90代开始。大问题:为什么?
程序的其余部分,包括其他菜单选项,工作得很好,没有任何警告。 我使用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
(...)
答案 0 :(得分:0)
添加= 0
,因此该行变为:
for (int generation = 0; generation < MAX; generation++){