The curriculum must be written without the use of third-party libraries containing long arithmetic. Write wrote, the program works, but for some reason it crashes after execution, and somehow accidentally, I did not see any dependency in the input data, at which the completion occurs. Tell me, please, where there may be a mistake.
#include <iostream> #include <fstream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; void ConvertFromStringToIntArray(int number1[], int number2[], string str1, string str2) //Π±Π΅ΡΠ΅ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΠΈΡΠ»Π° Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ { char SomeCharForAtoi[2]; for(int i = str1.size()-1; i >= 0; i--) { SomeCharForAtoi[0] = str1[i]; SomeCharForAtoi[1] = '\0'; number1[str1.size()-1-i] = atoi(SomeCharForAtoi); //Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΡΡΠ°ΠΌΠΈ ΡΠΈΡΠ»Π° Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ } for(int i = str2.size()-1; i >= 0; i--) { SomeCharForAtoi[0] = str2[i]; SomeCharForAtoi[1] = '\0'; number2[str2.size()-1-i] = atoi(SomeCharForAtoi); } } void show_LongNumber(int number[], int length) //Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΈΡΠ»ΠΎ Π½Π° ΡΠΊΡΠ°Π½ { for(int i = length-1; i > -1; i--) cout << number[i]; cout << endl; } void add_LongNumbers(int number1[], int number2[], int length1, int length2, int &ResultLength) { if(length1 > length2) { ResultLength = length1 + 1; //Π΄Π»ΠΈΠ½Π° ΡΠΈΡΠ»Π° ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ(ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ) for(int i = length1; i < ResultLength; i++) //Π·Π°ΠΏΠΎΠ»Π½ΡΡ Π½ΡΠ»ΡΠΌΠΈ ΡΠ°Π·Π½ΠΈΡΡ Π² ΡΠ°Π·ΡΡΠ΄Π°Ρ
number1[i] = 0; for(int i = length2; i < ResultLength; i++) number2[i] = 0; } else { ResultLength = length2 + 1; for(int i = length1; i < ResultLength; i++) number1[i] = 0; for(int i = length2; i < ResultLength; i++) number2[i] = 0; } for(int i = 0; i < ResultLength-1; i++) //ΡΠ°ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ { number1[i] += number2[i]; number1[i + 1] += (number1[i] / 10); number1[i] %= 10; } if(number1[ResultLength-1] == 0) //Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠΈΡΡΠ° - Π½ΠΎΠ»Ρ, ΡΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠΈΡΠ»ΠΎ { ResultLength--; } } int main() { ifstream fin; ofstream fout; fin.open("input.txt"); fout.open("output.txt"); string number1; string number2; fin >> number1; fin >> number2; int ResultLength; int *FirstNumber = new int[number1.size()]; int *SecondNumber = new int[number2.size()]; int length1 = number1.size(); int length2 = number2.size(); ConvertFromStringToIntArray(FirstNumber, SecondNumber, number1, number2); add_LongNumbers(FirstNumber, SecondNumber, length1, length2, ResultLength); show_LongNumber(FirstNumber, ResultLength); delete [] FirstNumber; delete [] SecondNumber; fin.close(); fout.close(); return 0; }