public Drob Pow(int x) // степень { Drob t = new Drob(Math.Pow(c, x), Math.Pow(z, x)); Drob.SetFormat(t);//сокращаем дробь return(t); }
//процедура по сокращению дроби public static Drob SetFormat(Drob a) { double max = 0; //выбираем что больше числитель или знаменатель if (a.c > a.z) { max = Math.Abs(a.z);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными } else { max = Math.Abs(a.c);//ВНИМАНИЕ! берем по модулю, что работало и с отрицательными } //поиск от максимума до 2 for (double i = max; i >= 2; i--) { //такого числа, поделив на которое бы делилось без //остатка и на числитель и на знаменатель if ((a.c % i == 0) & (a.z % i == 0)) { a.c = a.c / i; a.z = a.z / i; } } //Определяемся со знаком //если в знаменателе минус, поднимаем его наверх if ((a.z < 0)) { a.c = -1 * (a.c); a.z = Math.Abs(a.z); } return(a); //возращаем результат }
public Drob sqrt() // извлечение корня { Drob t = new Drob(Math.Sqrt(c), Math.Sqrt(z)); Drob.SetFormat(t);//сокращаем дробь return(t); }
public static Drob operator /(Drob a, Drob b) //деление дробей { Drob t = new Drob(1, 1); //создание и инициализация новой дроби t.c = (a.c * b.z); //числитель новой дроби t.z = a.z * b.c; //знаменатель новой дроби Drob.SetFormat(t); //сокращаем дробь return(t); //возвращаем результат }
private void Sqrt_Click(object sender, EventArgs e) // корень { try { znak = '√'; a = Fill(); string rezult = "√ " + a.ToString(); rez.Text = rezult; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void button14_Click(object sender, EventArgs e) { try { if ((textBox1.Text != "") && (textBox2.Text != "") && (textBox3.Text != "")) { secondDrob.SetDrob(ch: Convert.ToInt32(textBox1.Text), chisl: Convert.ToInt32(textBox2.Text), znam: Convert.ToInt32(textBox3.Text)); // Запоминание операции switch (currentoper) { case "+": result = firstDrob.Plus(secondDrob); break; case "-": result = firstDrob.Minus(secondDrob); break; case "/": result = firstDrob.Division(secondDrob); break; case "*": result = firstDrob.Multiplication(secondDrob); break; default: break; } // Очистка информации об операции currentoper = ""; //Вывод результата textBox1.Text = result.Ch.ToString(); textBox2.Text = result.Chisl.ToString(); textBox3.Text = result.Znam.ToString(); //Чистим информацию о дробях firstDrob.CleanDrob(); secondDrob.CleanDrob(); result.CleanDrob(); textBox1.Focus(); button14.Enabled = false; } } catch (Exception b) { MessageBox.Show("Ошибка"); } }
private void Power_Click(object sender, EventArgs e) // степень { try { znak = '^'; a = Fill(); pow.Enabled = true; string rezult = a.ToString() + "^"; rez.Text = rezult; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Умножение public Drob Multiplication(Drob secondDrob) { this.Dtrans(); secondDrob.Dtrans(); Drob result = new Drob(); result.chisl = this.chisl * secondDrob.chisl; result.znam = this.znam * secondDrob.znam; return(result); }
private void Amount_Click(object sender, EventArgs e) // + { try { znak = '+'; a = Fill(); string rezult = a.ToString() + " + "; rez.Text = rezult; whole.Clear(); numerator.Clear(); denominator.Clear(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Вычитание public Drob Minus(Drob secondDrob) { this.Dtrans(); secondDrob.Dtrans(); Drob result = new Drob(); result.chisl = (this.chisl * secondDrob.znam) - (this.znam * secondDrob.chisl); result.znam = this.znam * secondDrob.znam; result.ReTrans(); return(result); }
private void Result_Click(object sender, EventArgs e) // = { try { Drob d = new Drob(); switch (znak) { case '+': b = Fill(); d = a + b; Drob.SetFormat(d); rez.Text += b.ToString() + " = " + d.ToString(); break; case '-': b = Fill(); d = a - b; Drob.SetFormat(d); rez.Text += b.ToString() + " = " + d.ToString(); break; case '*': b = Fill(); d = a * b; Drob.SetFormat(d); rez.Text += b.ToString() + " = " + d.ToString(); break; case '/': b = Fill(); d = a / b; Drob.SetFormat(d); rez.Text += b.ToString() + " = " + d.ToString(); break; case '√': d = a.sqrt(); rez.Text += " = " + d.ToString(); break; case '^': int u = Convert.ToInt32(pow.Text); d = a.Pow(u); rez.Text += u.ToString() + " = " + d.ToString(); break; } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private Drob Fill() { Drob c; if (whole.Text != "") { c = new Drob(Convert.ToDouble(whole.Text), Convert.ToDouble(numerator.Text), Convert.ToDouble(denominator.Text)); } else { c = new Drob(Convert.ToDouble(numerator.Text), Convert.ToDouble(denominator.Text)); } return(c); }