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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Начало работы с файлами bmp http://www.cyberforum.ru/cpp-beginners/thread535257.html
Доброго времени суток Друзья, подскажите литературу или просто сайт, где можно почитать о bmp файлах (интересует все :)) На форуме видел несколько тем с изменением яркости изображения, но к сожалению даже с готовым фрагментом кода ничего сделать не могу, знания нулевые. Где бы можно посмотреть, как открыть bmp файл, вывести его на экран и тд ? Заранее благодарю ! Добавлено через 28...
C++ Сортировка по алфовиту помогите, как отсортировать по алфавиту фамилии по заглавной букве вот мой код : #include <iostream> #include <conio.h> #include <string.h> using namespace std; struct wk http://www.cyberforum.ru/cpp-beginners/thread535251.html
Табуляция, не знаю как решить C++
я новичок в с++ пока ничего не знаю) буду благодарен за любую помощь
C++ Создайте структуру, описывающую простую дробь
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Помогите пожалуйста "написать" структуру: Создайте структуру, описывающую простую дробь. Добавьте в неё метод сокращения дроби, если ее числитель и знаменатель не являются взаимно простыми числами. Затем создайте структуру, состоящую из двух дробей и методов сложения, вычитания и произведения этих дробей.
C++ Ввод с клавиатуры массива из 10 целых чисел http://www.cyberforum.ru/cpp-beginners/thread535231.html
Написать программу, которая вводит с клавиатуры массив из 10 целых чисел, находит среди элементов массива минимальный и выводит результат пользователю, затем вводит с клавиатуры две строки длиной не более 20 символов, сравнивает их на равенство и выводит результат пользователю. На любые введенные строки выдает "не равны". Просьба указать на ошибку. // three.cpp : Defines the entry point for...
C++ Вывести на экран длину гипотенузы прямоугольного треугольника по двум катетам Написать программу, выводящую на экран длину гипотенузы прямоугольного треугольника по двум катетам. Основная программа запрашивает длины катетов. Вычисление и вывод на экран реализовать в виде функции. подробнее

Показать сообщение отдельно
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
31.03.2012, 18:24     Калькулятор дробей с помощью классов
Ну так поищи, раз видел.
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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru