ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
}
// определение дружественной функции сложения
// целого числа и дроби
Fraction operator + (int a, Fraction c)
{
Fraction res;
Fraction b(0, 1, abs(a), a/abs(a)); // b = a
res = b + c; //сложение двух дробей
return res;
}
Аналогичным образом определяют и другие арифметические
операции.
Оператор "<<" осуществляет вывод дроби в привычном
математическом виде с учетом существования целой или дробной части.
Этот же оператор может использоваться и для записи дроби в файл. Для
последующего корректного прочтения данных из файла требуется
разделять два числа символом, отличным от пробела (поскольку пробел
является разделителем между целой и дробной частями числа).
Разделителем в данном случае является символ табуляции ('\t').
// операция печати дроби
ostream& operator << (ostream& out, Fraction& a)
{
// знак числа печатается только
// если число отрицательно
if (a.sign < 0)
out << "-";
// если целая часть не равна 0, выводим ее
if (a.intPart != 0)
out << a.intPart << " ";
// дробная часть печатается, если числитель не равен
if (a.numerator != 0)
out << a.numerator << "/" << a.denominator;
// если и целая часть и дробная часть равны 0,
// то число равно 0
if (a.intPart == 0 && a.numerator == 0)
out << "0";
// если вывод осуществляется в файл,
// используется символ '\t'
if(typeid(ofstream) == typeid(out))
out << "\t";
else out << " ";
return out;
}
129
Объектно-ориентированное программирование на С++
}
// определение дружественной функции сложения
// целого числа и дроби
Fraction operator + (int a, Fraction c)
{
Fraction res;
Fraction b(0, 1, abs(a), a/abs(a)); // b = a
res = b + c; //сложение двух дробей
return res;
}
Аналогичным образом определяют и другие арифметические
операции.
Оператор "<<" осуществляет вывод дроби в привычном
математическом виде с учетом существования целой или дробной части.
Этот же оператор может использоваться и для записи дроби в файл. Для
последующего корректного прочтения данных из файла требуется
разделять два числа символом, отличным от пробела (поскольку пробел
является разделителем между целой и дробной частями числа).
Разделителем в данном случае является символ табуляции ('\t').
// операция печати дроби
ostream& operator << (ostream& out, Fraction& a)
{
// знак числа печатается только
// если число отрицательно
if (a.sign < 0)
out << "-";
// если целая часть не равна 0, выводим ее
if (a.intPart != 0)
out << a.intPart << " ";
// дробная часть печатается, если числитель не равен
if (a.numerator != 0)
out << a.numerator << "/" << a.denominator;
// если и целая часть и дробная часть равны 0,
// то число равно 0
if (a.intPart == 0 && a.numerator == 0)
out << "0";
// если вывод осуществляется в файл,
// используется символ '\t'
if(typeid(ofstream) == typeid(out))
out << "\t";
else out << " ";
return out;
}
129
Страницы
- « первая
- ‹ предыдущая
- …
- 127
- 128
- 129
- 130
- 131
- …
- следующая ›
- последняя »
