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

Преобразование из одного класса в другой - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести на экран слова, в которых каждая буква слова входит не менее двух раз http://www.cyberforum.ru/cpp-beginners/thread1680984.html
Дана последовательность, которая должна вмещать от 2 до 50 слов, в каждом слове от 2 до 8 символом. Написать программу, которая будет выводить на экран слова, в которые каждая буква этого слова входит не менее 2х раз. То есть, при вводе слов: мама папа рак коралл должно вывести: мама папа. Можно не всю программу, а просто отрезок, где оно будет проверять на вхождение символов не менее 2х...
C++ Программа не заканчивает работу Программа нечего не выдает и не заканчивает работу#include <iostream> #include <cstdlib> #include <ctime> #include <string> using namespace std; class Generator{ public: int randomnum(int input){ http://www.cyberforum.ru/cpp-beginners/thread1680983.html
C++ Компилировать и объяснить код, получающий двоичный дамп программы
Нашёл в книжке таких 2 примера: #include <cstring> #include <iostream> #define legal_psw "my.good.password" int main() { char user_psw;
Иероглифы вместо русских букв C++
Здравствуйте, есть программа которая читает с блокнота строку и копирует ее в буфер обмена. Проблема в том, что стоит русская раскладка клавиатуры то все нормально, но если включить анг раскладку сразу в буфер копируются иероглифы а не строка, как это можно исправить ? Добавлено через 45 минут аппп
C++ Вычислить выражение рекурсивно и итеративно http://www.cyberforum.ru/cpp-beginners/thread1680971.html
Помогите записать пример. Решить задачу на фото двумя способами - с применением рекурсии и без неё. y(n)=\sqrt{1+\sqrt{2+...+\sqrt{n}}}
C++ что не так Void func Строковые литералы типа const char Строковые литералы теперь имеют тип const char и размещаются в области памяти, предназначенной только для чтения. Изменение этой памяти теперь будет вызывать нарушение прав доступа. Код, скомпилированный в предыдущих версиях с использованием параметра /GF, также будет вызывать нарушение прав доступа. Код из следующего примера успешно компилируется и... подробнее

Показать сообщение отдельно
DrOffset
6927 / 4120 / 942
Регистрация: 30.01.2014
Сообщений: 6,915
09.03.2016, 21:30     Преобразование из одного класса в другой
Цитата Сообщение от meJevin Посмотреть сообщение
как мне заставить эту программу работать
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <iomanip>
#include <limits>
 
template<typename Type>
void cinNum(Type& var, char const * text) {
 
    int intLimit = std::numeric_limits<int>::max();
 
    std::cout << text;
    while (!(std::cin >> var) || (std::cin.peek() != '\n')) {
        std::cin.clear();
        std::cin.ignore(intLimit, '\n');
        std::cout << text;
    }
 
}
 
class USmoney;
 
class RUSmoney {
private:
    unsigned int rubles;
    unsigned int kopeks;
 
public:
    RUSmoney(unsigned int rubles = 0, unsigned int kopeks = 0)
        : rubles(rubles), kopeks(kopeks)
    {
    }
 
    void print() {
        std::cout << "Your RUS money: ";
        std::cout << rubles << " Rubles, " << kopeks << " Kopeks\n\n";
    }
 
    operator USmoney() const;
};
 
class USmoney {
private:
    unsigned int dollars;
    unsigned int cents;
 
public:
    USmoney(unsigned int dollars = 0, unsigned int cents = 0)
        : dollars(dollars), cents(cents)
    { }
 
    void print() {
        std::cout << "Your US money: ";
        std::cout << dollars << " Dollars, " << cents << " Cents\n\n";
    }
 
    operator RUSmoney() const;
};
 
RUSmoney::operator USmoney() const {
    unsigned int dollars = 0;
    unsigned int cents = (rubles * 1.4) + (kopeks * 0.014);
 
    while (cents >= 100) {
        cents -= 100;
        dollars += 1;
    }
 
    return USmoney(dollars, cents);
}
 
USmoney::operator RUSmoney() const {
    unsigned int rubles = 0;
    unsigned int kopeks = (dollars * 7100) + (cents * 71);
 
    while (kopeks >= 100) {
        kopeks -= 100;
        rubles += 1;
    }
 
    return RUSmoney(rubles, kopeks);
}
 
int main() {
 
    setlocale(LC_ALL, "RUSSIAN");
 
    unsigned int dollars, cents;
    unsigned int rubles, kopeks;
 
    cinNum(dollars, "Enter dollars: ");
    cinNum(cents, "Enter cents: ");
    cinNum(rubles, "Enter rubles: ");
    cinNum(kopeks, "Enter kopeks: ");
 
    USmoney moneyUS(dollars, cents);
    USmoney moneyUS_temp(dollars, cents);
    RUSmoney moneyRUS(rubles, kopeks);
 
    moneyUS.print();
    moneyRUS.print();
 
    std::cout << "US currency converted to RUS currency\n";
    moneyUS = moneyRUS;
    moneyUS.print();
    std::cout << "RUS currency converted to US currency\n";
    moneyRUS = moneyUS_temp;
    moneyRUS.print();
 
    return 0;
}

+ убрал бессмысленные проверки на отрицательные значения у unsigned переменных, заменил присваивание на инициализацию в конструкторе (приучаться к правильному нужно сразу) и добавил const к функциям преобразования типов - т.к. они не меняют состояние объекта.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru