Advertisement
Guest User

main.cpp

a guest
Apr 7th, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.87 KB | None | 0 0
  1. /*
  2. Zadanie służy przetestowaniu konstruktorów kopiujących i przenoszących
  3. oraz operatora = w dziedziczeniu.
  4.  
  5. Należy zaimplementować następujące klasy:
  6.  
  7. * RNA (rna.h) - implementuje dowolną sekwencję nukleotydów - łańcuch RNA.
  8.   Nukleotydy są nowym typem enum. Deklaracja tej klasy oraz typu 'Nukleotyp' jest dana,
  9.   należy jedynie dopisać plik "rna.cpp".
  10.   Uwaga! Można mutować łańcuch.
  11.  
  12. * DNA (dna.h) - klasa pochodna klasy RNA implementująca łańcuch DNA.
  13.   Łańcuch DNA jest ciągiem dwóch łańcuchów nukleotydów, połączonych słabymi wiązaniami.
  14.   Klasa ma być minimalistyczna - wystarczy się w niej ograniczyć do konstruktora i funkcji wyświetlającej.
  15.  
  16. * Virus (virus.h) - klasa implemetuje wirus o następujących cechach:
  17.   - nazwa wirusa
  18.   - łańcuch RNA (dynamiczny obiekt RNA)
  19.   - "wiek" wirusa - ilość wyprodukowanych pokoleń (bez mutacji)
  20.     Wiek wirusa zwiększa się o jeden, po każdej replikacji (skopiowaniu konstr. kopiującym).
  21.     Na przykład, jeśli wiek wirusa vir1 wynosi 1, to nowy wirus vir2 utworzony przez
  22.     instrukcję 'Virus vir2(vir1)' bedzie miał wiek 0, zaś vir1 wiek 2.
  23.  
  24. * AnimalVirus (animalvirus.h) - klasa pochodna klasy Virus,
  25.   implementująca wirusy przenoszone przez zwierzęta.
  26.   Dodatkową cechą klasy AnimalVirus jest:
  27.   - nazwa zwierzęcia, które jest hostem wirusa.
  28.  
  29. UWAGI:
  30. *  Aby program działał poprawnie, odpowiednie klasy muszą posiadać
  31.    niedomyślne konstruktory kopiujące/przenoszące oraz operatory=.
  32. *  Proszę pamiętać, o oprogramowaniu antyplagiatowym używanym na
  33.    platformie VPL - proszę pracować samodzielnie.
  34. *  Szczegóły implementacji klas należy odczytać z funkcji main().
  35. */
  36. //---------------------------------------------------------------------
  37.  
  38. #include <iostream>
  39.  
  40. #include "rna.h"
  41. #include "dna.h"
  42. #include "virus.h"
  43. #include "animalvirus.h"
  44.  
  45. using namespace std;
  46.  
  47. /// Funkcja pomocnicza, do sprawdzania konstruktora przenoszącego.
  48. template<class T> T my_copy(T a) {
  49.     return a; }
  50.  
  51. // =======================================================================
  52. int main() {
  53.     // tworzymy dwie sekwencje genów
  54.     RNA rna1(vector<Nukleotyp>({A,C,A,T,A,G,A,C,T,A,G,T,C,A,T}));
  55.     RNA rna2(vector<Nukleotyp>({C,A,T,C,C,A,G,A,G,T,A,C,T,C,A}));
  56.     cout << "RNA1: " << rna1 << "RNA2: " << rna2 << endl;
  57.     // mutujemy RNA - przesuwamy rotacyjnie w lewo
  58.     cout << "MUTE RNA2: " << rna2.mute() << endl;
  59.    
  60.     // tworzymy kod DNA
  61.     DNA kodDNA(rna1,rna2);
  62.     cout << kodDNA << endl;
  63.  
  64.     // tworzymy nowego wirusa (z pustą informacją o kodzie RNA)
  65.     Virus vir1("RSV");
  66.     cout << "Wirus: " << vir1.get_name() << " " << vir1.get_RNA() << endl;
  67.     // dodajemy sekwencję RNA
  68.     vir1.set_RNA(vector<Nukleotyp>({A,C,U,A,G,G,U,A,U,G,A}));  
  69.     cout << "RNA: " << *vir1.get_RNA() << endl;
  70.  
  71.     // reprodukcja i zliczanie pokoleń wirusów (my_copy jest moje)
  72.     // trzeba podefiniować odpowiednie konstruktory i op =
  73.     // nie zapomnieć o mutacji
  74.     Virus vir2 = Virus(my_copy(vir1));  // z mutacją
  75.     Virus vir3(vir1);                   // bez mutacji
  76.     Virus vir4(my_copy(vir3));          // z mutacją
  77.     cout << "Pokolenia:" << endl;
  78.     cout << "Vir1 - Wiek: " << vir1.get_age() << "  RNA: " << *vir1.get_RNA();
  79.     cout << "Vir2 - Wiek: " << vir2.get_age() << "  RNA: " << *vir2.get_RNA();
  80.     cout << "Vir3 - Wiek: " << vir3.get_age() << "  RNA: " << *vir3.get_RNA();
  81.     cout << "Vir4 - Wiek: " << vir4.get_age() << "  RNA: " << *vir4.get_RNA() << endl;;
  82.  
  83.     Virus vir5 = Virus(vir1);       //z mutacją
  84.     cout << "Pokolenia:" << endl;  
  85.     cout << "Vir1 - Wiek: " << vir1.get_age() << "  RNA: " << *vir1.get_RNA();
  86.     cout << "Vir5 - Wiek: " << vir5.get_age() << "  RNA: " << *vir5.get_RNA() << endl;
  87.  
  88.     // tworzymy nowego wirusa przenoszonego przez zwierzęta,
  89.     // podając nazwę wirusa, nazwę zwierzęcia, od którego pochodzi oraz kod RNA
  90.     AnimalVirus avir("Koronawirus","nietoperz", rna1.get_RNA());
  91.     cout << "Wirus: " <<avir.get_name() << endl;
  92.     cout << "Nosiciel: " << avir.get_animal_host() << endl;
  93.     cout << "RNA: " << *avir.get_RNA()<<endl;
  94.  
  95.     AnimalVirus avir1("Chikungunya","komar",vector<Nukleotyp>({U,C,A,A,U,C,C,U,C,A,U,C,A}));
  96.     cout << "Wirus: " << avir1.get_name() << endl;
  97.     cout << "Nosiciel: " << avir1.get_animal_host() << endl;
  98.     //cout << "RNA: " << *avir1.get_RNA();
  99.    
  100.     AnimalVirus avir2 =  AnimalVirus() = (my_copy(avir1));   // z mutacją = AnimalVirus(my_copy (avir1))
  101.     cout << "AVir1 - Wiek: " << avir1.get_age() << "  RNA: " << *avir1.get_RNA();
  102.     AnimalVirus avir3 (avir1);                          //bez mutacji
  103.     cout << "Wirus: " << avir2.get_name() << endl;
  104.     cout << "Nosiciel: " << avir2.get_animal_host() << endl;
  105.     cout << "Pokolenia:" << endl;
  106.     cout << "AVir1 - Wiek: " << avir1.get_age() << "  RNA: " << *avir1.get_RNA();
  107.     cout << "AVir2 - Wiek: " << avir2.get_age() << "  RNA: " << *avir2.get_RNA();
  108.     cout << "AVir3 - Wiek: " << avir3.get_age() << "  RNA: " << *avir3.get_RNA() << endl;
  109. return 0;
  110. }
  111. // =======================================================================
  112.  
  113. /* Oczekiwane wyjście
  114. RNA1: A C A T A G A C T A G T C A T
  115. RNA2: C A T C C A G A G T A C T C A
  116.  
  117. MUTE RNA2: A T C C A G A G T A C T C A C
  118.  
  119. A C A T A G A C T A G T C A T
  120. | | | | | | | | | | | | | | |
  121. A T C C A G A G T A C T C A C
  122.  
  123. Wirus: RSV 0
  124. RNA: A C U A G G U A U G A
  125.  
  126. Pokolenia:
  127. Vir1 - Wiek: 2  RNA: A C U A G G U A U G A
  128. Vir2 - Wiek: 0  RNA: C U A G G U A U G A A
  129. Vir3 - Wiek: 1  RNA: A C U A G G U A U G A
  130. Vir4 - Wiek: 0  RNA: C U A G G U A U G A A
  131.  
  132. Pokolenia:
  133. Vir1 - Wiek: 3  RNA: A C U A G G U A U G A
  134. Vir5 - Wiek: 0  RNA: A C U A G G U A U G A
  135.  
  136. Wirus: Koronawirus
  137. Nosiciel: nietoperz
  138. RNA: A C A T A G A C T A G T C A T
  139.  
  140. Wirus: Chikungunya
  141. Nosiciel: komar
  142. AVir1 - Wiek: 1  RNA: U C A A U C C U C A U C A
  143. Wirus: Chikungunya
  144. Nosiciel: komar
  145. Pokolenia:
  146. AVir1 - Wiek: 2  RNA: U C A A U C C U C A U C A
  147. AVir2 - Wiek: 0  RNA: C A A U C C U C A U C A U
  148. AVir3 - Wiek: 0  RNA: U C A A U C C U C A U C A
  149.  
  150. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement