Advertisement
IlijaTrnkovski

Untitled

Aug 21st, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class Number {
  6. public:
  7. virtual double doubleValue()=0;
  8. virtual int intValue()=0;
  9. virtual void print()=0;
  10.  
  11. };
  12.  
  13. class Integer :public Number{
  14. private:
  15. int broj;
  16.  
  17. public:
  18. Integer(){
  19. }
  20. Integer(int broj){
  21. this->broj=broj;
  22. }
  23. Integer(const Integer &i){
  24. this->broj=i.broj;
  25. }
  26. void setBroj(int broj){
  27. this->broj=broj;
  28. }
  29. int getBroj(){
  30. return broj;
  31. }
  32. ~Integer(){
  33. }
  34.  
  35.  
  36. double doubleValue(){
  37. return broj;
  38. }
  39. int intValue(){
  40. return (double) broj;
  41. }
  42. void print(){
  43. cout<<"Integer: "<<broj<<endl;
  44. }
  45. };
  46.  
  47. class Double : public Number {
  48. private:
  49. double br;
  50.  
  51. public:
  52. Double(){
  53. }
  54. Double(double br){
  55. this->br=br;
  56. }
  57. Double(const Double &d){
  58. this->br=d.br;
  59. }
  60. ~Double(){
  61. }
  62. double doubleValue(){
  63. return br;
  64. }
  65. int intValue(){
  66. return br;
  67. }
  68. void print(){
  69. cout<<"Double: "<<br<<endl;
  70. }
  71. };
  72.  
  73. class Numbers{
  74. private:
  75. Number **numbers;
  76. int brojach;
  77.  
  78. public:
  79. Numbers(){
  80. }
  81. Numbers( Number *numbers, int brojach){
  82. this->numbers=new Number*[(brojach)+1];
  83. for(int i=0;i<brojach;i++)
  84. numbers[i]=numbers[i];
  85. this->brojach=brojach;
  86. }
  87. Numbers( const Numbers &n){
  88. this->brojach=n.brojach;
  89. this->numbers=new Number*[(n.brojach)+1];
  90. for(int i=0;i<n.brojach;i++)
  91. numbers[i]=n.numbers[i];
  92.  
  93. }
  94.  
  95. Numbers &operator += (Number * n){
  96. Number ** tmp = new Number * [this->brojach+1];
  97. for (int i=0;i<brojach;i++)
  98. tmp[i]=numbers[i];
  99.  
  100. tmp[brojach++]=n;
  101. delete [] numbers;
  102. numbers=tmp;
  103. return *this;
  104. }
  105.  
  106.  
  107. Numbers &operator = (const Numbers &n){
  108. if (this!=&n){
  109. delete [] numbers;
  110. this->brojach=n.brojach;
  111. this->numbers=new Number*[(n.brojach)+1];
  112. for(int i=0;i<n.brojach;i++)
  113. numbers[i]=n.numbers[i];
  114. }
  115. return *this;
  116. }
  117.  
  118. ~Numbers(){
  119. delete []numbers;
  120. }
  121.  
  122. void statistics() {
  123.  
  124. int integers=0,doubles=0;
  125. int sumInt=0;
  126. double sumAll=0.0;
  127. double sumDouble=0.0;
  128.  
  129. for (int i=0;i<brojach;i++){
  130. Integer * integer = dynamic_cast<Integer *>(numbers[i]);
  131. if (integer!=0){
  132. integers++;
  133. sumInt+=numbers[i]->intValue();
  134.  
  135. }
  136. Double * doublee = dynamic_cast<Double *>(numbers[i]);
  137. if (doublee!=0){
  138. doubles++;
  139. sumDouble+=numbers[i]->doubleValue();
  140. }
  141. sumAll+=numbers[i]->doubleValue();
  142. }
  143. cout<<"Count of numbers: "<<brojach<<endl;
  144.  
  145. cout<<"Sum of all numbers: "<<sumAll<<endl;
  146.  
  147. cout<<"Count of integer numbers: "<<integers<<endl;
  148.  
  149. cout<<"Sum of integer numbers: "<<sumInt<<endl;
  150.  
  151. cout<<"Count of double numbers: "<<doubles<<endl;
  152.  
  153. cout<<"Sum of double numbers: "<<sumDouble<<endl;//[сума на сите децимални броеви (Double)]
  154. }
  155.  
  156. void integersLessThan (Integer n) {
  157. bool flag = true;
  158. for (int i=0;i<brojach;i++){
  159. Integer * integer = dynamic_cast<Integer *>(numbers[i]);
  160. if (integer!=0&&numbers[i]->intValue()<n.intValue()){
  161. numbers[i]->print();
  162. flag=false;
  163. }
  164. }
  165.  
  166. if (flag)
  167. cout<<"None"<<endl;
  168. }
  169.  
  170. void doublesBiggerThan (Double n) {
  171. bool flag = true;
  172. for (int i=0;i<brojach;i++){
  173. Double * doublee = dynamic_cast<Double *>(numbers[i]);
  174. if (doublee!=0 && numbers[i]->doubleValue()>n.doubleValue()){
  175. numbers[i]->print();
  176. flag=false;
  177. }
  178. }
  179. if (flag)
  180. cout<<"None"<<endl;
  181. }
  182.  
  183.  
  184.  
  185. };
  186.  
  187. int main() {
  188.  
  189. int n;
  190. cin>>n;
  191. Numbers numbers;
  192. for (int i=0;i<n;i++){
  193. int type;
  194. double number;
  195. cin>>type>>number;
  196. if (type==0){//Integer object
  197. Integer * integer = new Integer((int) number);
  198. numbers+=integer;
  199. }
  200. else {
  201. Double * doublee = new Double(number);
  202. numbers+=doublee;
  203. }
  204. }
  205.  
  206. int lessThan;
  207. double biggerThan;
  208.  
  209. cin>>lessThan;
  210. cin>>biggerThan;
  211.  
  212. cout<<"STATISTICS FOR THE NUMBERS\n";
  213. numbers.statistics();
  214. cout<<"INTEGER NUMBERS LESS THAN "<<lessThan<<endl;
  215. numbers.integersLessThan(Integer(lessThan));
  216. cout<<"DOUBLE NUMBERS BIGGER THAN "<<biggerThan<<endl;
  217. numbers.doublesBiggerThan(Double(biggerThan));
  218.  
  219. return 0;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement