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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
theonlymine
1 / 1 / 0
Регистрация: 21.02.2012
Сообщений: 11
#1

Написать класс Binary, который инкрементирует число, записанное в 2-чном виде - C++

21.02.2012, 20:31. Просмотров 787. Ответов 6
Метки нет (Все метки)

Написать класс Binary, который инкрементирует число, записанное в 2-чном виде. Допускаются только числа больше нуля. Ведущих нулей в числе нет.

В классе должны быть определены следующие конструкторы и методы:

C++
1
2
3
4
5
6
7
class Binary
{
public:
    Binary(const string &s);
    operator string () const;
    const Binary &operator++();
};
Заранее спасибо!

Добавлено через 1 час 20 минут
я не понимаю, нужно в классе дописать функцию, или что?

Добавлено через 39 минут
в смысле нужно приписать функцию внутри класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2012, 20:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать класс Binary, который инкрементирует число, записанное в 2-чном виде (C++):

Класс: Вещественное число, записанное с точкой - C++
#include "stdafx.h" #include <string.h> #include <conio.h> #include <iostream> using namespace std; class Chislo { ...

написать такой класс, который представляет собой двоичное число - C++
не могу справиться вот с этим: написать такой класс, который представляет собой двоичное число. биты держит в виде объекта std::vector...

Класс, полиморфизм (Написать класс, который хранит в себе некий номер ''nip'', проверит его на правильность и вывести результат) - C++
Задача. Написать класс, который хранит в себе некий номер ''nip'', проверит его на правильность и вывести результат. Вообщем-то ни...

Создать класс, который запоминает целые восьмеричные числа в виде строк - C++
Всем доброго времени суток. Столкнулся с проблемой,что не могу создать класс, который запоминает целые восьмеричные числа в виде строк! В...

Задача число и число записанное в обратном направлении сумма целого числа - C++
ПОЖАЛУЙСТА помогите составить программу на соde::bloks c++,только начал учится в колегии после 10 лет перерыва между школой. Задача число...

Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами - C++
Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами (I, II, III, IV, V, VI, …., XV);С++ плииииз!

6
Kastaneda
Форумчанин
Эксперт С++
4655 / 2863 / 228
Регистрация: 12.12.2009
Сообщений: 7,273
Записей в блоге: 2
Завершенные тесты: 1
21.02.2012, 20:35 #2
Нужно реализовать показаные конструктор и методы. Так же нужно добавить приватный член типа string.
Еще нужно знать двоичную арифметику:
0 + 0 = 1
1 + 0 = 1
0 + 1 = 1
1 + 1 = 10 (1 уходит в старший разряд, в текущем пишем 0)

и уметь складывать столбиком!
1
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
22.02.2012, 04:02 #3
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
#include <iostream>
#include <string>
 
class Binary
{
private:
    std::string s;
public:
    Binary(const std::string& _s) : s(_s)
    {
        for(const char& x : s)
        {
            if('0' != x && '1' != x) throw std::exception();
        }
    }
    operator std::string() const
    {
        return s;
    }
    const Binary& operator++()
    {
        std::string::size_type ind, size = s.size();
        const char zero = '0';
        if((ind = s.rfind('0')) != std::string::npos)
        {
            s[ind] = '1';
            s.replace(ind + 1, size - ind - 1, size - ind - 1, zero);
        }
        else
        {
            s.replace(0, size, size, zero);
            s = '1' + s;
        }
        return *this;
    }
};
 
int main()
{
    Binary b("101");
    std::cout << std::string(b) << std::endl;
    std::cout << std::string(++b) << std::endl;
    return 0;
}
1
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
22.02.2012, 04:12 #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
Еще нужно знать двоичную арифметику:
0 + 0 = 1
Очень интересная арифметика
1
Kastaneda
22.02.2012, 05:37
  #5

Не по теме:

Roof, ну думаю тут понятно, что это просто очепятка

0
theonlymine
1 / 1 / 0
Регистрация: 21.02.2012
Сообщений: 11
25.02.2012, 17:23  [ТС] #6
Цитата Сообщение от igorrr37 Посмотреть сообщение
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
#include <iostream>
#include <string>
 
class Binary
{
private:
    std::string s;
public:
    Binary(const std::string& _s) : s(_s)
    {
        for(const char& x : s)
        {
            if('0' != x && '1' != x) throw std::exception();
        }
    }
    operator std::string() const
    {
        return s;
    }
    const Binary& operator++()
    {
        std::string::size_type ind, size = s.size();
        const char zero = '0';
        if((ind = s.rfind('0')) != std::string::npos)
        {
            s[ind] = '1';
            s.replace(ind + 1, size - ind - 1, size - ind - 1, zero);
        }
        else
        {
            s.replace(0, size, size, zero);
            s = '1' + s;
        }
        return *this;
    }
};
 
int main()
{
    Binary b("101");
    std::cout << std::string(b) << std::endl;
    std::cout << std::string(++b) << std::endl;
    return 0;
}
а через двоеточие конструктор можно реализовать как-нибудь?
0
marsh
0 / 0 / 0
Регистрация: 15.09.2011
Сообщений: 3
25.02.2012, 17:28 #7
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
#include <string>
#include <iostream>
 
using namespace std;
 
class BinaryNumber {
    private:
        string number;
    public:
        BinaryNumber(); //0 по-умолчанию
        BinaryNumber(const string number); //перегрузка конструктора, для возможности начать с любого числа
        operator string () const; //забираем приватное значение нашего числа
        BinaryNumber operator ++(); //префиксный инкремент
        BinaryNumber operator ++(int); //постфиксный инкремент
};
 
BinaryNumber::BinaryNumber() { //0 по-умолчанию
    this->number = "0";
}
 
BinaryNumber::BinaryNumber(const string number) { //перегрузка конструктора, для возможности начать с любого числа
    this->number = number;
}
 
BinaryNumber::operator string () const { //забираем приватное значение нашего числа
    return this->number;
}
 
BinaryNumber BinaryNumber::operator ++() { //префиксный инкремент
    int len = number.length();
    while (len >= 0) {
        if (number[len-1] == '0') {number[len-1] = '1'; return *this;}
        else if (number[len-1] == '1') number[len-1] = '0';
        len--;
    }
    number = "1" + number;
    return *this;
}
 
BinaryNumber BinaryNumber::operator ++(int k) { //постфиксный инкремент, перегрузка аргумента, чтобы компилятор отличил префикс от постфикса
    BinaryNumber oldVal(number);
    int len = number.length();
    while (len >= 0) {
        if (number[len-1] == '0') {number[len-1] = '1'; return oldVal;}
        else if (number[len-1] == '1') number[len-1] = '0';
        len--;
    }
    number = "1" + number;
    return oldVal;
}
 
int main() {
    BinaryNumber mynum("101");
    cout << string(++mynum) << "\n"; //сначала увеличиваем, затем выводим
    cout << string(mynum++) << "\n"; //сначала выводим, затем увеличиваем
    cout << string(mynum) << "\n"; //просто выводим
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2012, 17:28
Привет! Вот еще темы с ответами:

Вводится число от 1 до 15. Вывести данное число, записанное в двоичной системе счисления (1, 10, 11, 100, - C++
Вводится число от 1 до 15. Вывести данное число, записанное в двоичной системе счисления (1, 10, 11, 100, 101, …., 1111);

Написать класс, который создает и выводит массив - C++
Помогите изменить этот код чтобы был класс который создает и выводит мой массив)7 #include &lt;iostream&gt; using namespace std; void...

Написать класс С++, который использует функции из библиотеки с - C++
Есть С длл как написать класс С++, который использует функции из библиотеки с? Добавлено через 37 минут это нужно писать обертку?

Написать класс, который бы инкапсулировал массив окружности - C++
Привет всем! Вообщем писал программу, в которой цель была - написать класс, который бы инкапсулировал массив окружности. Собственно...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
25.02.2012, 17:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru