С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

ООП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как зациклить switch, чтобы после того как я допустим ввожу f и он считает циклом for, потом снова просил введите символ http://www.cyberforum.ru/cpp-beginners/thread263609.html
#include <iostream> #include <iomanip> #include <math.h> using namespace std; int main() { float x=0.2,y,s=0; int n,i=4; char f,w,d,ch;
C++ Перевод из строки в число Извиняюсь, если такая тема уже была. Есть строка s. В ней записано 2 вещественных числа. Нужно оба записать в переменные типа float. Ну первое понятно float a; a = atof(s); А как считать... http://www.cyberforum.ru/cpp-beginners/thread263608.html
Стандартные функции String.h C++
Здравствуйте, подскажите пожалуйста стандартные функции стринга в с++. Нужно определить количество вхождений заданного знака в строку. Используя стандартные функции.
Проверка без учета регистра C++
Доброго времени суток! Есть строка string codtext="МАША",codkey="маша"; Как проверить: if (codtext==codkey) { cout << "Совпадает!" << endl;} else { cout << "Не совпадает!" << endl;} Хоть и в...
C++ Мой компилятор не принимает "getline" и не хочет массив объявлять peson p[a] http://www.cyberforum.ru/cpp-beginners/thread263595.html
Какие ошибки у меня в программе и как мне их исправить ? Мой компилятор не принимает "getline" и не хочет массив объявлять peson p #include<iostream> #include<string> using namespace std;...
C++ В квадратной матрицы поменять местами столбик, содержащий наибольшее значение со столбиком, который содержит наименьшее значение 1. В квадратной матрицы поменять местами столбик, содержащий наибольшее значение со столбиком, который содержит наименьшее значение. 2. Задано прямоугольную матрицу вещественных чисел. Найти... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
25.03.2011, 00:52
Вариант попроще.
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
#ifndef _COMMON_LIBRARY_FRACTION_H_
#define _COMMON_LIBRARY_FRACTION_H_
 
#include <iostream>
 
template <typename IntegerType_ = int,
          typename RealType_ = float,
          IntegerType_ NUMERATOR_DEFAULT_VALUE_ = 0,
          IntegerType_ DENOMINATOR_DEFAULT_VALUE_ = 1>
class Fraction {
 public:
  typedef IntegerType_ IntegerType;
  typedef RealType_ Real;
  static const IntegerType NUMERATOR_DEFAULT_VALUE
                         = NUMERATOR_DEFAULT_VALUE_;
  static const IntegerType DENOMINATOR_DEFAULT_VALUE 
                         = DENOMINATOR_DEFAULT_VALUE_;
  Fraction()
    : numerator_(NUMERATOR_DEFAULT_VALUE),
      denominator_(DENOMINATOR_DEFAULT_VALUE) {
    Reduce();
  }
  Fraction(IntegerType numerator, IntegerType denominator)
    : numerator_(numerator), denominator_(denominator) {
    Reduce();
  }
  explicit Fraction(IntegerType value)
    : numerator_(value), denominator_(1) {
    Reduce();
  }
  IntegerType Numerator() const { return numerator_; }
  IntegerType Denominator() const { return denominator_; }
  void Numerator(IntegerType value) { numerator_ = value; }
  void Denominator(IntegerType value) { denominator_ = value; }
  Fraction operator+(const Fraction &other) {
    return Fraction(Numerator() * other.Denominator() +
                    Denominator() * other.Numerator(),
                    Denominator() * other.Denominator());
  }
  Fraction operator-(const Fraction &other) {
    return Fraction(Numerator() * other.Denominator() -
                    Denominator() * other.Numerator(),
                    Denominator() * other.Denominator());
  }
  Fraction operator*(const Fraction &other) {
    return Fraction(Numerator() * other.Numerator(),
                    Denominator() * other.Denominator());
  }
  Fraction operator/(const Fraction &other) {
    return Fraction(Numerator() * other.Denominator(),
                    Denominator() * other.Numerator());
  }
  int Compare(const Fraction &other) {
    return Numerator() * other.Denominator() -
           Denominator() * other.Numerator();
  }
  bool operator<(const Fraction &other) {
    return Compare(other) < 0;
  }
  bool operator<=(const Fraction &other) {
    return Compare(other) <= 0;
  }
  bool operator>(const Fraction &other) {
    return Compare(other) > 0;
  }
  bool operator>=(const Fraction &other) {
    return Compare(other) >= 0;
  }
  bool operator==(const Fraction &other) {
    return Compare(other) == 0;
  }
  void  Reduce() {
    if(!denominator_) return;
    IntegerType gcd = GCD(numerator_, denominator_);
    numerator_    /= gcd;
    denominator_  /= gcd;
    if(denominator_ < 0) {
      numerator_ *= -1;
      denominator_ *= -1;
    }
  }
  static IntegerType GCD(IntegerType a, IntegerType b) {
    struct UniversalAbs {
      IntegerType operator()(IntegerType value) {
        return (value > 0)?value:-value;
      }
    } universal_abs;
    return (b)?GCD(universal_abs(b), universal_abs(a) % universal_abs(b))
              :universal_abs(a);
  }
 private:
  IntegerType numerator_;
  IntegerType denominator_;
};
 
#endif
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.