Advertisement
simov

OOP Lab.6 - Наследување

May 2nd, 2014
1,453
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.80 KB | None | 0 0
  1. /* ZADACA 1 */
  2. /*
  3. Недвижнина Problem 1 (0 / 0)
  4. Да се развие класа Nediviznina за коjа се чуваат следниве информации:
  5.  
  6. адреса (динамички алоцирана низа од знаци)
  7. квадратура (цел боj)
  8. цена за квадрат (цел боj)
  9. За оваа класа да се имплементираат соодветните конструктори и следните методи:
  10.  
  11. cena() коj ќе jа ваќа цената на недвижнината (квадратура * цена-за-квадрат)
  12. pecati() коj ќе ги испечати сите информации за истата
  13. danokNaImot() коj го ваќа данокот што се плаќа за недвижнината, а истиот се пресметува како 5% од цената на недвижнината.
  14. Од оваа класа да се изведе класа Vila за коjа дополнително се чува данок на луксуз (цел боj, пр. 10%). За оваа класа да се преоптоварат методите:
  15.  
  16. pecati()
  17. danokNaImot() со тоа што пресметаниот данок се зголемува процентуално за данокот на луксуз.
  18. И за двете класи треба да се преоптовари operator >>.
  19.  
  20. Sample input:
  21. Kukja_vo_Centar
  22. 60
  23. 850
  24. Vila_na_Vodno
  25. 110
  26. 1120
  27. 10
  28.  
  29. Sample output:
  30. Kukja_vo_Centar, Kvadratura: 60, Cena po Kvadrat: 850
  31. Danok za: Kukja_vo_Centar, e: 2550
  32. Vila_na_Vodno, Kvadratura: 110, Cena po Kvadrat: 1120, Danok na luksuz: 10
  33. Danok za: Vila_na_Vodno, e: 18480
  34. */
  35.  
  36. #include <iostream>
  37. #include <cstring>
  38.  
  39. using namespace std;
  40.  
  41. class Nedviznina{
  42. protected:
  43.     char *adresa;
  44.     int kvadratura;
  45.     int cena;
  46. public:
  47.     Nedviznina(char *a="", int k=0,int c=0){
  48.     adresa=new char[strlen(a)+1];
  49.     strcpy(adresa,a);
  50.     kvadratura=k;
  51.     cena=c;
  52. }
  53. Nedviznina(const Nedviznina &n){
  54.     adresa=new char[strlen(n.adresa)+1];
  55.     strcpy(adresa,n.adresa);
  56.     kvadratura = n.kvadratura;
  57.     cena = n.cena;
  58. }
  59. char *getAdresa(){
  60.     return adresa;
  61. }
  62. int getKvadratura(){
  63.     return kvadratura;
  64. }
  65. int getCena(){
  66.     return cena;
  67. }
  68. ~Nedviznina(){
  69.     delete [] adresa;
  70. }
  71. Nedviznina &operator=(const Nedviznina &n){
  72.     if(this!=&n){
  73.         delete [] adresa;
  74.         adresa = new char [strlen(n.adresa)+1];
  75.         strcpy(adresa,n.adresa);
  76.         kvadratura = n.kvadratura;
  77.         cena = n.cena;
  78.     }
  79.     return *this;
  80. }
  81. float cenaN(){
  82.     return kvadratura * cena;
  83. }
  84. float danokNaImot(){
  85.     return kvadratura * cena * 0.05;
  86. }
  87. void pecati(){
  88.     cout << adresa << ", Kvadratura: " << kvadratura << ", Cena po Kvadrat: " << cena << endl;
  89. }
  90. friend istream &operator >> (istream &in, Nedviznina &n){
  91.     in >> n.adresa;
  92.     in >> n.kvadratura;
  93.     in >> n.cena;
  94.     return in;
  95. }
  96. };
  97. class Vila: public Nedviznina{
  98. private:
  99.     int danokl;
  100. public:
  101.     Vila(char *a="",int k=0, int c=0, int d=0):Nedviznina(a,k,c){
  102.     danokl=d;
  103. }
  104. float danokNaImot(){
  105.     return Nedviznina::danokNaImot()+(kvadratura*cena*danokl)/100.00;
  106. }
  107. void pecati(){
  108.     cout << adresa << ", Kvadratura: " << kvadratura << ", Cena po Kvadrat: " << cena << ", Danok na luksuz: " << danokl << endl;
  109. }
  110. friend istream &operator>>(istream&in,Vila &v){
  111.     in >> v.adresa;
  112.     in >> v.kvadratura;
  113.     in >> v.cena;
  114.     in >> v.danokl;
  115.     return in;
  116. }
  117. };
  118.  
  119. int main(){
  120.     Nedviznina n;
  121.     Vila v;
  122.     cin>>n;
  123.     cin>>v;
  124.     n.pecati();
  125.     cout<<"Danok za: "<<n.getAdresa()<<", e: "<<n.danokNaImot()<<endl;
  126.     v.pecati();
  127.     cout<<"Danok za: "<<v.getAdresa()<<", e: "<<v.danokNaImot()<<endl;
  128.     return 0;
  129. }
  130.  
  131. /* ZADACA 2 */
  132. /*
  133. Спортски екипи Problem 2 (0 / 0)
  134. Да се дефинира класа Ekipa за коjа се чуваат следниве информации:
  135.  
  136. името на екипата (низа од наjмногу 15 знаци)
  137. броj на порази
  138. броj на победи
  139. За оваа класа да се дефинира метод pecati() коjа ги печати податоците за екипаta. Од оваа класа да се изведe новa класa, FudbalskaEkipa.
  140.  
  141. За фудбалската екипа дополнително се чуваат информации за:
  142.  
  143. вкупниот броj на црвени картони
  144. вкупниот броj жолти картони
  145. броjот на нерешени натпревари
  146. За фудбалската екипа да се преоптовари методот pecati(), така што покрај останатите информации, ќе се испечатат и бројот на нерешени резултати и вкупен број на поени во формат: Име на екипа, броj на победи, броj на порази, броj на нерешени натпревари и вкупен броj на поени (за победа фудбалската екипа добива 3 поени, додека за нерешен резултата, 1 поен); 
  147.  
  148. Sample input:
  149. Fudbaleri
  150. 5
  151. 4
  152. 3
  153. 7
  154. 6
  155.  
  156. Sample output:
  157. Ime: Fudbaleri Pobedi: 5 Porazi: 4 Nereseni: 6 Poeni: 21
  158. */
  159.  
  160. #include <iostream>
  161. #include <cstring>
  162.  
  163. using namespace std;
  164.  
  165. class Ekipa{
  166. protected:
  167.     char ime[15];
  168.     int porazi;
  169.     int pobedi;
  170. public:
  171.     Ekipa(char *i=" ",int por=0,int pob=0){
  172.     strncpy(ime,i,14);
  173.     ime[14]='0';
  174.     porazi = por;
  175.     pobedi = pob;
  176. }
  177. virtual void pecati()=0;
  178. };
  179. class FudbalskaEkipa: public Ekipa{
  180. private:
  181.     int crveni;
  182.     int zolti;
  183.     int nereseni;
  184. public:
  185.     int poeni(){
  186.         int poeni;
  187.         poeni=3*pobedi+1*nereseni;
  188.         return poeni;
  189. }
  190. FudbalskaEkipa(char*i="0",int pob=0,int por=0,int c=0,int z=0, int n=0):
  191. Ekipa(i,por,pob),crveni(c),zolti(z),nereseni(n){}
  192. void pecati(){
  193.     cout << "Ime: " << ime << " Pobedi: " << pobedi << " Porazi: " << porazi << " Nereseni: " << nereseni << " Poeni: " << poeni() << endl;
  194. }
  195. };
  196. class KosarkarskaEkipa : public Ekipa{
  197. private:
  198.     int greski;
  199.     int obidi;
  200. public:
  201.     KosarkarskaEkipa(char *i, int pob, int por, int g, int o):Ekipa(i,por,pob),greski(g),obidi(o){}
  202.     float Uspesnost(){
  203.         float u;
  204.         u=(100*pobedi)/(porazi+pobedi*1.00);
  205.         return u;
  206. }
  207. void pecati(){
  208.     cout << "Ime: " << ime << " Pobedi: " << pobedi << " Porazi: " << porazi << " Licni: " << greski << " Obidi: " << obidi << " Uspesnost: " << Uspesnost() << "%" << endl;
  209. }
  210. };
  211. void statistika(Ekipa **ekipi, int vkupno){
  212.     for(int i=0;i<vkupno;i++){
  213.         (*ekipi[i]).pecati();
  214.     }
  215. }
  216.  
  217. int main(){
  218.     char ime[15];
  219.     int pob,por,ck,zk,ner;
  220.     cin>>ime>>pob>>por>>ck>>zk>>ner;
  221.     FudbalskaEkipa f1(ime,pob,por,ck,zk,ner);
  222.     f1.pecati();
  223.     return 0;
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement