Я пишу функцию, которая делит число Big Int (128 бит), представленное в String, на 2. Пример: 8113 - это строка = "8113". Я знаю ошибки моей функции в случае du! = 0. Когда я исправляюкод для входа, другой ввод делают ошибки.Пожалуйста, дайте мне несколько советов для моего решения.Если мой алгоритм так плох, скажите мне лучше, тогда я могу изменить свою функцию другим способом.
int CTOI(char a)
{
return a - 48;
}
char ITOC(int a)
{
if (a == 0)
return '0';
return a + '0';
}
int creDec(int a, int b)
{
return (a * 10) + b;
}
string divide2(string str)
{
string temp = str, t2;
int du, kq;
du = CTOI(temp[0]);
if (du == 1) {
temp.erase(0, 1);
while (temp[0] != 0)
{
du = creDec(du, CTOI(temp[0]));
if (du == 1)
{
temp.erase(0, 1);
}
else
temp.erase(0, 1);
kq = du / 2;
t2 += ITOC(kq);
du = du - kq * 2;
}
}
else
{
while (temp[0] != 0)
{
if (du == 1)
{
temp.erase(0, 1);
du = creDec(du, CTOI(temp[0]));
}
kq = du / 2;
t2 += ITOC(kq);
du = du - kq * 2;
temp.erase(0, 1);
du = creDec(du, CTOI(temp[0]));
}
}
return t2;
}