.exe вызвал срабатывание точки останова

182
26 июня 2022, 07:50

Не понимаю, в чем ошибка, ведь значение вычисляется правильно, иногда даже выводиться в консоль, но с вводом первого числа ,как 1, а второго как 10000000000000... выдает ошибку

#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string digit1, digit2, answer;
    cout << "Введите уменьшаемое число:" << endl;
    cin >> digit1;
    cout << "Введите вычитаемое число:" << endl;
    cin >> digit2;
    long m = digit1.size();
    long n = digit2.size();
    long* a = new long[m];
    long* b = new long[m];
    int len, len1, x;
    if (m < n) {
        for (int i = 0; i < n; i++) {
            *(a + i) = (long)digit2[i] - '0';
        }
        for (int i = 0; i < m; i++) {
            *(b + i) = (long)digit1[i] - '0';
        }
        cout << endl;
    }
    else
    {
        for (int i = 0; i < m; i++) {
            *(a + i) = (long)digit1[i] - '0';
        }
        for (int i = 0; i < n; i++) {
            *(b + i) = (long)digit2[i] - '0';
        }
        cout << endl;
    }
    if (m < n) {
        len = m;
        len1 = n;
    }
    else {
        len = n;
        len1 = m;
    }
    long* c = new long[len1];
    for (int i = 0; i < len1; i++) {
        *(c + i) = 0;
    }
    for (int i = len - 1; i >= 0; i--) {
        if (*(a + i + len1 - len) >= *(b + i)) {
            x = *(a + i + len1 - len) - *(b + i);
            *(c + i + len1 - len) = x;
        }
        else {
            *(a + i + len1 - len - 1) -= 1;
            if (*(a + i + len1 - len - 1) < 0) {
                int k = 1;
                while (*(a + i + len1 - len - k) <= 0) {
                    *(a + i + len1 - len - k) = 9;
                    k++;
                }
                *(a + i + len1 - len - k) -= 1;
            }
            *(a + i + len1 - len) += 10;
            x = *(a + i + len1 - len) - *(b + i);
            *(c + i + len1 - len) = x;
        }
    }
    cout << endl;
    for (int i = 0; i < len1 - len; i++) {
        *(c + i) = *(a + i);
    }
    cout << "Полученная разность: " << endl;
    if (m < n)
        answer.push_back('-');
    for (int i = 0; i < len1; i++) {
        answer.append(to_string(c[i]));
    }
    while (answer[0] - 48 == 0) {
        answer.erase(0, 1);
    }
    cout << answer;
    cout << endl;
}
Answer 1
else
    {
        for (int i = 0; i < len1; i++) {
            *(a + i) = (long)digit1[i] - '0';
        }
        for (int i = 0; i < len; i++) {
            *(b + i) = (long)digit2[i] - '0';
        }
        cout << endl;
    }
READ ALSO
Функция завершается не дойдя до return с++

Функция завершается не дойдя до return с++

вот код программы, из книги олимпиадное программированиеОн должен решать задачу о количестве способов разместить n ферзей на доске n*n чтобы...

131
Как использовать лямбды вместе с boost.asio?

Как использовать лямбды вместе с boost.asio?

Как можно заменить все boost::bind на лямбды в коде ниже??? Почему при попытке в функции accept заменить boost::bind на std::bind, компилятор выдает ошибку No matching...

145
Что возвращает boost::bind?

Что возвращает boost::bind?

Какого типа данных возвращаемое значение boost::bind? Я хочу сделать функцию, которая будет принимать в себя результат работы boost::bind, но я не знаю...

209