Почему моя программа не дает желаемого результата?
Я новичок в C++ и пишу программу, которая будет имитировать колонию кроликов. Программа автоматически добавит их и даст им имена, пол, возраст и т. д. Я медленно добавляю функции к кроликам и начинаю сначала с имен. Когда я компилирую и запускаю программу, я получаю этот вывод, какие-нибудь советы о том, как я могу решить эту проблему?
Выход:
Name: Sex: Color: Age: 0 Name: Sex: Color: Age: 0 Name: Sex: Color: Age: 0 Name: Sex: Color: Age: 0 Name: Sex: Color: Age: 0
Что я уже пробовал:
#include <iostream> #include <string> #include <ctime> #include <vector> #include <cstdlib> using namespace std; //void setSex( void ); char getSex(); //void setColor( void ); string getColor(); //void setAge( void ); int getAge(); //void setName( void ); string getName(); void printBunny(); int randomGeneration(int x); //static std::string POSSIBLE_NAMES = 18; //static std::string POSSIBLE_COLORS = 4; static std::string possibleNames[] ={ "Jen", "Alex", "Janice", "Tom", "Bob", "Cassie", "Louis", "Frank", "Bugs", "Daffy", "Mickey", "Minnie", "Pluto", "Venus", "Topanga", "Corey", "Francis", "London", }; static std::string possibleColors[] ={ "White", "Brown", "Black", "Spotted" }; struct Bunny { char sex; string color; int age; string name; bool radioactive_mutant_vampire_bunny; BunnyData() { //srand( time( 0 ) ); setSex(); setColor(); setAge(); setName(); } int randomGeneration(int x){ return rand() % x; } void setSex() { int randomNumber = 1 + rand() % 2; ( randomNumber == 1 ) ? sex = 'm' : sex = 'f'; } char getSex() { return sex; } void setColor() { //color = possibleColors[ 0 + rand() % POSSIBLE_COLORS ]; } string getColor() { return color; } void setAge() { age = 0; } int getAge() { return age; } void setName() { int i = randomGeneration(18); name = possibleNames[i]; //name = possibleNames[ 0 + rand() % POSSIBLE_NAMES ]; } string getName() { return name; } void printBunny() { cout << "Name: " << getName() << endl; cout << "Sex: " << getSex() << endl; cout << "Color: " << getColor() << endl; cout << "Age: " << getAge() << endl; } }; int main() { vector< Bunny > colony; cout << "Welcome to Bunny Graduation!" << endl << endl; for( int i = 0; i < 5; ++i ) { colony.push_back( Bunny() ); } for( int i = 0; i < 5; ++i ) { colony[ i ].printBunny(); cout << endl; } return 0; }
Richard MacCutchan
Вы объявляете некоторые методы, которые не имеют никакого отношения к вашей структуре и должны быть удалены из вашего кода. Кроме того, при создании каждого объекта Bunny вы не инициализируете ни одно из его свойств.