0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
1

Создать класс Binary1, который будет содержать число в двоичной системе

17.06.2013, 17:44. Показов 3317. Ответов 1
Метки нет (Все метки)

1.Поле first – целое число, целая часть числа, записанного в восьмеричной системе счисления; поле second – положительное целое число, дробная часть числа, записанного в восьмеричной системе счисле-ния. Реализовать метод add8( ) – сложение чисел в восьмеричной системе.
2.Создать класс Binary1, который будет содержать число в двоичной системе (в отдельном поле – целая часть, в другом поле – дробная часть). Разработайте методы для ввода двоичных чисел (с дробной частью!), вывода двоичных чисел, методы для вычисления суммы и произведения двоичных чисел.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2013, 17:44
Ответы с готовыми решениями:

Создать класс Tiles (кафель), который будет содержать поля с открытым доступом
Создать класс Tiles (кафель), который будет содержать поля с открытым доступом: brand, size_h,...

Создать класс Ship, который будет содержать данные об учетном номере корабля и его координатах
Создать класс Ship, который будет содержать данные об учетном номере корабля и его координатах. Для...

Создать класс с именем ship, который будет содержать данные об учетном номере корабля и его координатах
Создайте класс с именем ship, который будет содержать данные об учетном номере корабля и...

Создайте класс Student, который будет содержать информацию о студенте
Создайте класс Student, который будет содержать информацию о студенте. С помощью механизма...

1
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
17.06.2013, 20:32 2
Лучший ответ Сообщение было отмечено BlackScorpioNnn как решение

Решение

Первое задание:
Крайне неудобно представлять дробную и целую часть в виде интегральных значений. Гораздо удобней работать со строкой. Из-за этих неудобств значение класса не может быт отрицательным и дробная часть ограничена всего одним числом.
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
132
133
134
135
#include <iostream>
#include <cstring>
 
class Oct;
std::ostream& operator<<(std::ostream &, const Oct &);
 
class Oct
{
    int first;
    unsigned second;
 
public:
    struct Bad_value {}; // for errors;
 
    Oct();
    Oct(const char * v);
 
    Oct& operator+=(const Oct &);
    friend std::ostream& operator<<(std::ostream &, const Oct &);
};
 
Oct::Oct() : first(0), second(0) {}
 
Oct::Oct(const char * v)
{
    if (strlen(v) < 3 || v[0] != '0' || v[1] != 'o')
    {
        throw Bad_value();
    }
 
    for (size_t i = 2; i < strlen(v); ++i)
    {
        if (v[i] == '.')
        {
            ++i;
            if (++i != strlen(v))
            {
                throw Bad_value();
            }
        }
    }
 
    first = second = 0;
 
    bool it_first = true;
    for (size_t index = 2; index < strlen(v); ++index)
    {
        switch (v[index])
        {
        case '0':   case '1':   case '2':    case '3':
        case '4':   case '5':   case '6':    case '7':
            if (it_first)
            {
                first = first * 10 + v[index] - '0';
            }
            else
            {
                second = second * 10 + v[index] - '0';
            }
            break;
        case '.':
            it_first = false;
            continue;
        default:
            throw Bad_value();
        }
    }
}
 
Oct& Oct::operator+=(const Oct & rhs)
{
    first += rhs.first;
    second += rhs.second;
 
    while (7 < second)
    {
        if (!(first % 7))
        {
            first += 3;
        }
        else
        {
            ++first;
        }
        second = second % 8;
    }
 
    return *this;
}
 
/********* non class operators *********/
 
std::ostream& operator<<(std::ostream &stream, const Oct &rhs)
{
    if (rhs.first < 0)
    {
        stream << "-0o" << -rhs.first << '.' << rhs.second;
    }
    else
    {
        stream << "0o" << rhs.first << '.' << rhs.second;
    }
    return stream;
}
 
Oct operator+(const Oct& lhs, const Oct& rhs)
{
    Oct obj;
    obj += lhs;
    obj += rhs;
    return obj;
}
 
/************* main() *************/
 
int main()
{
    for ( ; ; )
    {
        try
        {
            Oct a = "0o7.3";
            Oct b = "0o7.5";
            std::cout << "a + b = " << (a + b) << std::endl;
            std::cout << "b + a + a = " << (b + a + a) << std::endl;
            Oct c = b + b;
            std::cout << "c = b + b = " << c << std::endl;
            break;
        }
        catch (Oct::Bad_value)
        {
            continue;
        }
    }
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2013, 20:32
Помогаю со студенческими работами здесь

Создайте класс Student, который будет содержать информацию о студенте
1. Создайте класс Student, который будет содержать информацию о студенте. С помощью механизма...

Создайте класс зоопарк, который будет содержать какое-то количество животных
Доброго времени суток, помогите пожалуйста написать программу. Я не могу понять саму логику...

Создайте класс зоопарк, который будет содержать какое-то количество животных
Здравствуйте помогите пожалуйста решить задание. Создайте класс зоопарк, который будет содержать...

Создайте класс Passport (паспорт), который будет содержать паспортную информацию о гражданине Украины
Создайте класс Passport (паспорт), который будет содержать паспортную информацию о гражданине...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru