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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Queue сортировка http://www.cyberforum.ru/cpp-beginners/thread904521.html
Задание : отсортировать чергу по возростанию не использевать ООП queue <int> q; sort(q.front();q.back()) // не пашет подскажите пожалуста вот на это задание http://www.cyberforum.ru/cpp-beginners/thread904256.html
C++ Создать собственный библиотечный файл Задание:Создать собственный библиотечный файл констант, типов и функций для реализации указанных задач и программу, которая использует его возможности для работы с файлами (зашифровки, подсчет количества слов). Моя проблема:я без понятия как это делать (видимо меня не было на паре или мы это не проходили). Что я не знаю:1)как создавать БИБЛИОТЕЧНЫЙ файл (обычный умею). 2)как вписать функцию в... http://www.cyberforum.ru/cpp-beginners/thread904516.html
C++ AEROFLOT
помогите не могу понять, что не так. вот код: #include <iostream> #include <cstring> #include <fstream> const int n=7; int i,j; using namespace std; class AEROFLOT { public:
Односвязный список: найти максимальное отрицательное число C++
Дан не пустой односвязный список, в котором каждый элемент имеет тип: struct elem { int num; elem* next; } Написать функцию int max_negative (elem *first) , которая возвращает наибольшее отрицательное число или 0, если нет ни одного отрицательного.
C++ как сместить стандартные кнопки закрытия и сворачивания окна вниз? http://www.cyberforum.ru/cpp-beginners/thread904498.html
возможно ли такое? в идеале должно быть овальное окно с кнопками закрыть и свернуть внизу справа...
C++ Описать структуру с именем TRAIN Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения, номер поезда, время отправления. Написать программу, выполняющую следующие действия: Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN, вывод на экран информации о поездах, отправляющихся после введённого с клавиатуры времени. Упорядочить массив по алфавиту (название пункта... подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
17.06.2013, 20:32     .Создать класс Binary1, который будет содержать число в двоичной системе
Первое задание:
Крайне неудобно представлять дробную и целую часть в виде интегральных значений. Гораздо удобней работать со строкой. Из-за этих неудобств значение класса не может быт отрицательным и дробная часть ограничена всего одним числом.
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;
        }
    }
}
 
Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru