Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<algorithm>
- #include<conio.h>
- using namespace std;
- struct Number {
- vector<int> lnum;
- };
- //функция ввода числа, число должно вводить обычным способом, программа сама его "отзеркалит"
- void number_input(Number *n)
- {
- bool y = true;
- bool z = true;
- int i = 0;
- int q = 0;
- while (y)
- {
- q = _getche();
- if (((q > '9') || (q < '0')) && (q != 13))
- {
- cout << "Ошибка ввода!\n";
- n->lnum.clear();
- }
- else if (q != 13)
- {
- n->lnum.push_back(q - 48);
- }
- else if (q == 13)
- {
- system("cls");
- y = false;
- }
- }
- reverse(n->lnum.begin(), n->lnum.end());
- }
- //функция вывода числа в правильном порядке цифр
- void number_print(Number n)
- {
- for (int i = (n.lnum.size()) - 1; i >= 0; i--)
- {
- cout << n.lnum[i];
- }
- }
- //функция сложения длинных чисел
- Number add(Number a, Number b) {
- int carry = 0;
- for (size_t i = 0; i < max(a.lnum.size(), b.lnum.size()) || carry; ++i) {
- if (i == a.lnum.size())
- a.lnum.push_back(0);
- a.lnum[i] += carry + (i < b.lnum.size() ? b.lnum[i] : 0);
- carry = a.lnum[i] >= 10;
- if (carry) a.lnum[i] -= 10;
- }
- return a;
- }
- int main() {
- setlocale(0, "rus");
- Number a;
- Number b;
- cout << "Введите первый операнд: ";
- number_input(&a);
- cout << "Введите второй операнд: ";
- number_input(&b);
- cout << "\nРезультат сложения: ";
- number_print(add(a, b));
- cout << "\n";
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment