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

Перегрузки функции - C++

Восстановить пароль Регистрация
 
pr1me222
0 / 0 / 0
Регистрация: 11.05.2011
Сообщений: 71
20.01.2013, 01:33     Перегрузки функции #1
вот задание:
Задание 1: Разработка класса.
Разработайте класс FRACTION.
Элемент класса:
? числитель;
? знаменатель.
Методы:

? конструктор без параметров ( по умолчанию);
? конструктор с параметрами;
? конструктор копирования;
? деструктор;
? метод, осуществляющий ввод значений полей класса с клавиатуры;
? метод, осуществляющий вывод значений полей класса на экран в виде: 5 6/7.

И код:

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
#include <iostream>
#include <conio.h>
 
using namespace std;
class FRACTION
{
//private:
public:
    double chis,znam, chis2, znam2, obch, sum;
//  public:
//FRACTION (double ch, zm) : chis (ch), znam (zm){}
void getdata()
{
cout << "VVedite chislitel' pervoi drobi:";
    cin >> chis;
    cout << "VVedite znamenatel':";
    cin >>znam;
    cout << "VVedite chislitel' vtoroi drobi:";
    cin >>chis2;
    cout << "VVedite znamenatel':";
    cin >>znam2;
}
void displaydata ()
{
cout << chis<<"/"<<znam;
cout << chis2<<"/"<<znam2;
}
FRACTION operator+(FRACTION) const;
 
};
FRACTION FRACTION::operator+(FRACTION fr) const
{
 
    double  obch=(znam2*znam);
    double sum= ((obch/chis)*chis)+((obch/chis2)*chis2);
  //return sum;
  cout << sum;
  return FRACTION (sum);
}
 
/*int main ()
{
    FRACTION fr;
    cout << fr.sum;
    return 0;
}*/

Подскажите пожалуйста как правильно вывести результат из перегруженной функции..
Код кривой( делан по аналогии с книги..( Пока что тут была попытка реализовать подсчета суммы дробей.((

при компиляции выдает ошибку

Ошибка1 error C2440: <function-style-cast>: невозможно преобразовать "double" в "FRACTION" строка 38
В чем может быть дело(( сори за такой тупизм, очень плохо поняла перегрузки функции((
Заранее спасибо за помощь.)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 01:33     Перегрузки функции
Посмотрите здесь:

Используя механизм перегрузки функций, разработать две версии функции F C++
C++ Как узнать тип вводимых данных с помощью перегрузки функции?
C++ Friend-функции перегрузки оператора
Функции перегрузки C++
Выполнение перегрузки функции C++
C++ Вызов конктестной перегрузки шаблонной функции у стратегии
C++ Написать реализацию перегрузки функции
Подскажите по поводу перегрузки функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
20.01.2013, 01:47     Перегрузки функции #2
Функция возвращает значение типа FRACTION, ты пытаешься вернуть число типа double. Далее у тебя наверно выскочила ошибка о несоответсвии типа возвращаемого значения. Поэтому ты явно привела тип: FRACTION(sum), но тут дело в том, что неясно как преобразовать число sum в дробь FRACTION - это нужно отдельно делать перегрузку приведения типа, либо перегрузку конструктора.
А так вообще класс неверен. Дробь, это просто числитель и знаменатель - большего быть не должно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class FRACTION {
public:
  int a; // числитель
  int b; // знаменатель
  // Конструктор.
  FRACTION(int a_, int b_) : a(a_), b(b_)  {
  }
  
  FRACTION operator +( FRACTION f )  {
    FRACTION sum;
    sum.b = b * f.b;
    sum.a = a * f.b + f.a * b;
    return sum;
  }
};
Надо делать примерно так. Конечно можно добавить много-чего для оптимизации, но пока не стоит.
А вообще, чтобы сделать задание - достаточно было посмотреть как на бумажке складываются дроби в общем случае.
Yandex
Объявления
20.01.2013, 01:47     Перегрузки функции
Ответ Создать тему
Опции темы

Текущее время: 22:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru