.NET 4.x Исправить расчет и вывод дроби - C#
Формулировка задачи:
Здравствуйте! Помогите пожалуйста!
Нужно исправить вывод. Вожу например: 5 7 * 5 7 и на выходе получается 25/0. Вот как мне сделать чтобы считало знаменатель?using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace lab_6_8 { class Program { static void Main(string[] args) { try { NewClass a1 = new NewClass(); a1.a = 2.5; double tmp = (double)a1; int tmp1 = (int)a1; YoungClass young = new YoungClass(); OldClass old = new OldClass(); string[] StrMass = new string[5]; string str; double a, b, answe = 0, answe_1 = 0, a_1, a_2, b_1, b_2; Console.WriteLine("Введите через пробел числа a_1 a_2 b_1 b_2 (a_1/a_2 знак b_1/b_2):"); str = Console.ReadLine(); StrMass = str.Split(' '); a_1 = Convert.ToDouble(StrMass[0]); a_2 = Convert.ToDouble(StrMass[1]); a = a_1 / a_2; b_1 = Convert.ToDouble(StrMass[3]); b_2 = Convert.ToDouble(StrMass[4]); b = b_1 / b_2; if (StrMass[2] == "/") { //answe = a / b; answe = a_1 * b_2; answe_1 = b_1 * a_2; } if (StrMass[2] == "*") //answe = a * b; answe = a_1 * b_1; answe_1 = a_2 * b_2; if (StrMass[2] == "+") //answe = a + b; answe = a_1 + b_1; answe_1 = a_2 + b_2; if (StrMass[2] == "-") //answe = a - b; answe = a_1 - b_1; answe_1 = a_2 - b_2; Console.WriteLine(tmp); Console.WriteLine(tmp1); Console.WriteLine(a.CompareTo(b)); Console.WriteLine("Вывод: {0}/{1}",(int)answe,(int)answe_1); young.Wow += old.old; young.Count(a); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("конец"); } Console.ReadKey(); } } class NewClass : IComparable { public double a; public double b; public int CompareTo(object obj) { var sort = (NewClass)obj; return a.CompareTo(sort.a); } public static NewClass operator +(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a + obj2.a; arr.b = obj1.b + obj2.b; return arr; } public static NewClass operator /(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a / obj2.a; arr.b = obj1.b / obj2.b; return arr; } public static NewClass operator -(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a - obj2.a; arr.b = obj1.b - obj2.b; return arr; } public static NewClass operator *(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a * obj2.a; arr.b = obj1.b * obj2.b; return arr; } public static explicit operator double(NewClass obj) { return (double)(obj.a); } public static implicit operator int(NewClass obj) { return (int)(obj.a); } } class YoungClass { public delegate void Method(); public event Method Wow; public double Count(double a) { double ten = 10.0; if (a < ten) Wow(); if (a > ten) Wow(); return 0; } } class OldClass { public void old() { // Console.WriteLine("число a меньше 10"); } } }
Решение задачи: «.NET 4.x Исправить расчет и вывод дроби»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace lab_6_8 { class Program { static void Main(string[] args) { try { NewClass a1 = new NewClass(); a1.a = 2.5; double tmp = (double)a1; int tmp1 = (int)a1; YoungClass young = new YoungClass(); OldClass old = new OldClass(); string[] strMass = new string[5]; string str; double a, b, answe = 0, answe_1 = 0, a_1, a_2, b_1, b_2; Console.WriteLine("Введите через пробел числа a_1 a_2 b_1 b_2 (a_1/a_2 знак b_1/b_2):"); str = Console.ReadLine(); strMass = str.Split(' '); a_1 = Convert.ToDouble(strMass[0]); a_2 = Convert.ToDouble(strMass[1]); a = a_1 / a_2; b_1 = Convert.ToDouble(strMass[3]); b_2 = Convert.ToDouble(strMass[4]); b = b_1 / b_2; switch (strMass[2]) { case "/": answe = a_1 * b_2; answe_1 = b_1 * a_2; break; case "*": answe = a_1 * b_1; answe_1 = a_2 * b_2; break; case "+": answe = a_1 + b_1; answe_1 = a_2 + b_2; break; case "-": answe = a_1 - b_1; answe_1 = a_2 - b_2; break; default : throw new Exception(string.Format("Ошибка ввода, вводить можно только "/", "*", "+", "-" ,а введено {0}", strMass[2])); } Console.WriteLine(tmp); Console.WriteLine(tmp1); Console.WriteLine(a.CompareTo(b)); Console.WriteLine("Вывод: {0}/{1}", (int)answe, (int)answe_1); young.Wow += old.old; young.Count(a); } catch (Exception e) { Console.WriteLine(e.Message); } finally { Console.WriteLine("конец"); } Console.ReadKey(); } } class NewClass : IComparable { public double a; public double b; public int CompareTo(object obj) { var sort = (NewClass)obj; return a.CompareTo(sort.a); } public static NewClass operator +(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a + obj2.a; arr.b = obj1.b + obj2.b; return arr; } public static NewClass operator /(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a / obj2.a; arr.b = obj1.b / obj2.b; return arr; } public static NewClass operator -(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a - obj2.a; arr.b = obj1.b - obj2.b; return arr; } public static NewClass operator *(NewClass obj1, NewClass obj2) { NewClass arr = new NewClass(); arr.a = obj1.a * obj2.a; arr.b = obj1.b * obj2.b; return arr; } public static explicit operator double(NewClass obj) { return (double)(obj.a); } public static implicit operator int(NewClass obj) { return (int)(obj.a); } } class YoungClass { public delegate void Method(); public event Method Wow; public double Count(double a) { double ten = 10.0; if (a < ten) Wow(); if (a > ten) Wow(); return 0; } } class OldClass { public void old() { // Console.WriteLine("число a меньше 10"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д