Advertisement
filashkov

Untitled

Apr 15th, 2020
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.34 KB | None | 0 0
  1. #include <string>
  2. #include <vector>
  3. #include<stdio.h>
  4.  
  5. class LongInt {
  6. protected:
  7. std::string number;
  8. public:
  9. LongInt(const std::string& copy = "");
  10. ~LongInt(){}
  11.  
  12. std::string get_number() const { return number; }
  13. void set_number(const std::string set);
  14.  
  15. LongInt operator=(const LongInt& copy);
  16. LongInt operator+=(const LongInt& buff);
  17. friend LongInt operator+(const LongInt& buff1, const LongInt& buff2);
  18. friend LongInt operator-(const LongInt& buff1, const LongInt& buff2);
  19. friend LongInt operator*(const LongInt& buff1, const LongInt& buff2);
  20. friend LongInt operator/(const LongInt& buff1, const LongInt& buff2);
  21. std::string ToBinary();
  22. void print();
  23.  
  24. };
  25.  
  26. void LongInt::print() {
  27. printf("%s",number);
  28. }
  29.  
  30. std::string LongInt::ToBinary() {
  31. int num1 = 0;
  32. for (int i = 0; i < number.length(); i++) {
  33. num1 = num1 * 10 + (number[i] - 48);
  34. }
  35.  
  36.  
  37. int mod;
  38. long int double_ = 0;
  39.  
  40. for (int i = 0; num1 > 0; i++) {
  41.  
  42. mod = num1 % 2;
  43. num1 = (num1 - mod) / 2;
  44. double_ += mod * pow((double)10, i);
  45. }
  46. return std::to_string(double_);
  47. }
  48.  
  49. LongInt::LongInt(const std::string& copy) {
  50. this->number = copy;
  51. }
  52.  
  53. LongInt LongInt::operator=(const LongInt& copy) {
  54. this->number = copy.get_number();
  55. return *this;
  56. }
  57.  
  58. LongInt LongInt::operator+=(const LongInt& buff) {
  59. int num1 = 0;
  60. int num2 = 0;
  61. for (int i = 0; i < number.length(); i++) {
  62. num1 = num1 * 10 + (number[i] - 48);
  63. }
  64. for (int i = 0; i < buff.get_number().length(); i++) {
  65. num2 = num2 * 10 + (buff.get_number()[i] - 48);
  66. }
  67. num1 += num2;
  68. this->number = num1;
  69. return *this;
  70. }
  71.  
  72. LongInt operator+(const LongInt& buff1, const LongInt& buff2){
  73. int num1 = 0;
  74. int num2 = 0;
  75. for (int i = 0; i < buff1.get_number().length(); i++) {
  76. num1 = num1 * 10 + (buff1.get_number()[i] - 48);
  77. }
  78. for (int i = 0; i < buff2.get_number().length(); i++) {
  79. num2 = num2 * 10 + (buff2.get_number()[i] - 48);
  80. }
  81. num1 += num2;
  82. return std::to_string(num1);
  83. }
  84.  
  85. LongInt operator-(const LongInt& buff1, const LongInt& buff2) {
  86. int num1 = 0;
  87. int num2 = 0;
  88. for (int i = 0; i < buff1.get_number().length(); i++) {
  89. num1 = num1 * 10 + (buff1.get_number()[i] - 48);
  90. }
  91. for (int i = 0; i < buff2.get_number().length(); i++) {
  92. num2 = num2 * 10 + (buff2.get_number()[i] - 48);
  93. }
  94. num1 -= num2;
  95. return std::to_string(num1);
  96. }
  97.  
  98. LongInt operator*(const LongInt& buff1, const LongInt& buff2) {
  99. int num1 = 0;
  100. int num2 = 0;
  101. for (int i = 0; i < buff1.get_number().length(); i++) {
  102. num1 = num1 * 10 + (buff1.get_number()[i] - 48);
  103. }
  104. for (int i = 0; i < buff2.get_number().length(); i++) {
  105. num2 = num2 * 10 + (buff2.get_number()[i] - 48);
  106. }
  107. num1 *= num2;
  108. return std::to_string(num1);
  109. }
  110.  
  111. LongInt operator/(const LongInt& buff1, const LongInt& buff2) {
  112. int num1 = 0;
  113. int num2 = 0;
  114. for (int i = 0; i < buff1.get_number().length(); i++) {
  115. num1 = num1 * 10 + (buff1.get_number()[i] - 48);
  116. }
  117. for (int i = 0; i < buff2.get_number().length(); i++) {
  118. num2 = num2 * 10 + (buff2.get_number()[i] - 48);
  119. }
  120. num1 /= num2;
  121. return std::to_string(num1);
  122. }
  123.  
  124. void LongInt::set_number(const std::string set) {
  125. this->number = set;
  126. }
  127.  
  128. int main() {
  129. int m = 0;
  130. std::vector<LongInt> vec;
  131. while (m != 0) {
  132. printf("Меню:");
  133. printf("0.Выход.");
  134. printf("1.Добавить элемент.");
  135. printf("2.Вывод.");
  136. printf("3.Сложение 2-х последних чисел.");
  137. scanf("%i", m);
  138. if (m == 1) {
  139. std::string str1;
  140. printf("Введите элемент: ");
  141. scanf("%s", str1);
  142. vec.push_back(str1);
  143. printf("Добавлено.");
  144. printf("");
  145. printf("");
  146. }
  147. else if (m == 2) {
  148. for (int i = 0; i < vec.size(); i++) {
  149. vec[i].print();
  150. }
  151. }
  152. else if (m == 3) {
  153. LongInt sum;
  154. sum = vec[vec.size()] + vec[vec.size() - 1];
  155. printf("%s", sum);
  156. }
  157. }
  158. exit(0);
  159. return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement