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

Класс рациональных дробей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. http://www.cyberforum.ru/cpp-beginners/thread1117486.html
Вывести на консоль те строки, длина которых меньше (больше) средней, а также длину. Собственно вот проблема..Мне помогали писать данную программу но она что-то все равно не работает. Она просто тупо зависает. Может кто помочь объяснить что в ней не так? Мб я просто неправильно заполняю строки? #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream> using namespace...
C++ Работа с координатами векторов Привет, ребята. Вновь пришёл к Вам с вопросами. Поставили задачу написать проект калькулятора, который будет выполнять операции с координатами векторов. На вход поступает 2 вектора, координаты каждого из которых x,y,z соответственно. Задача такая - как оформить координаты, чтобы было удобно работать с ними? //Пробовал делать x1,y1,z1,x2,y2,z2 переменными делать, но это быдло-код какой-то... http://www.cyberforum.ru/cpp-beginners/thread1117478.html
C++ Звуковой сигнал!
#include <ctime> #include <stdio.h> #include <locale.h> #include <string> #include <conio.h> #include <windows.h> #include <iostream> using namespace std;
C++ Вывести словесное описание возраста, заданного цифрой
Дано целое число в диапазоне 20-69, определяющее возраст (в годах) . Вывести строку - словесное описание указанного возраста, обеспечив правильное согласование числа со словом "год", например: 20- "двадцать лет", 32-"тридцать два года", 41 - "сорок один год".
C++ Оцените программу: Шахматы http://www.cyberforum.ru/cpp-beginners/thread1117440.html
Я почти не учил раньше программирование, чуть в школе, чуть в универе (все знания сводились о знании о переменных и цыклах). А месяцев 9 назад задумал подучить программирование, в свободное время читал книгу Лафоре "ООП в С++". Прочитал пол книги и недавно надумал сделать шахмоты в консоле)) Я понимаю что в консоли никто играть не будет в них, это просто вызов самому себе "смогу ли?" А кроме...
C++ Определить число символов в самом длинном слове строки. Слова отделяются пробелом Помогите разобраться ,написал код.. ну он считает какойто брет { AnsiString a,b,c; int i; a=Edit1->Text; int k=a.Length(); int m=1; int max=0; int t; for(i=1;i<=k;i++) {if(a==' ') b=a.SubString(m,i-m+1); t=b.Length(); if (t>max) max=t; подробнее

Показать сообщение отдельно
MahovIV
5 / 6 / 1
Регистрация: 17.09.2013
Сообщений: 337
12.03.2014, 19:09     Класс рациональных дробей
Разработать класс рациональных дробей. Предусмотреть в нём все методы, которые необходимы, чтобы новый тип данных мог быть использован наравне с системными типами: арифметические операции, операции сравнения, преобразования тип.
Программа выглядит вот-так:
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
#include <iostream>
#include <conio.h>
 
#define show(x) #x << " = " << x << "  "
#define test(x) if(x) cout << #x << endl
// Âû÷èñëåГ*ГЁГҐ ГЌГЋГ„ = ГЌГ*èáîëüøèé îáùèé äåëèòåëü
// GCD = Greatest Common Divider (ГЇГ®-Г*Г*ãëèéñêè)
long GCD( long a, long b ){ return b==0 ? a : GCD(b,a%b); }
 
// ГЉГ«Г*Г±Г± "ГђГ*öèîГ*Г*ëüГ*Г*Гї äðîáü"
class Rat {
  void init( long n, long d ){ 
    long gcd = GCD(n,d); // âû÷èñëÿåì Г*Г*èáîëüøèé îáùèé äåëèòåëü ÷èñëèòåëÿ ГЁ Г§Г*Г*ìåГ*Г*òåëÿ
    // ÑîêðГ*Г№Г*ГҐГ¬ äðîáü 
    this->n = n/gcd; 
    this->d = d/gcd; 
    curObj++; 
    constCalls++; 
  };
public:   
  static int curObj /* ГІГҐГЄГіГ№ГҐГҐ êîë-ГўГ® îáúåêòîâ */, constCalls /* êîë-ГўГ® âûçîâîâ ГЄГ®Г*ñòðóêòîðîâ */; 
  long n,d; // ×èñëèòåëü ГЁ Г§Г*Г*ìåГ*Г*òåëü nominator/denominator 
  Rat(long n, long d) { init(n,d); } // "ГЋГ±Г*îâГ*îé" ГЄГ®Г*ñòðóêòîð
  Rat(const Rat& x) { init(x.n,x.d); }; // ГЉГ®Г*ñòðóêòîð êîïèðîâГ*Г*ГЁГї
  Rat() { init(0,1); } // ГЉГ®Г*ñòðóêòîð "ГЇГ®-óìîë÷Г*Г*ГЁГѕ", äðîáü Г°Г*ГўГ*Г*Гї 0 - 0/1
  ~Rat() { curObj--; } // Äåñòðóêòîð (óìåГ*ГјГёГ*ГҐГІ êîëè÷åñòâî îáúåêòîâ)
  // Àðèôìåòè÷åñêèå îïåðГ*öèè
  Rat operator+(const Rat& x) const { return Rat( n*x.d+d*x.n, d*x.d ); }
  Rat operator-(const Rat& x) const { return Rat( n*x.d-d*x.n, d*x.d ); }
  Rat operator*(const Rat& x) const { return Rat( x.n*n, x.d*d ); }
  Rat operator/(const Rat& x) const { return Rat( n*x.d, d*x.n ); }
  // ГЋГЇГҐГ°Г*öèè Г±Г°Г*ГўГ*ГҐГ*ГЁГї
  bool operator==(const Rat& x) const { return n*x.d == d*x.n; }
  bool operator!=(const Rat& x) const { return n*x.d != d*x.n; }
  bool operator>(const Rat& x) const { return n*x.d > d*x.n; }
  bool operator<(const Rat& x) const { return n*x.d < d*x.n; }
  bool operator>=(const Rat& x) const { return n*x.d >= d*x.n; }
  bool operator<=(const Rat& x) const { return n*x.d <= d*x.n; }
};
 
// Г€Г*èöèГ*ëèçèðóåì Г±ГІГ*ГІГЁГ·ГҐГ±ГЄГЁГҐ ïåðåìåГ*Г*ûå
int Rat::curObj = 0, Rat::constCalls = 0;
 
using namespace std;
 
// ÏåðåãðóçêГ* îïåðГ*öèè âûâîäГ* Гў ïîòîê äëÿ ГЄГ«Г*Г±Г±Г* "ГђГ*öèîГ*Г*ëüГ*Г*Гї äðîáü"
ostream& operator << ( ostream& os, const Rat& x ){ return os << x.n << "/" << x.d; };
 
// ГЋГ±Г*îâГ*Г*Гї ïðîãðГ*ììГ* - äåìîГ*Г±ГІГ°Г*öèÿ âîçìîæГ*îñòåé ГЄГ«Г*Г±Г±Г* "ГђГ*öèîГ*Г*ëüГ*Г*Гї äðîáü"
void demoRat(){
     int n1, n2, d1, d2;
     cin >> n1 >> n2;
     cin >> d1 >> d2;
     Rat a(n1, n2), b(d1, d2), c = a * b + a / b;
  cout << show(a) << show(b) << endl;
  cout << show(a+b) << show(a-b) << show(a*b) << show(a/b) << endl;
  test(a==b); test(a!=b); test(a>b); test(a<b); test(a>=b); test(a<=b); test( a*b == b*a );
}
 
int main() {
  demoRat();
  cout << "Îáúåêòîâ Гў ГЇГ*ìÿòè = " << Rat::curObj << "   Âûçîâîâ ГЄГ®Г*ñòðóêòîðîâ = " << Rat::constCalls << endl; 
  getch();   
  return 0;
}
Помогите закончить.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru