A = new РацДробь();
B = new
РацДробь();
...
A.Числитель = 1234;
A.Знаменатель = 5678;
...
// Вычислим E = (A+B*C)/D;
E = B.Умножить(C);
E = A.Прибавить(E);
E = E.Разделить(D);
// E = A.Прибавить(B.Умножить(C)).Разделить(D);
label3.Text =
Convert.ToString(E.Числитель) + "/"
+ Convert.ToString(E.Знаменатель);
Если бы был класс для рациональных дробей…
class РацДробь
{
public ulong Числитель, Знаменатель;
public РацДробь() {}
ulong НОД(ulong x, ulong y) {...}
void Сократить()
{
ulong t;
if (Числитель>Знаменатель)
t = НОД(Числитель, Знаменатель);
else
t = НОД(Знаменатель, Числитель);
Числитель /= t;
Знаменатель /= t;
}
public РацДробь Прибавить(РацДробь x)
{
РацДробь t = new РацДробь();
t.Числитель = Числитель * x.Знаменатель
+ x.Числитель * Знаменатель;
t.Знаменатель = Знаменатель * x.Знаменатель;
t.Сократить();
return t;
}
...
}
РацДробь A, B, C, D, E;
A = new РацДробь();
B = new РацДробь();
...
A.Числитель = 1234;
A.Знаменатель = 5678;
...
// Вычислим E = (A+B*C)/D;
E = B.Умножить(C);
E = A.Прибавить(E);
E = E.Разделить(D);
// E = A.Прибавить(B.Умножить(C)).Разделить(D);
label3.Text =
Convert.ToString(E.Числитель) + "/"
+ Convert.ToString(E.Знаменатель);
РацДробь A = new РацДробь(1234, 5678);
РацДробь B = new РацДробь(100);
...
E = (A+B*C)/D;
label3.Text = Convert.ToString(E);
//label3.Text = E.ToString();
class РацДробь
{
...
public РацДробь(ulong num, ulong den)
{
Числитель = num;
Знаменатель = den;
}
public static РацДробь operator +(РацДробь x, РацДробь y)
{
РацДробь t = new РацДробь(
x.Числитель*y.Знаменатель + y.Числитель*x.Знаменатель,
x.Знаменатель*y.Знаменатель);
t.Сократить();
return t;
}
public override string ToString()
{
Сократить();
string s = Convert.ToString(Числитель);
if (Знаменатель!=1)
s += "/" + Convert.ToString(Знаменатель);
return s;
}
...
}