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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SleeperHD
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 5
#1

Исправить ошибки в классе Fraction - C++

15.04.2013, 12:57. Просмотров 429. Ответов 2
Метки нет (Все метки)

Требуется создать класс Fraction с двумя закрытыми переменными: числитель и знаменатель дроби (целые числа). Написать методы:
1. Конструктор без параметров
2. Перегрузите оператор =.
3. Перегрузите операторы - и / для сложения и умножения дробей.
4. Организуйте ввод и вывод дроби, перегрузив операторы << и >> для потокового ввода/вывода.
Используя класс Fraction написать программу, которая запрашивает у пользователя две обыкновенные дроби, вычисляет их разность и частное и выводит результаты на консоль.

В общем то все это я сделал, но при делении программа делит результат разности на вторую дробь, в чем проблема - никак не разберусь. Также требуется содержать это все в трех файлах: функция main, сам класс с прототипами методов, файл с описанием методов и операторов.

1) main
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "Fraction.h"
int main()
{
    setlocale (LC_ALL, "Russian");
    Fraction a,b;
    cout << "Введите дробь 1:"; 
    cin>>a;
    cout << "Введите дробь 2:";
    cin>>b;
    cout<<"Разность: "<<a-b<<endl;
    cout<<"Частное: " <<a/b<<endl;
}
2) класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include <iostream>
using namespace std;
class Fraction
{
private: int n,d;
public:
    
    Fraction();
    Fraction& operator=(Fraction& x);
    Fraction& operator-(Fraction& v);
    Fraction& operator/(Fraction& u);
    friend ostream& operator << (ostream& out, Fraction &f);
    friend istream& operator >> (istream& in, Fraction &f);
};
3) методы и операторы
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
#include "Fraction.h"
 
 
Fraction::Fraction(): n(0),d(0) {}
Fraction& Fraction::operator=(Fraction& x)
{
n = x.n;
d = x.d;
return *this;
}
Fraction& Fraction::operator-(Fraction& v)
 {
    
n= n*v.d-d*v.n;
d= d*v.d;
return *this;
 
}
 Fraction operator-(Fraction& n,Fraction& d)
{
    return Fraction(n) - d; 
};
 Fraction& Fraction::operator/(Fraction& u)
  {
      n=n*u.d;
      d=d*u.n;
      return *this;
  }
  Fraction operator/(Fraction& n,Fraction& d)
{
    return Fraction(n) / d; 
};
    ostream& operator << (ostream& out, Fraction &f)
{
out<<f.n<<'/'<<f.d;
return out;
}
    istream& operator >> (istream& in, Fraction &f)
{
char ch;
in>>f.n>>ch>>f.d;
return in;
 
}
Помогите пожалуйста, завтра сдавать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 12:57     Исправить ошибки в классе Fraction
Посмотрите здесь:

Помогите исправить ошибки в классе - C++
Здравствуйте. Наконец то дописываю класс, но опять столкнулся с кое какими проблемами. Задание: написать класс очередь через массив. Вот...

Помогите исправить ошибки в классе - C++
Здравствуйте. Помогите пожалуйста исправить ошибки. Их очень много, но они однотипные. Подскажите как исправить. Это должен быть класс, с...

Нужно исправить ошибки в классе комплексных чисел - C++
Мой мозг породил нечто ужасное к ночи, и оно не желает работать. Задание из рода &quot;Бред обыкновенный&quot;. Надо исправить ошибки, а голова не...

Исправить ошибки в классе "Список строк" - C++
Построить класс СПИСОК СТРОК со свойствами: кол-во строк, динамический массив строк.Конструктор следует определить с одним параметром...

Исправить метод ShowSQ в классе Antiprism - C++
#include&lt;graphics.h&gt; #include&lt;dos.h&gt; #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; ...

Найти ошибки в шаблонном классе - C++
Пишу шаблонный класс в Qt, и, конечно же, на моих любимых шаблонах не обошлось без проблем :(. Структура кода стандартная - *.h + *.cpp. В...

Не работает операция сложения в классе. Исправить код - C++
Сделал класс типа список &quot;Unit2.h&quot; //--------------------------------------------------------------------------- #ifndef Unit2H ...

лезут ошибки в классе, не могу разобраться - C++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; class myString { public: char *str; ...

Реализация массива в классе (ошибка компиляции, исправить код) - C++
Здравствуйте форумчане написал я программу реализации массива в классе но не работает по неизвестным мне причинам, вот надеюсь на вашу...

Конструктор в классе-наследнике не выполняется. Подскажите как исправить? - C++
class Base{ public: virtual char f1()=0; virtual float f2()=0; }; class D1:public Base { private: char c; public:


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,908
15.04.2013, 22:06     Исправить ошибки в классе Fraction #2
Fraction::Fraction(): n(0),d(0) {}
Исправьте знаменатель на 1(на 0 делить нельзя).
Fraction& operator=(Fraction& x);
Fraction& operator-(Fraction& v);
Fraction& operator/(Fraction& u);
friend ostream& operator << (ostream& out, Fraction &f);
friend istream& operator >> (istream& in, Fraction &f);
C++
1
2
3
4
5
Fraction& operator=(const Fraction& x);
Fraction  operator-(const Fraction& v) const;
Fraction  operator/(const Fraction& u) const;
friend std::ostream& operator << (std::ostream& out, const Fraction& f);
friend std::istream& operator >> (std::istream& in, Fraction& f);
Операторы - и / должны возвращать временный объект, а не менять данные того объекта, который их вызывает(как это сделано у вас), например:
C++
1
2
3
4
5
6
7
Fraction Fraction::operator-(const Fraction& v) const
{
    Fraction t;           // временный объект
    t.n = n*v.d-d*v.n;
    t.d = d*v.d;
    return t;
}
Fraction operator-(Fraction& n,Fraction& d)
Fraction operator/(Fraction& n,Fraction& d)
Это не нужно.

Добавлено через 1 минуту
Ну и проверку деления на 0 тоже не помешало бы сделать.
SleeperHD
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 5
16.04.2013, 13:07  [ТС]     Исправить ошибки в классе Fraction #3
Спасибо огромное, а проверка деления на 0 (создание исключения) - это уже следующее задание, постараюсь сделать его сам
Yandex
Объявления
16.04.2013, 13:07     Исправить ошибки в классе Fraction
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru