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

ООП. нахождение суммы обыкновенных дробей с выделенной целой частью - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти площадь треугольника по формуле Герона http://www.cyberforum.ru/cpp-beginners/thread1071542.html
Помогите пожалуйста с задачкой на класс. Нужно найти площадь треугольника по формуле Герона. Ошибку выдает, подчеркивает p в самой формуле. Нужно уже завтра #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; class ger { public: int a, b, c;
C++ Строки. Нужно дополнить строку нулями слева Нужно дополнить строку нулями слева. Например была строка str1="345" результат str2="0000000345" Нужно именно в С++. Спасибо! http://www.cyberforum.ru/cpp-beginners/thread1071525.html
C++ Записать функции в виде методов класса
#include <stdio.h> #include <stdlib.h> #include <locale.h> struct Stack { int data; struct Stack *next; };
Определение детерминированного конечного автомата C++
Доброго времени суток! Очень нужна ваша помощь в решении задачи( Необходимо написать программу, реализующую определение детерминированности любого конечного автомата. Если функция переходов определена однозначно и полно, то программа должна выдавать сообщение о том, что проверяемый КА является детерминированным, в противном случае – недетерминированным. Должна быть предусмотрена возможность...
C++ Вычисление определенного интеграла методом средних прямоугольников для функции http://www.cyberforum.ru/cpp-beginners/thread1071471.html
Вот само задание : Разработать программу для вычисления определенного интеграла методом средних прямоугольников для функции типа: y=a ∙ cos (b ∙ x )+ x^c . Коэффициенты a, b, c и границы интервала интегрирования считываются с экрана. Я сделал бы сам , но даже не понимаю суть задания. К примеру : надо ли считать шаг сетки , и нужно ли его вообще считать?? какой формулой пользоваться ( из 3...
 

Показать сообщение отдельно
Dzzirt
0 / 0 / 0
Регистрация: 14.01.2014
Сообщений: 6
15.01.2014, 00:27     ООП. нахождение суммы обыкновенных дробей с выделенной целой частью
Вот рабочая программа с перегруженными операциями +, -, *, /, == и !=
Для твоей задачи тебе нужно модифицировать конструктор( добавить дополнительный параметр ) и методы setRational() и printRational()
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
// Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
 
class Rational
{
public:
    Rational( int num = 1, int denum = 1 );
    void setRational( int, int );
    Rational operator+( const Rational & ) const;
    Rational operator-( const Rational & ) const;
    Rational operator*( const Rational & ) const;
    Rational operator/( const Rational & ) const;
    bool operator==( const Rational & ) const;
    bool operator!=( const Rational &right ) const
    {
        return !( *this == right ); // invokes Rational::operator==
    } // end function operator!=
    bool operator>( const Rational & ) const;
    bool operator<( const Rational & ) const;
    void printRational();
    void printRationalFloat();
    //function greatest common divisor
    int gcd( );
    //function greatest common divisor
    int gcd( int, int );
private:
    int numerator;
    int denumerator;
     
 
};
 
#endif // RATIONAL_H_INCLUDED
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Rational.cpp
#include <iostream>
#include <stdexcept>
#include "Rational.h"
 
using namespace std;
 
Rational::Rational( int num, int denum )
{
    setRational( num, denum );
}
 
void Rational::setRational( int num, int denum )
{
    if ( denum > 0 )
    {
        int commonDiv = gcd(denum ,  num);
        numerator = num / commonDiv;
        denumerator = denum / commonDiv;
    }
    else
        throw invalid_argument ( "Denumerator must be greater than 0");
    }
 
Rational Rational::operator+( const Rational &op2 ) const
{
    Rational temp;
    temp.denumerator = denumerator * op2.denumerator;
    temp.numerator = numerator * op2.denumerator + op2.numerator * denumerator;
 
    int commonDiv = temp.gcd( );
    temp.denumerator = temp.denumerator / commonDiv;
    temp.numerator = temp.numerator / commonDiv;
 
    return temp;
}
 
Rational Rational::operator-( const Rational &op2 ) const
{
    Rational temp;
    temp.denumerator = denumerator * op2.denumerator;
    temp.numerator = numerator * op2.denumerator - op2.numerator * denumerator;
 
    int commonDiv = temp.gcd( );
    temp.denumerator = temp.denumerator / commonDiv;
    temp.numerator = temp.numerator / commonDiv;
 
    return temp;
}
 
Rational Rational::operator*( const Rational &op2 ) const
{
    Rational temp;
    temp.denumerator = denumerator * op2.denumerator;
    temp.numerator = numerator * op2.numerator;
 
    int commonDiv = temp.gcd( );
    temp.denumerator = temp.denumerator / commonDiv;
    temp.numerator = temp.numerator / commonDiv;
 
    return temp;
}
 
Rational Rational::operator/( const Rational &op2 ) const
{
    Rational temp;
    temp.denumerator = denumerator * op2.numerator;
    temp.numerator = numerator * op2.denumerator;
 
    int commonDiv = temp.gcd( );
    temp.denumerator = temp.denumerator / commonDiv;
    temp.numerator = temp.numerator / commonDiv;
 
    return temp;
}
 
void Rational::printRational()
{
        cout << numerator << " / " << denumerator << endl;
}
 
void Rational::printRationalFloat()
{
    cout << static_cast<double>( numerator / denumerator ) << endl;
}
 
    // recursive function greatest common divisor
int Rational::gcd( int denum, int num )
{
  if ( num == 0 )
        return denum;
  return gcd( num, denum % num );
}
 
int Rational::gcd( )
{
  if ( numerator == 0 )
        return denumerator;
  return gcd( numerator, denumerator % numerator );
}
 
bool Rational::operator==( const Rational &right ) const
{
    if ( numerator * right.denumerator == right.numerator * denumerator )
        return true;
    else
        return false;
}
 
bool Rational::operator>( const Rational &right ) const
{
    if ( numerator * right.denumerator > right.numerator * denumerator )
        return true;
    else
        return false;
}
 
bool Rational::operator<( const Rational &right ) const
{
    if ( numerator * right.denumerator < right.numerator * denumerator )
        return true;
    else
        return false;
}
 
Текущее время: 14:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru