Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 18 стр.

UptoLike

17
дробной части. Именно такой вид формируется в операции преобразования
дроби в строку.
// операция получения строкового представления дроби
static public implicit operator string(Fraction ob)
{
string res = "";
// знак числа выводится, только если число отрицательно
if (ob.sign < 0)
res = res + "-";
// если целая часть не равна 0, выводим ее
if (ob.intPart != 0)
res = res + ob.intPart;
// дробная часть печатается, если числитель не равен 0
if (ob.numerator != 0)
res = res + " " + ob.numerator + "/" + ob.denominator;
// если и целая часть и дробная часть равны 0,
// то число равно 0
if (ob.intPart == 0 && ob.numerator == 0)
res = "0";
return res;
}
В том же формате будет осуществляться и ввод данных из символьной
строки. В методе Parse() производится выделение составных частей
числа знака, целой части, числителя и знаменателя.
// метод получения дроби из строки
public static Fraction Parse(string str)
{
int intPart, numerator, denominator, sign;
// разделение строки на подстроки
// с помощью разделителя-пробела
string [] strs=str.Split(' ');
string[] strs1;
Fraction res;
if (strs.Length == 1)
{
// в строке не было найдено пробелов
// производим разделение строки по символу ‘/’
strs1 = str.Split('/');
if (strs1.Length == 1)
{
// число задано в виде только целой части
// выделяем целую часть
intPart = int.Parse(strs1[0]);
// в зависимости от значения целой части,
// формируем новую дробь
if (intPart!=0)
дробной части. Именно такой вид формируется в операции преобразования
дроби в строку.

     // операция получения строкового представления дроби
     static public implicit operator string(Fraction ob)
     {
        string res = "";
        // знак числа выводится, только если число отрицательно
        if (ob.sign < 0)
           res = res + "-";
        // если целая часть не равна 0, выводим ее
        if (ob.intPart != 0)
           res = res + ob.intPart;
        // дробная часть печатается, если числитель не равен 0
        if (ob.numerator != 0)
           res = res + " " + ob.numerator + "/" + ob.denominator;
        // если и целая часть и дробная часть равны 0,
        // то число равно 0
        if (ob.intPart == 0 && ob.numerator == 0)
           res = "0";
        return res;
     }

     В том же формате будет осуществляться и ввод данных из символьной
строки. В методе Parse() производится выделение составных частей
числа – знака, целой части, числителя и знаменателя.

     // метод получения дроби из строки
     public static Fraction Parse(string str)
     {
        int intPart, numerator, denominator, sign;
         // разделение строки на подстроки
         // с помощью разделителя-пробела
         string [] strs=str.Split(' ');
        string[] strs1;
        Fraction res;
        if (strs.Length == 1)
        {
            // в строке не было найдено пробелов
            // производим разделение строки по символу ‘/’
            strs1 = str.Split('/');
            if (strs1.Length == 1)
            {
               // число задано в виде только целой части
               // выделяем целую часть
               intPart = int.Parse(strs1[0]);
               // в зависимости от значения целой части,
               // формируем новую дробь
               if (intPart!=0)

17