Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/107: Рейтинг темы: голосов - 107, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
1

Описать класс Fraction

28.02.2011, 23:27. Показов 21091. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте нужна ваша помощь

задание
Создайте класс 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
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2011, 23:27
Ответы с готовыми решениями:

Создать класс Pair(пара чисел) и класс-наследник Fraction
Создать класс Pair (пара чисел); определить методы изменения полей и сравнения пар: пара p1 больше...

Класс: создать класс Fraction для работы с дробными числами
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено...

Реализовать класс Money, используя класс Fraction
// реализовать класс Money используя класс Fraction #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

Класс Fraction...
Привет! Парни, помогите разобраться... я еще не очень в этом разбираюсь... компилятор выдает...

7
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.02.2011, 23:40 2
G-58, Описать функцию add очевидно же. А то у вас только определения
1
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 00:09  [ТС] 3
ForEveR а где её описать и как ?
0
15 / 15 / 1
Регистрация: 21.12.2010
Сообщений: 55
01.03.2011, 00:12 4
можно в классе описать, можно перед главной функцией, можно после всего кода, как душе угодно)
1
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 02:23  [ТС] 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;
}
}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.03.2011, 02:48 6
G-58, main не закрывается. Там закрывается только цикл while(1)
1
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 33
01.03.2011, 09:22  [ТС] 7
А не подскажите ка это сделать , а то всё перепробовал что знал не помогает
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.03.2011, 14:25 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;
}
1
01.03.2011, 14:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2011, 14:25
Помогаю со студенческими работами здесь

Реализовать класс Fraction
Реализовать класс Fraction из задание 1, используя для представления целой части класс LongLong из...

Создать класс fraction
Создайте класс fraction. Данные класса должны быть представлены двумя полями:числителем и...

Разработайте класс FRACTION
Задание 1: Разработка класса. Разработайте класс FRACTION. Элемент класса: - числитель; ...

Модифицируйте класс fraction
Модифицируйте класс fraction в четыре функциональном дробном калькуляторе, чтобы он использовал...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru