.NET 4.x Деление столбиком двух чисел - C#
Формулировка задачи:
Просто поделить два произвольно больших числа - вывести целую часть и остачу. Буду очень благодарен за любую помощь
Казалось бы очень просто, но не знаю как правильно сделать, кровь из носу надо это!Решение задачи: «.NET 4.x Деление столбиком двух чисел»
textual
Листинг программы
private static void Main(string[] args)
{
string first = "1000000";
string second = "0000033";
// Длинны строк(массивов) должны совпадать
int[] fNum = first.Select(f => f - '0').ToArray();
int[] sNum = second.Select(f => f - '0').ToArray();
Solve(fNum, sNum);
}
private static void Solve(int[] a, int[] b)
{
long count = 0;
while (BiggerOrEqual(a, b))
{
a = Minus(a, b);
count++;
}
Console.WriteLine("Целая часть: {0}", String.Join("", count));
Console.WriteLine("Остаток: {0}", String.Join("", a));
}
private static bool BiggerOrEqual(int[] a, int[] b)
{
// a больше b
bool result = true;
for (int i = 0; i < a.Length; i++)
{
if (a[i] > b[i]) return true;
else if (a[i] < b[i]) return false;
}
return result;
}
private static int[] Minus(int[] first, int[] second)
{
int[] result = new int[first.Length];
for (int i = first.Length - 1; i >= 0; i--)
{
if (first[i] < second[i] || first[i] < 0)
{
first[i - 1] -= 1;
first[i] = 10 + first[i];
}
result[i] = first[i] - second[i];
}
return result;
}