Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 30

Определить класс: длинное целое число. Создать конструкторы и деструктор

20.10.2018, 23:13. Показов 1957. Ответов 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
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Long {
    struct TlistItem
    {
        int Value;
        TlistItem *Next;
    };
    struct Tlist
    {
        TlistItem *First, *Last;
    } List;
    int sz;
    int Num; //номеp 
    static int Kilob; //количество объектов
public: 
    Long(int, int); 
    Long(); 
    Long(const Long&); // конструктор копирования
    ~Long();
    void output() const;
};
int Long::Kilob = 0;
 
Long::Long(int sz, int v)
{
    while (Kilob <= sz) {
        if (List.First == NULL)
        {
            List.First = (TlistItem*)malloc(sizeof(TlistItem));
            List.First->Next = NULL;
            List.First->Value = v;
            List.Last = List.First;
        }
        else
        {
            List.Last->Next = (TlistItem*)malloc(sizeof(TlistItem));
            List.Last->Next->Next = NULL;
            List.Last->Next->Value = v;
            List.Last = List.Last->Next;
        }
        Kilob++;
    }
}
 
Long::Long() {
 
}
Long :: ~Long()
{
    TlistItem *t = List.First, *r;
    while (t != NULL)
    {
        r = t->Next;
        free(t);
        t = r;
    }
    List.First = List.Last = NULL;
}
Long::Long(const Long& Obj) 
{
    
} 
void Long::output() const
{
    TlistItem* k = List.First;
    while (Kilob-- != 0)
    {
        cout << k->Value << " ";
        k = k->Next;
    }
    cout << sz << " " << Kilob << endl;
}
int main()
{
 
    Long list(5, 4);
    list.output();
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2018, 23:13
Ответы с готовыми решениями:

Создать класс "пара целых чисел". Определить конструкторы, деструктор, функции доступа к полям
Создать класс ПАРА ЦЕЛЫХ ЧИСЕЛ. Определить конструкторы, деструктор, функции доступа к полям, ввода-вывода и сравнения пар (пара p1 больше...

Дописать в класс конструкторы и деструктор
\Дописать в класс: конструктор, считывающий массив и его размерность с клавиатуры, конструктор, считывающий массив и его размерность из...

Определить конструкторы, деструктор
Добрый день. Времени в обрез, нужна помощь доработать код. Задание: Создать класс &quot;процессор&quot;, имеющий частоту (МГц)....

3
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
20.10.2018, 23:25
разделяй сущности "список" и "длинное число"
смешивать в одном классе методы для работы со списками и для класса пользующегося таким контейнером не есть гуд
0
0 / 0 / 0
Регистрация: 21.04.2018
Сообщений: 30
20.10.2018, 23:38  [ТС]
Такое условие. Должен быть список. Может как-то изменить члены класса? Что-то убрать ?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
21.10.2018, 04:37
Лучший ответ Сообщение было отмечено jpj как решение

Решение

jpj, так я не говорю, что не должно быть списка.
Пиши отдельный класс для него!

Добавлено через 4 часа 51 минуту
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#include <iostream>
#include <algorithm>
#include <iomanip>
template<typename T>
class mylist {
private:
    template<typename NT>
    struct tnode {
        tnode<NT> *next, *prev;
        NT data;
    };
    typedef tnode<T> node;
    node *front, *back;
    size_t sz;
public:
    template<typename TNode>
    class Myiterator : public std::iterator<
        std::input_iterator_tag,
        TNode*,                // value_type= pointer
        size_t,                       // difference_type
        const TNode**,               // pointer
        T                         // reference
    > {
        TNode*  val;
    public:
        explicit Myiterator(TNode*  val_) :val(val_)
        {}
        Myiterator<TNode>& operator++() { val = val->next; return *this; }
        Myiterator<TNode> operator++(int) { Myiterator<TNode> retval = *this; val = val->next; return retval; }
        Myiterator<TNode>& operator--() { val = val->prev; return *this; }
        Myiterator<TNode> operator--(int) { Myiterator<TNode> retval = *this; val = val->prev; return retval; }
        bool operator==(Myiterator other) const { return val == other.val; }
        bool operator!=(Myiterator other) const { return !(*this == other); }
        reference operator*(){ return val->data; }
    };
    typedef Myiterator<node> iterator;
    typedef Myiterator<const node> const_iterator;
 
    mylist(): front(NULL), back(NULL), sz(0) {}
    mylist(size_t count, T value=T()) : front(NULL), back(NULL), sz(0) {
        while(size()!=count)
            push_back(value);
    }
    size_t size() {
        return sz;
    }
    mylist(const mylist& other) : front(NULL), back(NULL), sz(0) {
        for (const_iterator it = other.cbegin(); it != other.cend(); ++it)
            push_back(*it);
    }
    mylist(mylist&& other)
    {
        front = other.front;
        back = other.back;
        sz = other.sz;
        other.back=other.front = NULL;
        other.sz = 0;
    }
    const mylist& operator=(mylist&& other)
    {
        if (this == &other) return *this;
        front = other.front;
        back = other.back;
        sz = other.sz;
        other.back = other.front = NULL;
        other.sz = 0;
        return *this;
    }
    mylist& operator=(const mylist& other) {
        if (this == &other) return *this;
        clear();
        for (const_iterator it = other.cbegin(); it != other.cend(); ++it)
            push_back(*it);
    }
    void push_back(T item)
    {
        ++sz;
        node* nn = new node;
        nn->data = item;
        nn->next = NULL;
        nn->prev = back;
        if (back)
            back->next = nn;
        else 
            front = nn;
        back = nn;
    }
    void push_front(T item)
    {
        ++sz;
        node<T>* nn = new node;
        nn->data = item;
        nn->prev = NULL;
        nn->next = front;
        if (front)
            front->prev = nn;
        else
            back = nn;
        back = nn;
    }
    void clear() {
        sz = 0;
        while (front)
        {
            node* nn = front;
            front = front->next;
            delete nn;
        }
        back = NULL;
    }
    iterator begin() {
        return iterator(front);
    }
    iterator end() {
        return iterator(NULL);
    }
    const_iterator cbegin()const{
        return const_iterator(front);       
    }
    const_iterator cend() const{
        return const_iterator(NULL);
    }
    const_iterator crbegin()const {
        return const_iterator(back);
    }
    const_iterator crend() const {
        return const_iterator(NULL);
    }
    bool empty()
    {
        return sz == 0;
    }
    ~mylist() {
        clear();
    }
};
    const int base = 1e9;
    const int logbase = 9;
class mylong {
    mylist<int> data;
public:
    mylong(int value=0) :data(1, value) {
    }
    mylong operator+(mylong& left)
    {
        mylong retval;
        retval.data.clear();
        int carry = 0;
 
        auto it = data.cbegin(), jt = left.data.cbegin();
        for ( ;it != data.cend() && jt != data.cend(); ++it, ++jt)
        {
            carry += (*it) + (*jt);
            retval.data.push_back(carry%base);
            carry /= base;
        }
        for (; it != data.cend(); ++it)
        {
            carry += *it;
            retval.data.push_back(carry%base);
            carry /= base;
        }
        for (; jt != data.cend(); ++jt)
        {
            carry += *jt;
            retval.data.push_back(carry%base);
            carry /= base;
        }
        if(carry) 
            retval.data.push_back(carry);
        return retval;
    }
    friend std::ostream& operator<< (std::ostream& out, const mylong& value);
};
std::ostream& operator<<(std::ostream& out, const mylong& value)
{
    for (auto it = value.data.crbegin(); it != value.data.crend(); --it)
    {
        out << *it << std::setfill('0') << std::setw(logbase);
    }
    return out;
}
 
#include<vector>
int main() {
    mylong  a = 555555555;
    mylong  b = 666666666;
    mylong  c = a+b;
 
    std::cout << c<<std::endl;
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2018, 04:37
Помогаю со студенческими работами здесь

Создать класс, содержащий символ, вещественное число и указатель на целое число
Создать класс: Данные класса- символ, вещественное число, указатель на целое число. Методы класса- ввод данных, вывод данных, замена...

Создать класс, описывающий целое число
Добрый вечер, уважаемые форумчане. Прошу помощи с решением задачи. Вот ее условие. Создать класс, описывающий целое число и содержащий...

Создать класс, который хранит целое десятичное число без знака
Други и подруги, прошу вашей помощи! Вот такую программу нужно написать, есть такие, кто может помочь? Создать класс, который...

Разработать класс large – длинное целое
Нужно сделать на курсовик, мозг после java уже потек, а тут Это. Кто может помогите, буду очень благодарен... Разработать класс large –...

Дано длинное целое неотрицательное число
Условие: Я правильно понимаю? Если у меня дано число 15643 (0011 1101 0001 1011), то я должен в двоичном представлении...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru