divider — деление больших чисел в c ++ с использованием строк

Я должен написать программу, которая делит 2 больших числа в C ++, которые не могут быть сохранены в любых других переменных, кроме строк (я думаю).
Числа являются целыми числами.

Я написал некоторый код, который использует мою предыдущую функцию для вычитания из чисел, но он не работал с такими операциями, как 1000/1 или 1234567890/2: /
Не могли бы вы дать мне несколько советов, как я могу сделать такую ​​функцию?

Вот мои коды:
(вычитание из чисел)

string a=xa, b=xb, tmp_a = "", tmp_b = "", wynik = "", tmp_left_a, tmp_left_b, wynik_return, zamiana;
int dl_a = 0, dl_b = 0, pozyczka = 0, end_a = 0, end_b = 0, tmp_wynik = 0, left_a = 0, left_b = 0, test = 9,spr_a,spr_b;
bool wieksza = false;
string *wsk_a = &a;dl_a = a.length();
dl_b = b.length();

if (dl_b > dl_a)
{
wieksza = true;
zamiana = a;
a = b;
b = zamiana;
}

if (dl_a == dl_b)
{
if (a == b)
return "0";
else
{
for (int i = 0; i < dl_a; i++)
{
tmp_a = a[i];
tmp_b = b[i];
spr_a = stoi(tmp_a);
spr_b = stoi(tmp_b);

if (spr_a != spr_b)
{
if (spr_a > spr_b)
break;
if (spr_b > spr_a)
{
wieksza = true;
zamiana = a;
a = b;
b = zamiana;
break;
}
}

}
}
}dl_a = a.length();
dl_b = b.length();
int *wsk_dl = &dl_a;for (int i = dl_b - 1; i >= 0; i--)
{

tmp_a = a[dl_a - 1];
tmp_b = b[i];
end_a = stoi(tmp_a);
end_b = stoi(tmp_b);

tmp_wynik = end_a - end_b;

if (tmp_wynik < 0)
{

zamien(*wsk_a, dl_a - 2, *wsk_dl);

tmp_wynik = (end_a + 10) - end_b;

wynik += to_string(tmp_wynik);

}
else
{

wynik += to_string(tmp_wynik);

}

dl_a--;
}

for (int i = 0; i <= dl_a - 1; i++)
{
tmp_a = a[i];
wynik += tmp_a;
}
bool minus = false;
for (int i = wynik.length() - 1; i >= 0; i--)
{
if (wieksza)
{
wynik_return += '-';
wieksza = false;
minus = true;
}
wynik_return += wynik[i];
}

if (minus)
{
while (wynik_return[1] == '0')
{
wynik_return.erase(1, 1);
}
}
else
{
while (wynik_return[0] == '0' && (wynik_return[0] == '-' || wynik_return[0] != '-'))
{
wynik_return.erase(0, 1);
}
}

return wynik_return;

}

Функция деления: (добавлено одно условие, которое проверяет, если b == 1, чтобы улучшить скорость программы)

    string a=xa, b=xb, wynik;
long unsigned int tmp_wynik = 0;

while (a >= b || a.length() > b.length())
{
if (a >= b && b.length() > a.length())
break;
if (b == "1")
return a;
a = odejmowanie(a, b);
tmp_wynik++;
}
wynik = to_string(tmp_wynik);

return wynik;

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector