Advertisement
Guest User

ni ja neznam

a guest
May 20th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class Number {
  5. public:
  6. //TODO da se deklariraat trite cisto virtuelni metodi
  7. virtual double doubleValue()=0;
  8. virtual int intValue()=0;
  9. virtual void print()=0;
  10. virtual ~Number() {}
  11. };
  12.  
  13. class Integer : public Number { //TODO da se dodadi izraz za nasleduvanje od Number
  14. private:
  15. //TODO da se deklariraat promenlivite
  16. int num;
  17. public:
  18. //TODO konstruktor so eden argument
  19. Integer(int n) {num=n;}
  20. //TODO da se prepokrijat metodite od klasata Number
  21. double doubleValue() {return num;}
  22. int intValue() {return num;}
  23. void print() {
  24. cout <<"Integer: "<<num<<endl;
  25. }
  26. };
  27.  
  28. class Double : public Number { //TODO da se dodadi izraz za nasleduvanje od Number
  29. private:
  30. //TODO da se deklariraat promenlivite
  31. double num;
  32. public:
  33. //TODO konstruktor so eden argument
  34. Double(double n) {num=n;}
  35. //TODO da se prepokrijat metodite od klasata Number
  36. double doubleValue() {return num;}
  37. int intValue() {return num;}
  38. void print() {
  39. cout <<"Double: "<<num<<endl;
  40. }
  41. };
  42.  
  43. class Numbers{
  44. private:
  45. //TODO deklariranje na promenlivite
  46. Number** nums;
  47. int n;
  48. public:
  49. //TODO default konstruktor
  50. Numbers() {nums=0;n=0;}
  51. //TODO copy konstruktor
  52. Numbers(const Numbers &N) {
  53. n=N.n;
  54. nums=N.nums;
  55. }
  56. //TODO operator =
  57. Numbers& operator=(const Numbers &N){
  58. if(this==&N) return *this;
  59. for (int i=0;i<n;i++)
  60. delete nums[i];
  61. delete[] nums;
  62. nums=N.nums;
  63. return *this;
  64. }
  65. //TODO destruktor
  66. ~Numbers() {
  67. }
  68. //TODO operator += (operatorot da prima pointer od objekt od Number, a ne referenca)
  69. Numbers operator+=(Number* N) {
  70. Number** temp=new Number*[n+1];
  71. for (int i=0;i<n;i++) {
  72. temp[i]=nums[i];
  73. }
  74. temp[n]=N;
  75. delete[] nums;
  76. nums=temp;
  77. n++;
  78. return *this;
  79. }
  80. double sum() {
  81. double summ=0;
  82. for (int i=0;i<n;i++)
  83. summ+=nums[i]->doubleValue();
  84. return summ;
  85. }
  86. int countInts() {
  87. int counter=0;
  88. for (int i=0;i<n;i++) {
  89. Integer* ip=dynamic_cast<Integer*>(nums[i]);
  90. if(ip!=0)
  91. counter++;
  92. }
  93. return counter;
  94. }
  95. int sumInts() {
  96. int sumI=0;
  97. for (int i=0;i<n;i++) {
  98. Integer* ip=dynamic_cast<Integer*>(nums[i]);
  99. if(ip!=0)
  100. sumI+=ip->intValue();
  101. }
  102. return sumI;
  103. }
  104. int countDoubles() {
  105. int counter=0;
  106. for (int i=0;i<n;i++) {
  107. Double* ip=dynamic_cast<Double*>(nums[i]);
  108. if(ip!=0)
  109. counter++;
  110. }
  111. return counter;
  112. }
  113. double sumDoubles() {
  114. double sumI=0;
  115. for (int i=0;i<n;i++) {
  116. Double* ip=dynamic_cast<Double*>(nums[i]);
  117. if(ip!=0)
  118. sumI+=ip->doubleValue();
  119. }
  120. return sumI;
  121. }
  122. //TODO void statistics()
  123. void statistics() {
  124. cout <<"Count of numbers: "<<n<<endl;
  125. cout <<"Sum of all numbers: "<<sum()<<endl;
  126. cout <<"Count of integer numbers: "<<countInts()<<endl;
  127. cout <<"Sum of integer numbers: "<<sumInts()<<endl;
  128. cout <<"Count of double numbers: "<<countDoubles()<<endl;
  129. cout <<"Sum of double numbers: "<<sumDoubles()<<endl;
  130. }
  131. //TODO void integersLessThan (Integer n)
  132. void integersLessThan (Integer N) {
  133. bool flag=1;
  134. for (int i=0;i<n;i++) {
  135. if (nums[i]->intValue()<N.intValue()&&dynamic_cast<Integer*>(nums[i])!=0) {
  136. nums[i]->print();
  137. flag=0;
  138. }
  139. }
  140. if(flag) cout<<"None"<<endl;
  141. }
  142. //TODO void doublesBiggerThan (Double n)
  143. void doublesBiggerThan (Double D) {
  144. bool flag=1;
  145. for (int i=0;i<n;i++) {
  146. if (nums[i]->doubleValue()>D.doubleValue()&&dynamic_cast<Double*>(nums[i])!=0){
  147. nums[i]->print();
  148. flag=0;
  149. }
  150. }
  151. if(flag) cout<<"None"<<endl;
  152. }
  153.  
  154. };
  155.  
  156. int main() {
  157.  
  158. int n;
  159. cin>>n;
  160. Numbers numbers;
  161. for (int i=0;i<n;i++){
  162. int type;
  163. double number;
  164. cin>>type>>number;
  165. if (type==0){//Integer object
  166. Integer * integer = new Integer((int) number);
  167. numbers+=integer;
  168. }
  169. else {
  170. Double * doublee = new Double(number);
  171. numbers+=doublee;
  172. }
  173. }
  174. int lessThan;
  175. double biggerThan;
  176.  
  177. cin>>lessThan;
  178. cin>>biggerThan;
  179.  
  180. cout<<"STATISTICS FOR THE NUMBERS\n";
  181. numbers.statistics();
  182. cout<<"INTEGER NUMBERS LESS THAN "<<lessThan<<endl;
  183. numbers.integersLessThan(Integer(lessThan));
  184. cout<<"DOUBLE NUMBERS BIGGER THAN "<<biggerThan<<endl;
  185. numbers.doublesBiggerThan(Double(biggerThan));
  186.  
  187. return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement