По какой-то причине (неизвестно мне как новичок C++) моя программа испытывает проблемы при выводе данных в текстовый файл. Короче:
Я работаю над программой Game of Life, где один из параметров меню должен показывать статистику игры. Программа должна запускаться, отправлять данные в текстовый файл, а затем, когда я вызываю его обратно в меню, я получаю статистические данные на экране.
Статистика представляет собой не что иное, как текстовый файл, показывающий "номер поколения" и "количество живых клеток". Он будет сохранен в текстовом файле, например: (без точек)
Идея, как и выше, начинается с поколения 1, но моя программа начинается в 909 году. Большой вопрос: почему?
Остальная часть программы, включая другие параметры меню, отлично работает без предупреждений. Я использую 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
, поэтому строка будет:
for (int generation = 0; generation < MAX; generation++){
int generation();
,g++ -W -Wall -Wextra -Werror
) и исправили ли вы все предупреждения перед тем, как задавать свой вопрос в StackOverflow? Если нет, пожалуйста, сделайте это, потому что, возможно, компилятор уже скажет вам, что делать, поэтому вам не нужно спрашивать. Если вы не знаете, что означает конкретное предупреждение и как его исправить, задайте это как вопрос.