Превратить рациональную дробь в десятичную. Возможен период. "1/3" должна превратиться в "0.(3)" - C#
Формулировка задачи:
Превратить рациональную дробь в десятичную. Возможен период. "1/3" должна превратиться в "0.(3)"
Решение задачи: «Превратить рациональную дробь в десятичную. Возможен период. "1/3" должна превратиться в "0.(3)"»
textual
Листинг программы
class Program { static string GetFracString(int a, int b) { if (b == 0) return "(not a number)"; var d = new StringBuilder(); // Убираем знак var sa = a < 0 ? -1 : 1; var sb = b < 0 ? -1 : 1; if (sa * sb == -1) d.Append('-'); a *= sa; b *= sb; // Выделяем целую часть d.Append(a / b); a = a % b; // Выделяем дробную часть if (a == 0) return d.ToString(); var rems = new int[b]; // остатки (можно List<int>) d.Append('.'); while (a > 0) { rems[a] = d.Length; a = a * 10; d.Append(a / b); a = a % b; if (rems[a] > 0) { d.Insert(rems[a], '('); d.Append(')'); break; } rems[a] = d.Length; } return d.ToString(); } static void Test(int a, int b) { Console.WriteLine("{0} : {1} = {2}", a, b, GetFracString(a, b)); } static void Main() { Test(-15, 3); Test(-15, -3); Test(-15, 0); Test(0, 15); Test(1221, 990); Test(10102, 99999); Test(10102 + 12345 * 99999, 99999); Test(12222, 990); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д