Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <vector>
- #include<stdio.h>
- class LongInt {
- protected:
- std::string number;
- public:
- LongInt(const std::string& copy = "");
- ~LongInt(){}
- std::string get_number() const { return number; }
- void set_number(const std::string set);
- LongInt operator=(const LongInt& copy);
- LongInt operator+=(const LongInt& buff);
- friend LongInt operator+(const LongInt& buff1, const LongInt& buff2);
- friend LongInt operator-(const LongInt& buff1, const LongInt& buff2);
- friend LongInt operator*(const LongInt& buff1, const LongInt& buff2);
- friend LongInt operator/(const LongInt& buff1, const LongInt& buff2);
- std::string ToBinary();
- void print();
- };
- void LongInt::print() {
- printf("%s",number);
- }
- std::string LongInt::ToBinary() {
- int num1 = 0;
- for (int i = 0; i < number.length(); i++) {
- num1 = num1 * 10 + (number[i] - 48);
- }
- int mod;
- long int double_ = 0;
- for (int i = 0; num1 > 0; i++) {
- mod = num1 % 2;
- num1 = (num1 - mod) / 2;
- double_ += mod * pow((double)10, i);
- }
- return std::to_string(double_);
- }
- LongInt::LongInt(const std::string& copy) {
- this->number = copy;
- }
- LongInt LongInt::operator=(const LongInt& copy) {
- this->number = copy.get_number();
- return *this;
- }
- LongInt LongInt::operator+=(const LongInt& buff) {
- int num1 = 0;
- int num2 = 0;
- for (int i = 0; i < number.length(); i++) {
- num1 = num1 * 10 + (number[i] - 48);
- }
- for (int i = 0; i < buff.get_number().length(); i++) {
- num2 = num2 * 10 + (buff.get_number()[i] - 48);
- }
- num1 += num2;
- this->number = num1;
- return *this;
- }
- LongInt operator+(const LongInt& buff1, const LongInt& buff2){
- int num1 = 0;
- int num2 = 0;
- for (int i = 0; i < buff1.get_number().length(); i++) {
- num1 = num1 * 10 + (buff1.get_number()[i] - 48);
- }
- for (int i = 0; i < buff2.get_number().length(); i++) {
- num2 = num2 * 10 + (buff2.get_number()[i] - 48);
- }
- num1 += num2;
- return std::to_string(num1);
- }
- LongInt operator-(const LongInt& buff1, const LongInt& buff2) {
- int num1 = 0;
- int num2 = 0;
- for (int i = 0; i < buff1.get_number().length(); i++) {
- num1 = num1 * 10 + (buff1.get_number()[i] - 48);
- }
- for (int i = 0; i < buff2.get_number().length(); i++) {
- num2 = num2 * 10 + (buff2.get_number()[i] - 48);
- }
- num1 -= num2;
- return std::to_string(num1);
- }
- LongInt operator*(const LongInt& buff1, const LongInt& buff2) {
- int num1 = 0;
- int num2 = 0;
- for (int i = 0; i < buff1.get_number().length(); i++) {
- num1 = num1 * 10 + (buff1.get_number()[i] - 48);
- }
- for (int i = 0; i < buff2.get_number().length(); i++) {
- num2 = num2 * 10 + (buff2.get_number()[i] - 48);
- }
- num1 *= num2;
- return std::to_string(num1);
- }
- LongInt operator/(const LongInt& buff1, const LongInt& buff2) {
- int num1 = 0;
- int num2 = 0;
- for (int i = 0; i < buff1.get_number().length(); i++) {
- num1 = num1 * 10 + (buff1.get_number()[i] - 48);
- }
- for (int i = 0; i < buff2.get_number().length(); i++) {
- num2 = num2 * 10 + (buff2.get_number()[i] - 48);
- }
- num1 /= num2;
- return std::to_string(num1);
- }
- void LongInt::set_number(const std::string set) {
- this->number = set;
- }
- int main() {
- int m = 0;
- std::vector<LongInt> vec;
- while (m != 0) {
- printf("Меню:");
- printf("0.Выход.");
- printf("1.Добавить элемент.");
- printf("2.Вывод.");
- printf("3.Сложение 2-х последних чисел.");
- scanf("%i", m);
- if (m == 1) {
- std::string str1;
- printf("Введите элемент: ");
- scanf("%s", str1);
- vec.push_back(str1);
- printf("Добавлено.");
- printf("");
- printf("");
- }
- else if (m == 2) {
- for (int i = 0; i < vec.size(); i++) {
- vec[i].print();
- }
- }
- else if (m == 3) {
- LongInt sum;
- sum = vec[vec.size()] + vec[vec.size() - 1];
- printf("%s", sum);
- }
- }
- exit(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement