SHARE
TWEET

Untitled

a guest Feb 27th, 2020 95 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5.  
  6. class Medium {
  7. private:
  8.     int id;
  9.     char typ;
  10.     int anzahl;
  11.     int ausgeliehen;
  12.  
  13. protected:
  14.     string titel;
  15.  
  16. public:
  17.     Medium(int i,string ti, int an,char ty) : id(i),anzahl(an), ausgeliehen(0), typ(ty), titel(ti) {}
  18.     virtual ~Medium() {}
  19.  
  20.     string getSignatur(){
  21.         return to_string(id)+ "-"+typ;
  22. }
  23.  
  24.     int getAnzahl() {
  25.         return anzahl;
  26.     }
  27.  
  28.     int getAusgeliehen() {
  29.         return ausgeliehen;
  30.     }
  31. virtual void printInfo(){
  32.     cout << getSignatur();
  33.     cout << titel;
  34.     cout << getAnzahl();
  35.     cout << getAusgeliehen();
  36.  
  37. }
  38.  
  39.     void ausleihen() {
  40.         cout << getSignatur();
  41.         if(ausgeliehen == anzahl){
  42.             cout << " kann nicht ausgeliehen werden ";
  43.  
  44.         else {
  45.             cout << " ausgeliehen "
  46.             ausgeliehen++;
  47.         }
  48.     }
  49.  
  50. };
  51.  
  52. class Buch : public Medium {
  53. private:
  54.     int seiten;
  55. public:
  56.     Buch(int i, string ti, int a, int s) : Medium(i,ti,a,'B'), seiten(s){}
  57.   ~Buch(){}
  58.    
  59.     virtual void printInfo(){
  60.         cout << getSignatur();
  61.         cout << titel;
  62.         cout << seiten;
  63.         cout << getAnzahl();
  64.         cout << getAusgeliehen();
  65.     }
  66.  
  67. };
  68.  
  69. class Zeitschrift : public Medium {
  70. private:
  71.     int seiten;
  72. public:
  73.     Zeitschrift(int i, string ti, int a, int s) : Medium(i,ti,a,'Z'), seiten(s){}
  74.     ~Zeitschrift(){}
  75.     virtual void printInfo(){
  76.         cout << getSignatur();
  77.         cout << titel;
  78.         cout << seiten;
  79.         cout << getAnzahl();
  80.         cout << getAusgeliehen();
  81.     }
  82.  
  83. };
  84.  
  85. class DVD : public Medium {
  86. private:
  87.     int dauer;
  88. public:
  89.     DVD(int i, string ti, int a, int da) : Medium(i,ti,a,'D'), dauer(d){}
  90.     ~DVD(){}
  91.     virtual void printInfo(){
  92.         cout << getSignatur();
  93.         cout << titel;
  94.         cout << dauer;
  95.         cout << getAnzahl();
  96.         cout << getAusgeliehen();
  97.  
  98.     }
  99. };
  100.  
  101. int main() {
  102.  
  103.     const int anzahlBuecher = 20;
  104.     const int anzahlDVDs = 12;
  105.     const int anzahlZeitschriften = 10;
  106.     const int anzahlGesamt = anzahlBuecher + anzahlDVDs + anzahlZeitschriften;
  107.     int id = 0;
  108.     Medium *bibliothek[anzahlGesamt];
  109.     string buchTitel[anzahlBuecher]={"Pipi Langsocke", "Didi Lügenprinz",
  110.                             "Das Tennis-Lexikon", "Mathe fuer Doofis",
  111.                             "Europa Atlas", "Die Schokoladen-Mafia",
  112.                             "Drei Hasen im Dom", "Programmieren ist toll",
  113.                             "Ein Student auf Reisen", "English for Experts",
  114.                             "Oma Renates Kochbuch", "Baby Sprache verstehen",
  115.                             "Die besten Paulaner Spruecke", "Witzesammlung",
  116.                             "Unterschied zwischen Schule und Uni",
  117.                             "Wie werde ich erwachsen in 10 Tagen",
  118.                             "Selbststaendig lernen", "Ueber den Wolken",
  119.                             "Traumjobs 2.0", "Car Tuning 2005"};
  120.     int buchAnzahl[anzahlBuecher]={5, 10, 2, 100, 7, 8, 23, 98, 21, 64, 40, 51,
  121.                             27, 32, 32, 39, 56, 24, 97, 6};
  122.     int buchSeiten[anzahlBuecher]={523, 142, 256, 312, 71, 186, 365, 482, 69, 148, 401, 521,
  123.                             207, 432, 132, 739, 56, 94, 497, 641};
  124.     string zeitschriftTitel[anzahlZeitschriften]={
  125.                             "Bernadette", "Kochanfaenger",
  126.                             "Schach Aktuell", "Sport von Gestern",
  127.                             "Teenie Flash", "Maennersachen",
  128.                             "Computerfilm", "Kino-Parade",
  129.                             "Bunter Garten", "Nah-Reisen"};
  130.     int zeitschriftAnzahl[anzahlZeitschriften]={
  131.                             1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
  132.     int zeitschriftSeiten[anzahlZeitschriften]={
  133.                             10, 22, 16, 8, 20, 40, 12, 16, 12, 24};
  134.  
  135.     string dvdTitel[anzahlDVDs]={"Justus auf Weltreise", "Das Lachen der Schafe",
  136.                             "Pilates für Studenten", "Herr der Halsketten",
  137.                             "Eine Ostergeschichte", "Michel und Tine",
  138.                             "Fast and Slow", "American Clown Story",
  139.                             "Lovely Dancing", "Der Musikanten-Hof 1993",
  140.                             "Die besten Musicals", "Lagerfeuer"};
  141.     int dvdAnzahl[anzahlDVDs]={1, 1, 5, 6, 3, 2, 9, 2, 12, 1, 1, 4};
  142.     int dvdDauer[anzahlDVDs]={120, 109, 105, 120, 203, 126, 98, 162, 143, 141, 108, 94};
  143.  
  144.     // Bibliothek erstellen
  145.     for (int i = 0; i < anzahlBuecher; ++i) {
  146.         bibliothek[i] = new Buch(id++, buchTitel[i], buchAnzahl[i], buchSeiten[i]);
  147.         cout << bibliothek[i]->getSignatur() << " zur Bibliothek hinzugefuegt." << endl;
  148.     }
  149.     for (int i = 0; i < anzahlZeitschriften; ++i) {
  150.         bibliothek[anzahlBuecher + i] = new Zeitschrift(id++, zeitschriftTitel[i], zeitschriftAnzahl[i], zeitschriftSeiten[i]);
  151.         cout << bibliothek[anzahlBuecher + i]->getSignatur() << " zur Bibliothek hinzugefuegt." << endl;
  152.     }
  153.     for (int i = 0; i < anzahlDVDs; ++i) {
  154.         bibliothek[anzahlBuecher + anzahlZeitschriften + i] = new DVD(id++, dvdTitel[i], dvdAnzahl[i], dvdDauer[i]);
  155.         cout << bibliothek[anzahlBuecher + anzahlZeitschriften + i]->getSignatur() << " zur Bibliothek hinzugefuegt." << endl;
  156.     }
  157.  
  158.     // ausleihen
  159.     bibliothek[2]->ausleihen();
  160.     bibliothek[2]->ausleihen();
  161.     bibliothek[2]->ausleihen();
  162.     bibliothek[2]->ausleihen();
  163.     bibliothek[12]->ausleihen();
  164.     bibliothek[17]->ausleihen();
  165.     bibliothek[23]->ausleihen();
  166.     bibliothek[35]->ausleihen();
  167.  
  168.     // Informationen ausgeben
  169.     bibliothek[2]->printInfo();
  170.     bibliothek[22]->printInfo();
  171.     bibliothek[35]->printInfo();
  172.  
  173.     // Hier Lösung für Aufgabe b) einfügen
  174.  
  175.     // nach new immer aufraeumen!
  176.     for (int i = 0; i < anzahlGesamt; ++i)
  177.         delete bibliothek[i];
  178.  
  179.     return 0;
  180. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top