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

Программа должна выводить аналог целочисленной таблицы умножения для дробей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Изменение цвета букв и фона в консоле http://www.cyberforum.ru/cpp-beginners/thread858854.html
Подскажите какие функции нужно использовать чтобы можно было закрашивать различным цветом слова и фон вокруг этих слов при выводе на экран?
C++ Сортировка (С++) Есть такое задание: Даны К целых чисел А(1),...,А(К). Вычислить а) наибольшее, b) наименьшее, c) наиболее близкое к нулю. Помогите пожалуйста! Есть решение для а) и b) http://www.cyberforum.ru/cpp-beginners/thread858850.html
C++ диагностика функционирования компьютерной мыши
дорогие мои кому не трудно,Помогите!программа для диагностики функционирования компьютерной мыши. написал часть кода для отслеживания положения курсора... #include <stdio.h> #include <time.h> #include <windows.h> int main(){ SetConsoleCP(1440); SetConsoleOutputCP(990);
Альтернатива виртуальным функциям в конструкторе C++
Доброе время суток, коллеги! В процессе разработки одной библиотечки столкнулся с такой проблемой: Допустим есть базовый класс Popcorn. Когда я создаю Popcorn, он "приготавливается" прямо в своём конструкторе: засыпается кукуруза, включается печь, добавляется некоторый ингредиент и т.д. Я хочу предложить своим довольным покупателям аж три разных попкорна: простой, солёный и сладкий....
C++ Область видимости, пространства имен http://www.cyberforum.ru/cpp-beginners/thread858837.html
имею макрос #define max(a,b) (((a) > (b)) ? (a) : (b)) он определен в Windows.h, который мне нужен в проекте... также мне нужна это строчка в коде cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); вопрос...каким с чего компилятор решил, что мне нужно использовать макрофункцию?..и как это вылечить?..) пишет ошибку, что нехватает параметров
C++ Из двух стеков с упорядоченными по возрастанию элементами создать новый стек с упорядоченными элементами, не удаляя исходные стеки Здравствуйте. Помогите пожалуйста с программой Из двух стеков с упорядоченными по возрастанию элементами создать новый стек с упорядоченными элементами, не удаляя исходные стеки. Программу реализовать с помощью массивов и односвязных списков. С помощью массивов я сделал. Помогите реализовать это все с помощью списков. #include <iostream> using namespace std; int main() { setlocale (... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.05.2013, 18:05     Программа должна выводить аналог целочисленной таблицы умножения для дробей
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
125
126
127
128
129
130
131
#include <iostream>
 
/*
 * Давайте сначала отделим мух от котлет.
 * Методы самого класса (то, что делает сам объект) от методов работы с классом
 * (то, что делают уже с объектом).
 * 
 * Заранее извиняюсь за переформатирование кода и переименование
 * идентификаторов -- не могу прямо, когда смешивают транслит и
 * перевод.
 */
 
/*
 * Объект, свойства которого нельзя изменить после создания,
 * называют immutable. Это удобно, поскольку более-менее гарантирует,
 * что свойства объекта не поменяются даже при передаче по
 * неконстантной ссылке или по указателю.
 */
class fraction {
private:
  const int numerator;
  const int denominator;
 public:
  fraction(): numerator(0), denominator(1)  {}
  fraction(int numerator, int denominator): numerator(numerator),
    denominator(denominator) {}
  // добавим пару методов класса, позволяющих установить числитель и знаменатель.
  int getNumerator() const { return numerator; }
  int getDenominator() const { return denominator; }
};
 
 
/*
 * Действия с дробями. Обратите внимание, что теперь функции возвращают
 * новосозданную дробь.
 *
 * В логике больших изменений нет. Дроби как складывались так и
 * складываются. Только теперь функции возвращают дроби.
 */
 
// складывает две дроби, возвращает сумму
fraction addition(const fraction &a, const fraction &b) {
  return fraction(a.getNumerator() * b.getDenominator() + 
    b.getNumerator() * a.getDenominator(),
    a.getDenominator() * b.getDenominator());
}
 
fraction subtraction(const fraction &a, const fraction &b) {
  return fraction(a.getNumerator() * b.getDenominator() - 
    b.getNumerator() * a.getDenominator(),
    a.getDenominator() * b.getDenominator());
}
 
fraction multiplication(const fraction &a, const fraction &b) {
  return fraction(a.getNumerator() * b.getNumerator(),
    a.getDenominator() * b.getDenominator());
}
 
fraction division(const fraction &a, const fraction &b) {
  return fraction(a.getNumerator() * b.getDenominator(),
    a.getDenominator() * b.getNumerator());
}
 
// находит наибольший общий делитель двух чисел
int getGcd(int a, int b) {
  if (a == 0 || b ==0) {
    return 1;
  }
  if (a < 0) {
    a = -a;
  }
  if (b < 0) {
    b = -b;
  }
  while (a != b) {
    if (a < b) {
      b -= a;
    } else {
      a -= b;
    }
  }
  return a;
}
 
// lowterms
// из имени функции было непонятно, что она делает, позволил себе 
// переименовать в reduce, как учат на уроках английского языка.
fraction reduce(const fraction &f) {
  int numerator = f.getNumerator();
  int denominator = f.getDenominator();
  if (denominator < 0) {
    numerator = -numerator;
    denominator = -denominator;
  }
  int gcd = getGcd(numerator, denominator);
  return fraction(numerator / gcd, denominator / gcd);
}
 
// метод "Ввода"
/*
 * не нужен, я забил.
 */
fraction input() {
  return fraction();
}
 
// метод "Отображения"
void show(const fraction &f) {
  std::cout << f.getNumerator() << "/" << f.getDenominator();
}
 
/*
 * Для удобства и читаемости кода можно еще налепить операторов,
 * но это уже по желанию.
 */
 
int main(int argc, char *argv[]) {
  int number = 6;
  
  // ну, собственно, таблица умножения
  for (int i = 1; i <= number; ++i) {
    for (int j = 1; j <= number; ++j) {
      show(
        reduce(
        multiplication(fraction(i, number), fraction(j, number))));
      std::cout << " ";
    }
    std::cout << std::endl;
  }
  
}
 
Текущее время: 08:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru