Advertisement
Guest User

Untitled

a guest
May 27th, 2022
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.94 KB | None | 0 0
  1. //main.cpp
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include "Planet.hpp"
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char **argv) {
  9.     Planet p;
  10.     string fajlnev;
  11.    
  12.     do {
  13.         cout << "Add meg a fajl nevet! "; cin >> fajlnev;
  14.         if (p.Bolygo(fajlnev)) {
  15.             break;
  16.         } else {
  17.             cout << "A fajlt nem lehet betolteni! ";
  18.         }
  19.     } while (true);
  20.    
  21.     p.szimulacio();
  22.     p.elok();
  23.     return 0;
  24. }
  25.  
  26.  
  27.  
  28. //Deltafa.hpp
  29. #pragma once
  30. #include "Plant.hpp"
  31. #include "Radiation.hpp"
  32.  
  33. class Deltafa : public Plant {
  34. public:
  35.     Deltafa(std::string nev, int tapanyag):Plant(nev,tapanyag) {}
  36.    
  37.     void futtatas(Radiation& sugarzas) {
  38.         if (!el) {
  39.             return;
  40.         }
  41.        
  42.         switch(sugarzas.getallapot()) {
  43.             case Radiation::alfa:
  44.                 usetapanyag(3);
  45.                 break;
  46.             case Radiation::delta:
  47.                 addtapanyag(4);
  48.                 break;
  49.             case Radiation::nincs:
  50.                 usetapanyag(1);
  51.                 break;
  52.         }
  53.        
  54.         if (tapanyag < 1) {
  55.             el = false;
  56.         } else if (tapanyag < 5) {
  57.             sugarzas.kerdelta(4);
  58.         } else if (tapanyag <= 10) {
  59.             sugarzas.kerdelta(1);
  60.         }
  61.     }
  62. };
  63.  
  64.  
  65. //Parabokor.hpp
  66. #pragma once
  67. #include "string"
  68. #include "Plant.hpp"
  69. #include "Radiation.hpp"
  70.  
  71. class Parabokor : public Plant {
  72. public:
  73.     Parabokor(std::string nev, int tapanyag):Plant(nev,tapanyag) {}
  74.    
  75.     void futtatas(Radiation& sugarzas) {
  76.         if (!el) {
  77.             return;
  78.         }
  79.        
  80.         switch(sugarzas.getallapot()) {
  81.             case Radiation::alfa:
  82.                 addtapanyag(1);
  83.                 break;
  84.             case Radiation::delta:
  85.                 addtapanyag(1);
  86.                 break;
  87.             case Radiation::nincs:
  88.                 usetapanyag(1);
  89.                 break;
  90.         }
  91.         if (tapanyag < 1) {
  92.             el = false;
  93.         }
  94.     }
  95. };
  96.  
  97.  
  98. //Puffancs.hpp
  99. #pragma once
  100. #include "Plant.hpp"
  101. #include "Radiation.hpp"
  102.  
  103. class Puffancs : public Plant {
  104. public:
  105.     Puffancs(std::string nev, int tapanyag):Plant(nev,tapanyag) {}
  106.    
  107.     void futtatas(Radiation& sugarzas) {
  108.         if (!el) {
  109.             return;
  110.         }
  111.        
  112.         switch(sugarzas.getallapot()) {
  113.             case Radiation::alfa:
  114.                 addtapanyag(2);
  115.                 break;
  116.             case Radiation::delta:
  117.                 usetapanyag(2);
  118.                 break;
  119.             case Radiation::nincs:
  120.                 addtapanyag(1);
  121.                 break;
  122.         }
  123.        
  124.         if (tapanyag > 10 || tapanyag < 1) {
  125.             el = false;
  126.         } else {
  127.             sugarzas.keralfa(10*tapanyag);
  128.         }
  129.     }
  130. };
  131.  
  132.  
  133. //Planet.hpp
  134. #pragma once
  135. #include "fstream"
  136. #include "Radiation.hpp"
  137. #include "Plant.hpp"
  138. #include "Deltafa.hpp"
  139. #include "Parabokor.hpp"
  140. #include "Puffancs.hpp"
  141.  
  142. class Planet {
  143. private:
  144.     int napok;
  145.     Radiation sugarzas;
  146.     int dbnoveny;
  147.     Plant** novenyek;
  148. public:
  149.     Planet() {}
  150.     ~Planet() {
  151.         delete[] novenyek;
  152.     }
  153.    
  154.     void szimulacio() {
  155.         for (int i = 0; i < napok; i++) {
  156.             for (int i = 0; i < dbnoveny; i++) {
  157.                 novenyek[i]->futtatas(sugarzas);
  158.             }
  159.             sugarzas.futtatas();
  160.         }
  161.     }
  162.    
  163.     bool Bolygo(std::string fnev) {
  164.         std::ifstream f;
  165.         f.open(fnev.c_str());
  166.  
  167.         if (f.fail()) {
  168.             return false;
  169.         }
  170.        
  171.         f >> dbnoveny;
  172.         novenyek = new Plant*[dbnoveny];
  173.        
  174.         std::string nev;
  175.         char tipus;
  176.         int tapanyag;
  177.         for (int i = 0; i < dbnoveny; i++) {
  178.             f >> nev;
  179.             f >> tipus;
  180.             f >> tapanyag;
  181.  
  182.             switch (tipus) {
  183.                 case 'a':
  184.                     novenyek[i] = new Puffancs(nev,tipus);
  185.                     break;
  186.                 case 'd':
  187.                     novenyek[i] = new Deltafa(nev,tipus);
  188.                     break;
  189.                 case 'p':
  190.                     novenyek[i] = new Parabokor(nev,tipus);
  191.                     break;
  192.             }
  193.             std::cout << "Uj noveny jelent meg a bolygon: " << nev << std::endl;
  194.         }
  195.         std::cout << "A bolygon " << dbnoveny << " noveny el a szimulacio elejen!" << std::endl;
  196.         f >> napok;
  197.         std::cout << napok << " napot szimulalunk" << std::endl;
  198.         f.close();
  199.         return true;
  200.     }
  201.    
  202.     void elok() {
  203.         bool elso = true;
  204.         for (int i = 0; i < dbnoveny; i++) {
  205.             if (novenyek[i]->isel()) {
  206.                 if (elso) {
  207.                     std::cout << "Eletben maradt novenyek: " << novenyek[i]->getnev();
  208.                     elso = false;
  209.                 } else {
  210.                     std::cout << ", " << novenyek[i]->getnev();
  211.                 }
  212.             }
  213.         }
  214.         if (elso) {
  215.             std::cout << "Nem maradt eletben egy noveny sem!";
  216.         }
  217.         std::cout << std::endl;    
  218.     }
  219. };
  220.  
  221.  
  222. //Plant.hpp
  223.  
  224. #pragma once
  225. #include <string>
  226. #include "Radiation.hpp"
  227.  
  228. class Plant {
  229. protected:
  230.     std::string nev;
  231.     int tapanyag;
  232.     bool el;
  233.     int gettapanyag() { return tapanyag; }
  234.     void addtapanyag(int tapanyag) { this->tapanyag = this->tapanyag + tapanyag; };
  235.     void usetapanyag(int tapanyag) { this->tapanyag = this->tapanyag - tapanyag; };
  236. public:
  237.     Plant(std::string nev, int tapanyag):nev(nev),tapanyag(tapanyag),el(true) {}
  238.    
  239.     std::string getnev() { return nev; }
  240.     bool isel() { return el; }
  241.    
  242.     virtual void futtatas(Radiation& sugarzas) = 0;
  243. };
  244.  
  245. //Radiation.hpp
  246. #pragma once
  247.  
  248. class Radiation {
  249. public:
  250.     enum State { alfa, delta, nincs };
  251.     Radiation():allapot(nincs),ker(0) {}
  252.     State getallapot() { return allapot; }
  253.     void keralfa(const int& r) { ker -= r; }
  254.     void kerdelta(const int& r) { ker += r; }
  255.    
  256.     void futtatas() {  
  257.         if (ker < -2) {
  258.             allapot = alfa;
  259.         } else if (ker > 2) {
  260.             allapot = delta;
  261.         } else {
  262.             allapot = nincs;
  263.         }
  264.         ker = 0;
  265.     }
  266. private:
  267.     State allapot; 
  268.     int ker;
  269.  
  270. };
  271.  
  272.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement