Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [c++]классы 
V
    Опции темы
wir
Дата 14.12.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 24.6.2009

Репутация: нет
Всего: -2



Помогите пожалуйста smile 
Реализовать класс для работы с объектом рациональная дробь (вида  ). Выполнить операции: сложения (вычитания) двух дробей; приведения дроби к несократимому виду; сравнения двух дробей.
PM MAIL   Вверх
Luyan
Дата 14.12.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 5
Всего: 7



Цитата(wir @  14.12.2009,  15:25 Найти цитируемый пост)
рациональная дробь (вида  )

какого вида? что в числителе и что в знаменателе должно стоять?
PM   Вверх
wir
Дата 14.12.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 24.6.2009

Репутация: нет
Всего: -2



Цитата(Luyan @ 14.12.2009,  18:02)
Цитата(wir @  14.12.2009,  15:25 Найти цитируемый пост)
рациональная дробь (вида  )

какого вида? что в числителе и что в знаменателе должно стоять?
m/n

m/n
PM MAIL   Вверх
Luyan
Дата 14.12.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 5
Всего: 7



Цитата(wir @  14.12.2009,  15:25 Найти цитируемый пост)
сравнения двух дробей.

какие? поясни.

Цитата(wir @  14.12.2009,  15:25 Найти цитируемый пост)
сложения (вычитания) двух дробей; приведения дроби к несократимому виду;

здесь:
Код

#include <iostream>
using namespace std;

class Fraction
{
private:
    int Nod (int x, int y); // Нахождене наибольшего общего делителя
    int a, b; // числитель, знаминатель
public:
    Fraction(int x=0, int y=1)
    {
        a=x;
        b=y;
    }
    Fraction(Fraction& x) // Конструктор копирования
    {
        a=x.a;
        b=x.b;
    }

    void Read(); // Ввод дроби
    void Short(); // Сокращение дроби
    void Show(); // Метод вывода на экран

    Fraction operator+(Fraction& x);
    Fraction operator-(Fraction& x);
};


void Fraction::Show()
{
    cout << a << "/" << b << endl;
}
void Fraction::Read()
{
    int x,y;
    cout << "Enter fraction\n" ;
    cout << "a = " ; cin >> x;
    cout << "b = " ; cin >> y;
    while(y==0)
    {
        cout << " b = " ; cin >> y;
    }
    a=x;b=y;
}
// Нахождене наибольшего общего делителя
int Fraction::Nod (int x, int y)
{
    while (x!=y)
    {
        if(x>y)
            if(x%y!=0)
                x=x%y;
            else x=y;
        else
            if (y%x!=0)
                y=y%x;
            else y=x;
    }
    return x;
}
void Fraction::Short()
{
    if(a==0)
        return;
    int n=Nod(a,b);
    a=a/n;
    b=b/n;
}
Fraction Fraction::operator+(Fraction& x)
{
    Fraction n;
    n.b=(b*x.b)/Nod(b,x.b);
    n.a=a*n.b/b + x.a*n.b/x.b;
    return n;
}
Fraction Fraction::operator-(Fraction& x)
{
    Fraction n;
    n.b=(b*x.b)/Nod(b,x.b);
    n.a=a*n.b/b - x.a*n.b/x.b;
    return n;    
}
int main()
{
    Fraction  F1, F2, F3; // создаю 3 дроби

    F1.Read(); // ввожу значения дроби 1
    F1.Short(); //привожу к несократимому виду
    cout << "F1: ";
    F1.Show(); // вывожу дробь

    F2.Read();
    F2.Short();
    cout << "F2: ";
    F2.Show();

    cout << "F1 + F2" << endl;
    F3 = F1 + F2;

    F3.Short();
    F3.Show();

    cout << "F1 - F2" << endl;
    F3 = F1 - F2;

    F3.Short();
    F3.Show();

    system("pause");
    return 0;
}



Это сообщение отредактировал(а) Luyan - 14.12.2009, 20:10
PM   Вверх
wir
Дата 14.12.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 24.6.2009

Репутация: нет
Всего: -2



1/2 < 3/2 ;
1/2 > 1/3
PM MAIL   Вверх
Luyan
Дата 14.12.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 5
Всего: 7



добавь в класс:
Код

bool operator>(Fraction& x)
{
    return(x.a*b < x.b*a);
}
bool operator<(Fraction& x)
{
    return(x.a*b > x.b*a);
}


PM   Вверх
wir
Дата 15.12.2009, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 24.6.2009

Репутация: нет
Всего: -2



Цитата(Luyan @ 14.12.2009,  22:17)
добавь в класс:
Код

bool operator>(Fraction& x)
{
    return(x.a*b < x.b*a);
}
bool operator<(Fraction& x)
{
    return(x.a*b > x.b*a);
}

спасибо огромное smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.