Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2016, 00:06   #1
plaob
Новичок
Джуниор
 
Регистрация: 29.03.2016
Сообщений: 1
По умолчанию Создать класс Fraction для работы с дробными числами

Задание
Цитата:
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено двумя полями: целая часть – длинное целое со знаком, дробная часть – беззнаковое короткое целое. Реализовать арифметические операции сложения, вычитания, умножения и операции сравнения.
Должны быть реализованы следующие методы:
– метод инициализации init;
– ввод с клавиатуры read;
– вывод на экран display;
– преобразование в строку toString.

Задание должно быть реализовано двумя способами:
- тип данных представляется структурой с необходимыми полями, а операции реализуются как внешние функции, которые получают объекты данного типа в качестве аргументов;
– как класс с закрытыми полями, где операции реализуются как методы класса.
Вот, что у меня вышло.

Код:
#include <cstdio>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
class Fraction {
 
protected:
long first;
unsigned short second;
 
public:
    Fraction() {
        first=0;
        second=0;
    }
 
    void init(long f,unsigned short s) {
        first=f;
        second=s;
    }
        
    void read() {
        cout << "\nCelaya chast': "; cin >> first;
        cout << "Drobnaya chast': "; cin >> second;
    }
 
    void display(){
        cout << first << "." << second << endl;
    }
 
    static void Add(Fraction a,Fraction b){
        cout << "\nAddition: " << a.first+b.first << "."<< a.second+b.second << endl;
    }
 
    static void Sub(Fraction a,Fraction b){
        cout << "Subtraction: " << a.first-b.first << "." << a.second-b.second << endl;
    }
 
    static void Mul(Fraction a,Fraction b){
        cout << "Multiplication: " << a.first*b.first << "." << a.second*b.second << endl;
    }
 
    static void Equal(Fraction a,Fraction b){
        if(a.first==b.first && a.second==b.second)
            { 
                cout << "Are Equal" << endl;
            }
        else {
            if((a.first-b.first)>0){
                cout << "Number 1 > Number 2\n\n";
            }
            else {
                cout << "Number 1 < Number 2\n\n";
            }
        }
    };
    };
 
int main()
{
    Fraction N, M, A;
    N.read();
    cout << "\nNumber 1: ";
    N.display();
    M.read();
    cout << "\nNumber 2: ";
    M.display();
    A.Add(N,M);
    A.Sub(N,M);
    A.Mul(N,M);
    A.Equal(N,M);
    system ("pause");
    return 0;
}
Хотелось бы узнать, правильно ли я начал делать?
Как мне сделать преобразование в строку toString?
plaob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс для работы с двумерным массивом целых чисел (C++) Leno4ka805 Помощь студентам 2 29.11.2013 09:19
Создать класс Date для работы с датами в формате «год.месяц.день» (Стандартная задачка для студентов на C#) roomatan C# (си шарп) 1 13.10.2013 08:55
Реализовать класс FazzyNumber для работы с нечеткими числами, С++. Mashen'ka3 Общие вопросы C/C++ 0 23.05.2013 23:29
Создание класса для работы с дробными числами.Язык Си++. Salatiq Помощь студентам 0 17.05.2012 16:52
Написать класс для работы с двоичными числами в Visual C++ 2008 Maxs Фриланс 1 23.12.2009 21:07