Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите, очень нужно, от этого зависит мой зачёт!

54K
23 декабря 2009 года
oliaaa
1 / / 23.12.2009
Помогите решить задачу, в общем ...хоть как
Реализовать абстрактный тип данных «Рациональная дробь»
вычитание двух дробей и проверка дроби на положительность;

[COLOR="Red"]Неверное название темы - 5 баллов нарушение.[/COLOR]
12K
25 декабря 2009 года
Ghox
297 / / 26.07.2009
Пример на C++
Код:
#include <iostream>
#include <cstdlib>
using namespace std;

class Fraction
{
    long int numerator;
    long int denominator;
    void reduce();
public:
    Fraction(long int, long int);
    Fraction(const Fraction&);
    Fraction operator-(const Fraction&) const;
    bool positive() const;
    void view() const;
};

Fraction::Fraction(long int n, long int d) : numerator(n), denominator(d)
{
    if(d == 0)
    {
        cout << "Error, denominator cannot be 0\n";
        exit(1);
    }
    reduce();
}

Fraction::Fraction(const Fraction& r) : numerator(r.numerator), denominator(r.denominator) {}

void Fraction::reduce()
{
    // сокращаем дробь:
    for(long divisor = 2; divisor <= numerator && divisor <= denominator; ++divisor)
        while(numerator % divisor == 0 && denominator % divisor == 0)
             // можно и так: while(!(numerator % divisor) && !(denominator % divisor))
        {
            numerator /= divisor;
            denominator /= divisor;
        }
    if(numerator == 0)
        denominator = 1;
}

Fraction Fraction::operator-(const Fraction& r) const
{
    long n1 = numerator * r.denominator;
    long n2 = r.numerator * denominator;
    d = denominator * r.denominator;
    Fraction result(n1 - n2, d);
    result.reduce();
    return result;
}

bool Fraction::positive() const
{
    return numerator > 0 && denominator > 0 || numerator < 0 && denominator < 0;
}

void Fraction::view() const
{
    cout << "Object Fraction:\n";
    cout << "Numerator = " << numerator << endl;
    cout << "Denominator = " << denominator << endl;
}

int main()
{
    Fraction F1(123, 29), F2(29, 123);
    F1.view();
    F2.view();
    cout << "Substracting:\n";
    Fraction F3 = F1 - F2;
    F3.view();
    if(F3.positive())
        cout << "is positive\n";
    else
        cout << "is non-positive\n";
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог