Калькулятор обыкновенных дробей - C#
Формулировка задачи:
Пытаюсь селать калькулятор для обыкновенных дробей.Пока застрял на их сложении.Как видно на картинке имеется 6 текстбоксов первые четыре - начальные дроби последние 2-ая конечная дробь.Делаю все так-перемножаю знаменатели тем самым получаю общий знаменатель ну потом вывожу множители для обеих дробей ну и все перевожу в конечную дробь вроде все теперь эту дробь надо сократит, для этого есть НОД, но в этом то и проблема использовал все возможные алгоритмы НОД но они как то не так работают.Можете помочь с НОД?
mnoj1 = tb2 * tb4/tb2; mnoj2 = tb2 * tb4 / tb4; znam = tb2*tb4; chisl=mnoj1*tb1 + mnoj2*tb3;//так получаю числитель конечной дроби, теперь остается сократить.
Решение задачи: «Калькулятор обыкновенных дробей»
textual
Листинг программы
private void Calc() { int ch1 = Convert.ToInt32(textBox1.Text), ch2 = Convert.ToInt32(textBox3.Text), ch3; int zn1 = Convert.ToInt32(textBox2.Text), zn2 = Convert.ToInt32(textBox4.Text), zn3; zn3 = zn1 * zn2; ch3 = ch1 * zn2 + ch2 * zn1; int div = GCD(ch3, zn3); textBox5.Text=(ch3 / div).ToString(); textBox6.Text=(zn3 / div).ToString(); } int GCD(int a, int b) { if (a == 0) return b; if (b == 0) return a; if (a == b) return a; if (a == 1 || b == 1) return 1; if ((a % 2 == 0) && (b % 2 == 0)) return 2 * GCD(a / 2, b / 2); if ((a % 2 == 0) && (b % 2 != 0)) return GCD(a / 2, b); if ((a % 2 != 0) && (b % 2 == 0)) return GCD(a, b / 2); return GCD(b, (int)Math.Abs(a - b)); }