Advertisement
TermSpar

The Universe (Using classes, vectors, and iterations)

May 23rd, 2016
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <fstream>
  5.  
  6. using namespace std;
  7.  
  8. class Star{
  9. public:
  10.     Star(string sName, int sMass, double sTemp);
  11.    
  12.     string getName();
  13.    
  14.     int getMass();
  15.    
  16.     double getTemp();
  17.  
  18.     void setMass(int nMass);
  19.  
  20.     void setTemp(double nTemp);
  21.    
  22. private:  
  23.     string newName;
  24.     int newMass;
  25.     double newTemp;
  26. };
  27.  
  28. Star::Star(string sName, int sMass, double sTemp){
  29.     newName = sName;
  30.     newMass = sMass;
  31.     newTemp = sTemp;
  32. }
  33.  
  34. string Star::getName(){
  35.     return newName;
  36. }
  37.  
  38. int Star::getMass(){
  39.     return newMass;
  40. }
  41.  
  42. double Star::getTemp(){
  43.     return newTemp;
  44. }
  45.  
  46. void Star::setMass(int nMass){
  47.     newMass = nMass;
  48. }
  49.  
  50. void Star::setTemp(double nTemp){
  51.     newTemp = nTemp;
  52. }
  53.  
  54.  
  55. class Planet{
  56. public:
  57.     Planet(string pName, int pMass, char pWater, double pDist);
  58.    
  59.     string getName();
  60.    
  61.     int getMass();
  62.    
  63.     char getWater();
  64.    
  65.     double getDist();
  66.  
  67.     void setMass(int nMass);
  68.  
  69.     void setWater(char nWater);
  70.  
  71.     void setDist(double nDist);
  72.    
  73.    
  74. private:  
  75.     string newName;
  76.     int newMass;
  77.     char newWater;
  78.     double newDist;
  79. };
  80.  
  81. Planet::Planet(string pName, int pMass, char pWater, double pDist){
  82.     newName = pName;
  83.     newMass = pMass;
  84.     newWater = pWater;
  85.     newDist = pDist;
  86. }
  87.  
  88. string Planet::getName(){
  89.     return newName;
  90. }
  91.  
  92. int Planet::getMass(){
  93.     return newMass;
  94. }
  95.  
  96. char Planet::getWater(){
  97.     return newWater;
  98. }
  99.  
  100. double Planet::getDist(){
  101.     return newDist;
  102. }
  103.  
  104. void Planet::setMass(int nMass){
  105.     newMass = nMass;
  106. }
  107.  
  108. void Planet::setWater(char nWater){
  109.     newWater = nWater;
  110. }
  111.  
  112. void Planet::setDist(double nDist){
  113.     newDist = nDist;
  114. }
  115.  
  116.  
  117. class Universe{
  118. public:
  119.     Universe();
  120.    
  121.     void addStar(Star);
  122.    
  123.     void addPlanet(Planet);
  124.    
  125.     Star getStar(int indexPos);
  126.    
  127.     Planet getPlanet(int posIndex);
  128.    
  129.     void showUniverse();
  130.  
  131.     void writeToFile(string fileName);
  132.    
  133. private:    
  134.     vector<Star> sVec;
  135.     vector<Planet> pVec;
  136. };
  137.  
  138. Universe::Universe(){
  139.    
  140. }
  141.  
  142. void Universe::addStar(Star aStar){
  143.     sVec.push_back(aStar);
  144. }
  145.  
  146. void Universe::addPlanet(Planet aPlanet){
  147.     pVec.push_back(aPlanet);
  148. }
  149.  
  150. Star Universe::getStar(int indexPos){
  151.     vector<Star>::iterator iter = sVec.begin() + indexPos - 1;
  152.     Star returnStar = *iter;
  153.    
  154.     return returnStar;
  155. }
  156.  
  157. Planet Universe::getPlanet(int indexPos){
  158.     vector<Planet>::iterator iter = pVec.begin() + indexPos - 1;
  159.     Planet returnPlanet = *iter;
  160.    
  161.     return returnPlanet;
  162. }
  163.  
  164. void Universe::showUniverse(){
  165.     int starCount = 0;
  166.     cout << "\nStars: \n";
  167.     for(vector<Star>::iterator iter = sVec.begin(); iter != sVec.end(); ++iter){
  168.         starCount++;
  169.         cout << "Star #" << starCount << ": " << iter->getName() << ", Mass: " << iter->getMass() << ", Temperature: " << iter->getTemp() << "\n";
  170.     }
  171.    
  172.     int planetCount = 0;
  173.     cout << "\nPlanets: \n";
  174.     for(vector<Planet>::iterator iter = pVec.begin(); iter != pVec.end(); ++iter){
  175.         planetCount++;
  176.         cout << "Planet #" << planetCount << ": " << iter->getName() << ", Mass: " << iter->getMass() << ", Has Water?: " << iter->getWater() << ", Distance: " << iter->getDist() << "\n";
  177.     }
  178. }
  179.  
  180. void Universe::writeToFile(string fileName){
  181.     ofstream newFile(fileName);
  182.  
  183.     if(newFile.is_open()){
  184.         int starCount = 0;
  185.         for(vector<Star>::iterator iter = sVec.begin(); iter != sVec.end(); ++iter){
  186.             starCount++;
  187.             newFile << "Star #" << starCount << ": " << iter->getName() << ", Mass: " << iter->getMass() << ", Temperature: " << iter->getTemp() << "\n";
  188.         }
  189.  
  190.         int planetCount = 0;
  191.         for(vector<Planet>::iterator iter = pVec.begin(); iter != pVec.end(); ++iter){
  192.             planetCount++;
  193.             newFile << "Planet #" << planetCount << ": " << iter->getName() << ", Mass: " << iter->getMass() << ", Has Water?: " << iter->getWater() << ", Distance: " << iter->getDist() << "\n";
  194.         }
  195.  
  196.         newFile.close();
  197.  
  198.     }
  199. }
  200.  
  201.  
  202. void askToWrite(Universe myUni);
  203.  
  204. int main(){
  205.  
  206.     cout << "-----------------------------------------------\n";
  207.     cout << "Welcome to Universe Simulator: by Ben Bollinger\n";
  208.     cout << "-----------------------------------------------\n\n";
  209.  
  210.     Universe myUni;
  211.     int starNum;
  212.     cout << "Enter Number of Stars: ";
  213.     cin >> starNum;
  214.    
  215.     int planetNum;
  216.     cout << "\nEnter Number of Planets: ";
  217.     cin >> planetNum;
  218.     cout << "\n";
  219.    
  220.     for(int i = 0; i < starNum; i++){
  221.         string stName;
  222.         cout << "Enter Star Name: ";
  223.         cin >> stName;
  224.         int stMass;
  225.         cout << "Enter Star Mass: ";
  226.         cin >> stMass;
  227.         double stTemp;
  228.         cout << "Enter Star Temperature: ";
  229.         cin >> stTemp;
  230.        
  231.         Star newStar(stName, stMass, stTemp);
  232.         myUni.addStar(newStar);
  233.        
  234.         cout << "\n";
  235.     }
  236.        
  237.     for(int i = 0; i < planetNum; i++){
  238.         string stName;
  239.         cout << "Enter Planet Name: ";
  240.         cin >> stName;
  241.         int stMass;
  242.         cout << "Enter Planet Mass: ";
  243.         cin >> stMass;
  244.         char plWater;
  245.         cout << "Enter y/n If Planet has Water: ";
  246.         cin >> plWater;
  247.         double plDist;
  248.         cout << "Enter Planet's Distance: ";
  249.         cin >> plDist;
  250.        
  251.         Planet newPlanet(stName, stMass, plWater, plDist);
  252.         myUni.addPlanet(newPlanet);
  253.        
  254.         cout << "\n";
  255.     }
  256.    
  257.     myUni.showUniverse();
  258.  
  259.     string yesorno;
  260.     cout << "\nChange a Planet or Star? (y/n): ";
  261.     cin >> yesorno;
  262.  
  263.     if(yesorno == "y"){
  264.  
  265.         string plOrSt;
  266.         cout << "Planet or Star? (p/s): ";
  267.         cin >> plOrSt;
  268.  
  269.         if(plOrSt == "p"){
  270.  
  271.             int planet;
  272.             cout << "\nWhich Planet? (Enter Planet Number): ";
  273.             cin >> planet;
  274.  
  275.             Planet modPlanet = myUni.getPlanet(planet);
  276.  
  277.             string change;
  278.             cout << "Change Mass, Water, or Distance? (m, w, d): ";
  279.             cin >> change;
  280.  
  281.             if(change == "m"){
  282.                
  283.                 int nMass;
  284.                 cout << "Change Mass From " << modPlanet.getMass() << " to what?: ";
  285.                 cin >> nMass;
  286.  
  287.                 modPlanet.setMass(nMass);
  288.  
  289.                 cout << "\n" << modPlanet.getName() << "'s new mass is " << modPlanet.getMass();
  290.  
  291.             }else if(change == "w"){
  292.                
  293.                 char nWater;
  294.                 cout << "Change Water From " << modPlanet.getWater() << " to what?: ";
  295.                 cin >> nWater;
  296.  
  297.                 modPlanet.setWater(nWater);
  298.  
  299.                 cout << "\n" << modPlanet.getName() << "'s new water var is " << modPlanet.getWater();
  300.  
  301.             }else if(change == "d"){
  302.                
  303.                 double nDist;
  304.                 cout << "Change Distance From " << modPlanet.getDist() << " to what?: ";
  305.                 cin >> nDist;
  306.  
  307.                 modPlanet.setDist(nDist);
  308.  
  309.                 cout << "\n" << modPlanet.getName() << "'s new distance is " << modPlanet.getDist();
  310.  
  311.             }else{
  312.                 cout << "\nEnded\n";
  313.             }
  314.            
  315.         }else if(plOrSt == "s"){
  316.  
  317.             int star;
  318.             cout << "\nWhich Star? (Enter Star Number): ";
  319.             cin >> star;
  320.  
  321.             Star modStar = myUni.getStar(star);
  322.  
  323.             string change;
  324.             cout << "Change Mass, or Temperature? (m/t): ";
  325.             cin >> change;
  326.  
  327.             if(change == "m"){
  328.                
  329.                 int nMass;
  330.                 cout << "Change Mass From " << modStar.getMass() << " to what?: ";
  331.                 cin >> nMass;
  332.  
  333.                 modStar.setMass(nMass);
  334.  
  335.                 cout << "\n" << modStar.getName() << "'s new mass is " << modStar.getMass();
  336.  
  337.             }else if(change == "t"){
  338.                
  339.                 char nTemp;
  340.                 cout << "Change Water From " << modStar.getTemp() << " to what?: ";
  341.                 cin >> nTemp;
  342.  
  343.                 modStar.setTemp(nTemp);
  344.  
  345.                 cout << "\n" << modStar.getName() << "'s new temperature is " << modStar.getTemp();
  346.  
  347.             }else{
  348.                 askToWrite(myUni);
  349.                 cout << "\nEnded\n";
  350.             }
  351.            
  352.         }else{
  353.             askToWrite(myUni);
  354.             cout << "\nEnded\n";
  355.         }
  356.  
  357.     }else{
  358.         askToWrite(myUni);
  359.         cout << "\nEnded\n";
  360.     }
  361.  
  362.     cout << "\n\n";
  363.     system("pause");
  364. }
  365.  
  366. void askToWrite(Universe myUni){
  367.     string writeInfo;
  368.     cout << "\n\nWrite Information To File? (y/n): ";
  369.     cin >> writeInfo;
  370.  
  371.     if(writeInfo == "y"){
  372.  
  373.         string fileName;
  374.         cout << "Name of file?: ";
  375.         cin >> fileName;
  376.  
  377.     myUni.writeToFile(fileName);
  378.  
  379.     }else{
  380.         cout << "\nEnded\n";
  381.     }
  382. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement