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

Описать класс Fraction - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
G-58
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
28.02.2011, 23:27     Описать класс Fraction #1
здравствуйте нужна ваша помощь

задание
Создайте класс Fraction. Данные класса должны быть представлены двумя полями: числителем и знаменателем. Методы класса должны получать от пользователя значения числителя и знаменателя дроби в формате 3/5 и выводить значение дроби в этом же формате. Кроме того, должен быть разработан метод, складывающий значения двух дробей. Напишите программу, которая циклически запрашивает у пользователя ввод пары дробей, затем складывает их и выводит результат на экран. После каждой такой операции программа должна спрашивать пользователя, следует ли продолжать цикл.

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
// L1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <stdio.h>  
#include <stdlib.h>
#include <iostream>
 
using namespace std;
class Fraction {
private:
    int num, den;  
public:
    void set (int n, int d){num = n;den = d;}
    int get_num(){return num;}
    int get_den(){return den;}
    Fraction add(Fraction other);
};
 
int main(){
    Fraction fract1, fract2, fract3 ;
    int X1, Y1, x2 ,y2 ;
    char str [81];
    while (1){
        cout << " Enter numerator: " ;
        cin  >> X1;
        cout << " Enter denominator: " ;
        cin  >> Y1;
        fract1.set(X1,Y1);
        cout <<  "Drob is " << fract1.get_num()<< "/" << fract1.get_den() <<endl;
        cout << " Enter numerator: " ;
        cin  >> x2;
        cout << " Enter denominator: " ;
        cin  >> y2;
        fract2.set(x2,y2);
        cout <<  "Drob is " << fract2.get_num()<< "/" << fract2.get_den()<<endl;    
        fract3 = fract1.add(fract2);
        cout << fract3.get_num()<< "/" <<fract3.get_den();
        cout << " Do again (Y or N)";
        cin  >> str;
        if (!(str[0] == 'Y' || str[1] == 'N'))
            break;
    }
 
}
Выдаёт 3 ошибки не знаю как исправить

Ошибка 1 error LNK2028: ссылка на неразрешенную лексему (0A0002BF) "public: class Fraction __thiscall Fraction::add(class Fraction)" (?add@Fraction@@$$FQAE?AV1@V1@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ) L1.obj
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "public: class Fraction __thiscall Fraction::add(class Fraction)" (?add@Fraction@@$$FQAE?AV1@V1@@Z) в функции "int __cdecl main(void)" (?main@@$$HYAHXZ) L1.obj
Ошибка 3 fatal error LNK1120: 2 неразрешенных внешних элементов D:\09КП1\ООП\L1\Debug\L1.exe
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2011, 23:27     Описать класс Fraction
Посмотрите здесь:

C++ Описать класс
Создать класс Fraction, описывающий простую дробь. (Прошу помочь) C++
Класс Fraction... C++
Модифицируйте класс fraction C++
C++ Реализовать класс Fraction
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.02.2011, 23:40     Описать класс Fraction #2
G-58, Описать функцию add очевидно же. А то у вас только определения
G-58
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 00:09  [ТС]     Описать класс Fraction #3
ForEveR а где её описать и как ?
timchuchok
15 / 15 / 0
Регистрация: 21.12.2010
Сообщений: 55
01.03.2011, 00:12     Описать класс Fraction #4
можно в классе описать, можно перед главной функцией, можно после всего кода, как душе угодно)
G-58
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 02:23  [ТС]     Описать класс Fraction #5
попробовал прописать выдаёт ошибки
error C2601: Fraction::normalize: недопустимые локальные определения функций
error C2601: Fraction::gcf: недопустимые локальные определения функций
error C2601: Fraction::lcm: недопустимые локальные определения функций
error C2601: Fraction::add: недопустимые локальные определения функций
error C2601: Fraction::mult: недопустимые локальные определения функций

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
// L1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <stdio.h>  
#include <stdlib.h>
#include <iostream>
 
 
using namespace std;
class Fraction 
{
private:
    int num, den; 
    void normalize (); 
    int gcf (int a, int b);
    int lcm (int a, int b);
public:
    void set (int n, int d){num = n; den = d; normalize();}
    int get_num(){return num;}
    int get_den(){return den;}
    Fraction add(Fraction other);
    Fraction mult(Fraction other);
};
 
int main()
{
    Fraction fract1, fract2, fract3 ;
    int X1, Y1, x2 ,y2 ;
    char str [81];
    while (1){
        cout << " Enter numerator: " ;
        cin  >> X1;
        cout << " Enter denominator: " ;
        cin  >> Y1;
        fract1.set(X1,Y1);
        cout <<  "Drob is " << fract1.get_num()<< "/" << fract1.get_den() <<endl;
        cout << " Enter numerator: " ;
        cin  >> x2;
        cout << " Enter denominator: " ;
        cin  >> y2;
        fract2.set(x2,y2);
        cout <<  "Drob is " << fract2.get_num()<< "/" << fract2.get_den()<<endl;    
        fract3 = fract1.add(fract2);
        cout << fract3.get_num()<< "/" <<fract3.get_den();
        cout << " Do again (Y or N)";
        cin  >> str;
        if (!(str[0] == 'Y' || str[1] == 'N'))
            break;
    }
void Fraction::normalize() {
                 
      if (num == 0 || den == 0) {
          num=0;
          den=1;
      }
     
      if (den < 0) {
          num *= -1;
          den *= -1;
      }
 
      int n = gcf(num,den);
      num = num / n;
      den = den / n;
}
 
int Fraction::gcf(int a, int b) {
     if (a % b==0)
        return abs(b);
     else
          return gcf(b, a % b);
}
 
int Fraction::lcm(int a, int b) {
     return (a / gcf(a,b)) * b;
}
 
Fraction Fraction::add(Fraction other) {
            Fraction fract;
            int lcd = lcm(den, other.den);
            int quot1 = lcd/den;
            int quot2 = lcd/other.den;
            fract.set(num * quot1 + other.num * quot2, lcd);
            fract.normalize();
            return fract;
}
 
Fraction Fraction::mult(Fraction other) {
            Fraction fract;
            fract.set(num * other.num, den * other.den);
            fract.normalize();
            return fract;
}
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.03.2011, 02:48     Описать класс Fraction #6
G-58, main не закрывается. Там закрывается только цикл while(1)
G-58
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 09:22  [ТС]     Описать класс Fraction #7
А не подскажите ка это сделать , а то всё перепробовал что знал не помогает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2011, 14:25     Описать класс Fraction
Еще ссылки по теме:

Разработайте класс FRACTION C++
Создать класс Fraction для работы с дробными десятичными числами C++
C++ Создать класс Fraction, описывающий поведение обыкновенной дроби

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.03.2011, 14:25     Описать класс Fraction #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
// L1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <stdio.h>  
#include <stdlib.h>
#include <iostream>
 
 
using namespace std;
class Fraction 
{
private:
        int num, den; 
    void normalize (); 
    int gcf (int a, int b);
    int lcm (int a, int b);
public:
        void set (int n, int d){num = n; den = d; normalize();}
        int get_num(){return num;}
        int get_den(){return den;}
        Fraction add(Fraction other);
    Fraction mult(Fraction other);
};
 
int main()
{
        Fraction fract1, fract2, fract3 ;
    int X1, Y1, x2 ,y2 ;
        char str [81];
        while (1){
                cout << " Enter numerator: " ;
                cin  >> X1;
        cout << " Enter denominator: " ;
                cin  >> Y1;
                fract1.set(X1,Y1);
                cout <<  "Drob is " << fract1.get_num()<< "/" << fract1.get_den() <<endl;
        cout << " Enter numerator: " ;
                cin  >> x2;
        cout << " Enter denominator: " ;
                cin  >> y2;
        fract2.set(x2,y2);
                cout <<  "Drob is " << fract2.get_num()<< "/" << fract2.get_den()<<endl;        
        fract3 = fract1.add(fract2);
                cout << fract3.get_num()<< "/" <<fract3.get_den();
                cout << " Do again (Y or N)";
                cin  >> str;
                if (!(str[0] == 'Y' || str[1] == 'N'))
                        break;
        }
}
 
void Fraction::normalize() {
                 
      if (num == 0 || den == 0) {
          num=0;
          den=1;
      }
     
      if (den < 0) {
          num *= -1;
          den *= -1;
      }
 
      int n = gcf(num,den);
      num = num / n;
      den = den / n;
}
 
int Fraction::gcf(int a, int b) {
     if (a % b==0)
        return abs(b);
     else
          return gcf(b, a % b);
}
 
int Fraction::lcm(int a, int b) {
     return (a / gcf(a,b)) * b;
}
 
Fraction Fraction::add(Fraction other) {
            Fraction fract;
            int lcd = lcm(den, other.den);
            int quot1 = lcd/den;
            int quot2 = lcd/other.den;
            fract.set(num * quot1 + other.num * quot2, lcd);
            fract.normalize();
            return fract;
}
 
Fraction Fraction::mult(Fraction other) {
            Fraction fract;
            fract.set(num * other.num, den * other.den);
            fract.normalize();
            return fract;
}
Yandex
Объявления
01.03.2011, 14:25     Описать класс Fraction
Ответ Создать тему
Опции темы

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