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

Калькулятор дробей с помощью классов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Master05
1 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 124
31.03.2012, 15:19     Калькулятор дробей с помощью классов #1
Добрый день, мне кажется я тут уже видел программку калькулятор дробей, где нужно создать class fraction для подсчета суммы, разности, деления и умножения без operator+
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2012, 15:19     Калькулятор дробей с помощью классов
Посмотрите здесь:

Реализация программы с помощью классов C++
Олимпиадное задание "Калькулятор рациональных дробей" C++
C++ Создать меню с 6-ю элементами с помощью классов и списков
C++ Реализовать задачу с помощью классов.
C++ Калькулятор для дробей
Калькулятор для обыкновенных дробей C++
C++ Как с помощью классов нарисовать очки?
C++ Калькулятор для дробей

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.03.2012, 18:24     Калькулятор дробей с помощью классов #2
Ну так поищи, раз видел.
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
#include <iostream>
#include <string>
#include <sstream>
#include <cmath>
 
// immutable
class Fraction {
 public:
  Fraction() : numerator_(0), denominator_(1) {}
  Fraction(int numerator, int denominator) : numerator_(numerator),
    denominator_(denominator) {
    simplify();
  }
  operator float() {
    return static_cast<float>(numerator_) / denominator_;
  }
  int getNumerator() const { return numerator_; }
  int getDenominator() const { return denominator_; }
  // Euclid
  static int getGreatestCommonDivisor(int a, int b) {
    a = std::abs(a);
    b = std::abs(b);
    if (a == b) return a;
    if (a > b) return getGreatestCommonDivisor(a - b, b);
    return getGreatestCommonDivisor(a, b - a);
  }
  std::string toString() {
    std::stringstream result;
    result << getNumerator() << "/" << getDenominator();
    return result.str();
  }
  Fraction add(const Fraction &other) {
    return Fraction(getNumerator() * other.getDenominator() +
      other.getNumerator() * getDenominator(),
      getDenominator() * other.getDenominator());
  }
  Fraction subtract(const Fraction &other) {
    return Fraction(getNumerator() * other.getDenominator() -
      other.getNumerator() * getDenominator(),
      getDenominator() * other.getDenominator());
  }
  Fraction multiply(const Fraction &other) {
    return Fraction(getNumerator() * other.getNumerator(),
      getDenominator() * other.getDenominator());
  }
  Fraction divide(const Fraction &other) {
    return Fraction(getNumerator() * other.getDenominator(),
      getDenominator() * other.getNumerator());
  }
  // +N -- more than other
  //  0 -- equal to other
  // -N -- less than other
  int compare(const Fraction &other) {
    return getNumerator() * other.getDenominator() -
      getDenominator() * other.getNumerator();
  }
 private:
  void simplify() {
    if (denominator_ < 0) {
      numerator_ = -numerator_;
      denominator_ = -denominator_;
    }
    if (int greatestCommonDivisor = getGreatestCommonDivisor(numerator_, denominator_)) {
      numerator_ /= greatestCommonDivisor;
      denominator_ /= greatestCommonDivisor;
    }
  }
  int numerator_;
  int denominator_;
};
 
int main(int argc, char *argv[]) {
  std::cout << Fraction(2, 4).add(Fraction(1, 6)).toString() << std::endl;
  std::cout << Fraction(2, 4).subtract(Fraction(1, 6)).toString() << std::endl;
  std::cout << Fraction(2, 4).multiply(Fraction(1, 6)).toString() << std::endl;
  std::cout << Fraction(2, 4).divide(Fraction(1, 6)).toString() << std::endl;
  std::cout << Fraction(1, 6).compare(Fraction(1, 6)) << std::endl;
}
Yandex
Объявления
31.03.2012, 18:24     Калькулятор дробей с помощью классов
Ответ Создать тему
Опции темы

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