Форум программистов, компьютерный форум CyberForum.ru

Разность дроби и целого числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Параметр в экземпляре класса http://www.cyberforum.ru/cpp-beginners/thread817253.html
Добрый день всем. имеется обрывок класса template <class TKey, class TStoredData> class FixedCache { public: enum TRemoveStrategy {
C++ Если вдруг IntelliSense оказался вдруг Часто возникают проблемы с работой IntelliSense. Пропадает всеми любимое подчеркивание ошибок и т.д. Данная беда особенно характерна для Windows XP, в связи с этим Microsoft выпустило исправление. Действенно, но требует лицензионного соглашения. Хотя my vc2010 скачана с нэта и успешно crak-crak, - исправление успешно решило трабл. Так что, всем нуждающимся ссыль в помощь. )) http://www.cyberforum.ru/cpp-beginners/thread817248.html
C++ Классы - ошибка в деструкторе
У меня сейчас такое "задание": опередить класс длинного целого числа (длинная арифметика), для сохранения которого необходимо использовать однонаправленный связной список. Конструктор создаёт всего-лишь первый элемент списка "Head" со значениями data = NULL, next = NULL. При чтении числа значения заносятся в конец списка. В итоге данный деструктор выдаёт ошибку при удалении двух чисел в конце...
Зацикливается make (makefile) C++
Решил освоить makefile Создаю простейшую программу, состоящую из единственного файла main.cpp Создаю makefile (makefile): all: g++ main.cpp -o test Создаю батник: make
C++ Дано предложение. Напечатать все различные слова http://www.cyberforum.ru/cpp-beginners/thread817221.html
Здравствуйте уважаемые форумчане. Дано предложение. Напечатать все различные слова... Как тут быть, какие идеи..?
C++ STL бинарное дерево Доброго времени суток!:) Изучаю STL, пока поверхностно прошелся по контейнерам, но не встретил деревьев... хотя set, multiset, map и multimap реализованы на основе бинарных деревьев... и у меня возник вопрос, каким образом можно реализовать бинарное дерево с помощью STL, не каждый раз же вручную писать.... Заранее спасибо!:) подробнее

Показать сообщение отдельно
Trisha Ray
80 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 93
24.03.2013, 17:13     Разность дроби и целого числа
Нужно перегрузить операции "-" и "=".

Конструкторы класса должны преобразовывать оба операнда в числовой формат обыкновенной дроби и метод, реализующий алгоритм Евклида.

Не могу понять, как сделать функции перегрузки.

Помогите, пожалуйста!

Код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
int evclide(int,int);
 
class Fraction
{
private: 
    int nom;
    int den;
public:
    Fraction (char*);
    Fraction (int n=0, int m=1):nom(n),den(m) {};
    Fraction operator - (const Fraction &b);
    Fraction operator = (const Fraction &c);
    operator char*();
    void reduce();
};
 
Fraction Fraction :: operator - (const Fraction &b)
{
}
 
Fraction Fraction::operator = (const Fraction &c)
{
    if(&c == this) return *this;
 
 
}
 
Fraction :: Fraction (char* s)
{
    char* p =strchr(s,'/');
 
    den=1;
 
    if(p!=NULL)
    {
        *(p++)='\0';
        den=atoi(p);
    }
 
    nom=atoi(s);
}
 
Fraction :: operator char*()
{
    static char s[32];
    sprintf(s,"%d/%d",nom,den);
    return s;
}
 
void Fraction :: reduce()
{
    int gmd = evclide(abs(nom),den);
 
    nom /= gmd;
    den /= gmd;
    return;
}
 
int evclide(int n, int m)
{
    int r=1;
 
    while(n!=0)
    {
        r=m%n;
        m=n;
        n=r;
    }
 
    return (m);
}
 
int main(int argc, char* argv[])
{
    if(argc<3)
        return(puts("Usage: enter nom/den + number "));
 
    Fraction a(argv[1]);
    Fraction b(argv[2]);
    Fraction c;
 
    a.reduce();
    c=a+b;
 
    cout << (char*)c << endl;
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru