.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");
}
}
}