0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 3
1

Класс "Рациональная дробь"

22.10.2015, 00:31. Показов 2163. Ответов 4
Метки нет (Все метки)

Реализовать класс Rational, используя два массива из 100 элементов типа unsigned char для представления числителя и знаменателя. Каждый элемент является десятичной цифрой. Младшая цифра имеет меньший индекс (единицы - в нулевом элементе массива). Реальный размер массива задается как аргумент конструктора инициализации.

Вот код:
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 "stdafx.h"
 
class Rational {
public:
 
    void init();
    void Read();
    void Display(int a, int b);
    void Display(int a);
    void add();
    void sub();
    void mul();
    void div();
    void sravn(double a, double b);
    double a, b, c, d;
    void reduce(double a, double b, double c, double d);
    unsigned char arr1[100];
    unsigned char arr2[100];
};
    
    double a, b, c, d;
    void init() {
 
    }
 
    void Read() {
        cout << "I number" << endl;
        cout << "Enter numerator: ";
        cin >> a;
        cout << "\nEnter denominator: ";
        cin >> b;
        cout << "\nII number" << endl;
        cout << "Enter numerator: ";
        cin >> c;
        cout << "\nEnter denominator: ";
        cin >> d;
    }
 
    void Display(int a, int b) {
        cout << a << "/" << b << endl;
    }
 
    void Display(int a) {
 
            if ((a / b)<(c / d))
                cout << "the first is less than the second" << endl;
 
            if ((a / b)>(c / d))
                cout << "the first is greater than the second" << endl;
            
            if ((a / b) == (c / d))
            cout << "the first is equal to the second" << endl;
            
    }
    
    void reduce(double a, double b) {
        Display(int(floor(a)), int(floor(b)));
    }
    void add() {
        cout << a << "/" << b <<" + "<<c << "/" << d << " = ";
        reduce((a*d + b*c), b*d);
    }
    
    void sub() {
        cout << a << "/" << b << " - " << c << "/" << d << " = ";
        reduce((a*d - b*c), b*d);
    }
 
    void mul() {
        cout << a << "/" << b << " * " << c << "/" << d << " = ";
        reduce(a*c, b*d);
    }
    
    void div() {
        cout << a << "/" << b << " / " << c << "/" << d << " = ";
        reduce(a*d, b*c);
    }
 
    void sravn(double a, double b) {
        Display(a > b ? 1 : a < b ? 2 : 3);
    }
 
    
 
 
int main() {
    Read();
    add();
    sub();
    mul();
    div();
    Display(a);
    system("pause");
    return 0;
}
stdafx.h :
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

Заранее спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2015, 00:31
Ответы с готовыми решениями:

Ввести класс для работы с объектом "рациональная дробь"
Ввести класс для работы с объектом &quot;рациональная дробь&quot;.Реализовать: а)сложение(вычитание) двух...

Класс для работы с объектом "рациональная дробь"
Надо ввести класс для работы с объектом &quot;рац.дробь&quot; и реализовать 1)умножение(деление) двух дробей...

Создать класс "Рациональная дробь"
Реализуйте класс Дробь. Необходимо хранить числитель и знаменатель в качестве переменных-членов....

Создать класс "Рациональная дробь"
Данные класса: числитель и знаменатель дроби. Функции класса: сложение, вычитание, умножение,...

4
26 / 26 / 17
Регистрация: 08.04.2012
Сообщений: 202
22.10.2015, 01:50 2
turbst, а можно задание полностью, а то по вашему коду не совсем понятно что вы хотите от той или иной функции.
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 3
22.10.2015, 02:01  [ТС] 3
Цитата Сообщение от ыфырф1992 Посмотреть сообщение
turbst, а можно задание полностью, а то по вашему коду не совсем понятно что вы хотите от той или иной функции.
На char'ы не обращайте внимания. Задание:
Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель, b — знаменатель. Создать класс Rational для работы с рациональными дробями. Обязательно должны быть реализованы операции:
сложения add, (а, b) + (с, d) = (ad + bc, bd)
вычитания sub, (a, b) - (с, d) = (ad - bc, bd)
умножения mul, (a, b) × (c, d) = (ac, bd)
деления div, (a, b) / (c, d) = (ad, bc)
сравнения equal, greate, less.
Должна быть реализована приватная функция сокращения дроби reduce, которая обязательно вызывается при выполнении арифметических операций.
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
22.10.2015, 08:41 4
Класс Rational - это одна дробь, а не две как у тебя. Никаких вещественных чисел не должно быть. Операции перегрузить.
0
26 / 26 / 17
Регистрация: 08.04.2012
Сообщений: 202
22.10.2015, 13:13 5
Цитата Сообщение от nmcf Посмотреть сообщение
Операции перегрузить
согласен не смотря на задание перегрузка операций выглядела бы уместней.
вот часть вашего задания, остальное попробуйте сделать сами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef RATIONAL_H_
#define RATIONAL_H_
class Rational
{
private:
    int a,b;
public:
    Rational(const int & a=0, const int & b=0);
    Rational add(const Rational & r);
    Rational sub(const Rational & r);
    Rational mul(const Rational & r);
    Rational div(const Rational & r);
    void show () const;
    //прототипы для функций сравнения будут выглядить так bool equal(const Rational & r);
};
#endif
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
#include"rational.h"
#include<iostream>
Rational::Rational(const int & a, const int & b):a(a),b(b)
{
}
Rational Rational::add(const Rational & r)
{
    Rational temp(a*r.b+b*r.a,b*r.b);
    return temp;
}
Rational Rational::sub(const Rational & r)
{
    Rational temp(a*r.b-b*r.a,b*r.b);
    return temp;
}
Rational Rational::mul(const Rational & r)
{
    Rational temp(a*r.a,b*r.b);
    return temp;
}
Rational Rational::div(const Rational & r)
{
    Rational temp(a*r.b,b*r.a);
    return temp;
}
void Rational::show () const
{
    std::cout<<a<<"/"<<b;
}
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
#include<iostream>
#include"rational.h"
int main()
{
    using std::cout;
    using std::endl;
    Rational r1(1,3);
    Rational r2(1,5);
    Rational temp;
    temp=r1.add(r2);
    cout<<"r1=";
    r1.show();
    cout<<", r2=";
    r2.show();
    cout<<"\n\nr1+r2=";
    temp.show();
 
    temp=r1.sub(r2);
    cout<<"\n\nr1-r2=";
    temp.show();
 
    temp=r1.mul(r2);
    cout<<"\n\nr1xr2=";
    temp.show();
 
    temp=r1.div(r2);
    cout<<"\n\nr1/r2=";
    temp.show();
    cout<<endl;
    system("pause");
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2015, 13:13
Помогаю со студенческими работами здесь

Класс "Рациональная дробь"
Здраствуйте, вот мой код. #include &lt;iostream&gt; using namespace std; class TCost {...

Перегрузка операций в классе "рациональная дробь"
Есть класс &quot;рациональная дробь&quot; с двумя закрытыми полями - числитель и знаменатель. Нужно...

Для класса "Рациональная дробь" перегрузить операторы сложения, вычитания, умножения и деления
Добрый вечер уважаемые участники форума. Прошу вас пожалуйста помочь с моим заданием....

Класс Рациональная дробь
Есть код, который выполняет операции между дробями (рациональное число, является отношением двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru