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

нахождение среднего значения суммы дробей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посчитать ряд тейлора в точках http://www.cyberforum.ru/cpp-beginners/thread707078.html
посчитать sin2,5x2 в каждой точке отрезка , отрезок делится на 5 частей. вместо суммы выводит нули, что исправить нужно? #include<iostream.h> #include<math.h> using namespace std; int main() {...
C++ Определить, сколько посажено деревьев Учащиеся 8-х классов участвовали в посадке деревьев. 8-а посадил 100 деревьев, 8-б —122 дерева, 8-в — 98 деревьев, 8-г — 104 дерева, 8-д — 121 дерево. Определить, сколько посажено деревьев.Правила... http://www.cyberforum.ru/cpp-beginners/thread707066.html
что в коде не так? C++
#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<algorithm> #include<vector> using namespace std; int main() { freopen("f", "r", stdin);
C++ Множественнное наследование
Может ли производный класс наследовать не все поля базовых, а, например, по одному из каждого? (наследование типа треугольник)
C++ Сортировка строк массива http://www.cyberforum.ru/cpp-beginners/thread707043.html
На форуме есть множество тем о сортировке массивов, но конкретно под свое решение я способа не нашел. Нужна функция, которая сортирует матрицу размерностью m x n так, что строки в ней расположены в...
C++ Конструкторы и деструкторы. Определить оптимальный подбор банкнот для выдачи задаваемой суммы в рублях для банкомата Определить оптимальный подбор банкнот для выдачи задаваемой суммы в рублях для банкомата (купюры -1000, 5000, 10000, 20000, 50000). Использование конструкторов и деструкторов обязательно.(С++) подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
24.11.2012, 01:01  [ТС]
я вроде придумал сам как решить задачу. В общем опишу еще раз задачу:

/*напишите функцию main используя класс fraction которая получает значения дробей от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат.*/

ниже я приведу своё решение этой задачи, хотелось бы услышать ваши комментарии по поводу рентабельности кода с точки зрения ООП и какие либо предложения по поводу модификации данного кода или же его упрощения.

сам код:

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
#include <iostream>
#include <cmath> // äëÿ labs()
using namespace std;
class fraction
{
 private:
        int num,den; // ÷èñëèòåëü ГЁ Г§Г*Г*ìåГ*Г*òåëü
        char ch;
 public:
        fraction():num(0),den(0)
        {}
 
        void getfrac()          // ìåòîä ïîëó÷Г*ГѕГ№ГЁГ© Г§Г*Г*Г·ГҐГ*ГЁГї îò ïîëüçîâГ*òåëÿ
        {
        cout<<"Enter fraction: ";
        cin>>num>>ch>>den;
        }
 
        void sumfr(fraction f[],int size) //ìåòîä Г±ГЄГ«Г*äûâГ*ГѕГ№ГЁГ© Г§Г*Г*Г·ГҐГ*ГЁГї
        {
        num = f[0].num;
        den = f[0].den;
        for(int i = 1; i < size; i++)
        {
        num = f[i].den*num+f[i].num*den;
        den = f[i].den*den;
        }
        }
 
        void average(int s)  // äåëåГ*ГЁГҐ ïîëó÷åГ*Г*îé äðîáè Г*Г* Г°Г*çìåð Г¬Г*Г±Г±ГЁГўГ*
        {
        den=den*s;      //÷òîáû ïîäåëèòü äðîáü ГіГ¬Г*îæГ*ГҐГ¬ Г§Г*Г*ìåГ*Г*òåëü Г*Г* äåëèòåëü
        }
        void disp()const //âûâîäèì ðåçóëüòГ*ГІ Г*Г* ГЅГЄГ°Г*Г*
        {
        cout<<"average fraction value: "
        <<num<<"/"<<den<<endl;
        }
 
 
        void lowterms();
};
 
void fraction::lowterms() //ìåòîä ïðåäГ*Г*Г§Г*Г*Г·ГҐГ* äëÿ Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îãî
{                         //ñîêðГ*Г№ГҐГ*ГЁГї äðîáè
        long tnum,tden,temp,gcd;
        tnum = labs(num);
        tden = labs(den);
        if( tden == 0 )
        { cout<<" 0 denominator is not acceptable! "; exit(1);}
        else if( tnum == 0 )
        { num=0; den=1; return; }
        while( tnum != 0 )
        {
 
        if( tnum < tden )
        { temp=tnum; tnum=tden; tden=temp; }
 
        tnum = tnum - tden;
        }
        gcd = tden;
        num = num / gcd;
        den = den /gcd;
}
 
int main()
{
const int size = 10;
fraction fmas[size];
fraction o1;
 
for(int i = 0; i < size; i++)
{
fmas[i].getfrac(); //âûçûâГ*ГҐГ¬ ìåòîä äëÿ Г¬Г*Г±Г±ГЁГўГ*,ïîëó÷Г*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГї îò þçåðГ*
}
o1.sumfr(fmas,size); //ñóìèðóåì ïîëó÷åГ*Г*ûå äðîáè
o1.average(size);  //Г*Г*õîäèì ñðåäГ*ГҐГҐ Г§Г*Г*Г·ГҐГ*ГЁГҐ
o1.lowterms();    //ñîêðГ*Г№Г*ГҐГ¬ äðîáü
o1.disp();        //âûâðäèì ðåçóëüòГ*ГІ Г*Г* ГЅГЄГ°Г*Г*
 
system("PAUSE");
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru