При осуществлении алгоритма SPIGOT для PI выводит не совсем корректный результат

Мне нужно реализовать алгоритм SPIGOT для вычисления числа π, все хорошо, вот только в одном месте возникла неточность, программа выводит 3,141592653589793238462643383279410288419, а должно быть в этом месте 3,14159265358979323846264338327950288419, не знаю, что делать, походу программа пропускает одно из условий, помогите, пожалуйста, это срочно

using namespace std;

int main() {
    int oper;// Инициализация переменной для подсчета операций
    int proverka;// Инициализация переменной для работы с недействительными числами
    int kol; // Инициализация перменной для количества требуемых выводимых цифр числа ПИ
    int umnoz;// Инициализация перменной для умножения на 10 в процессе вывода числа
    int summa;// Инициализация перменной для суммирования в цикле
    int size;// Инициализация перменной размера массива
    int nedeyst;// Инициализация перменной для подсчета недействительных чисел
    int result;// Инициализация перменной для вывода каждого цифры в числе ПИ
    int a;// Инициализация перменной для подсчета итераций
    nedeyst = 0; //Переменная для счета недействительных цифр
    result = 0; //Задаем начальное значение переменной для переноса
    a = 0; //Задаем начальное значение переменной для подсчета итераций в цикле
    oper = 0; //Задаем начальное значение переменной для подсчета простых арифметических операций в цикле
    cout << "    " << "SPIGOT algorithm for calculating the number of PI"<< "    " << endl; //вывод названия программы
    cout << "Required number of digits of PI: "; //Выводим надпись "Требуемое количество знаков числа ПИ:"
    cin >> kol; //Принимаем значение количества цифр
    size = 10 * kol / 3; //Обозначаем значение количества выделяемых ячеек для массива
    int arr[size]; //Инициализация массива для дальнейшей работы
    for (int q = 0; q < size; q++) //Цикл для заполнения массива цифрами 2
        arr[q] = 2; // Присваиваем значение каждому элементу
    for (int e = 0; e < kol; e++) { // Внешний цикл
        result = 0; // Присваиваем значению ячейки переноса начальное значение равное 0
        for (int i = size; i > 0; i--) { //Вычисление цифры числа пи
            umnoz = 10 * arr[i - 1]; //
            summa = umnoz + result * i;// сумма произведения последнего элемента массива на 10 и переноса
            arr[i - 1] = summa % (2 * i - 1); //Подсчет остатка
            result = summa / (2 * i - 1); //Подсчет переноса
            oper = oper + 10;//Подсчет ПРОСТЫХ арифметических операций
            a = a + 1;// Подсчет итераций в цикле
        }
        arr[0] = result % 10; //Деление с выводом остатка
        result = result / 10; //Подсчет соответствующей цифры из числа ПИ
        oper = oper + 2;// прибавление количества операций для работы с первым элементом массива
        if (proverka == 10) {//Условия для недействительных чисел и случая с получение 9 и 10
            cout << result + 1; //увеличиваем предыдущую на 1
            for (int t = 0; t < nedeyst; t++) // цикл для вывода 0, если мы получаем 10
                cout << 0; // вывод 0
            a = a + 1; // прибавляем количество итераций 
            nedeyst = 0; // обнуляем переменные
            result = 0; // обнуляем переменные
        }   
        else if (proverka == 9) { //Условия для недействительных чисел и случая с получение 9 и 10
            nedeyst = nedeyst + 1; // увеличиваем количество недействительных
            oper = oper + 1;// увеличиваем количество операций
        }
        else {
            cout << result; //Если мы не получаем 10 или 9
            result = proverka; // присваиваем переменной действительную цифру 
            if (nedeyst != 0) { //если есть недействительные цифры
                for (int t = 0; t < nedeyst; t++)
                    cout << 9; // выводим 9 при нужной цифре числа ПИ
                nedeyst = 0;
            }
        }
    }
    cout << endl; //Переход на новую строку
    cout << "Number of iterations to count " << kol << " digits: " << a << endl; //Вывод надписи о количестве итараций
    cout << "The number of simple arithmetic operations for counting " << kol << " digits: " << oper << endl; //Вывод надписи о количестве операций
    return 0; // возвращаемое значение функции
}```

Ответы (0 шт):