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

Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно иметь следующие - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шифр Вижиненра, шифр скитала http://www.cyberforum.ru/cpp-beginners/thread1105049.html
Я много прочитал информации и захотел реализовать эти шифры на Buider C++, а вот как это сделать. Кому интересно, напишите мне примеры этих кодов. Интересно ведь)
C++ Управление вводом с клавиатуры в С++ Добрый день, подскажите как добиться вот этого результата на С++ вот пример: нажимаю я клавишу "1", по нажатию выполняется ++a, а как только отпущу, то --a. Данный результат должен выводиться на консоль. Работаю с DEV C++. Вот мои наработки по этому поводу. #include <iostream> #include <stdio.h> #include <conio.h> #include <windows.h> using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread1105037.html
Что значит запись в макросе C++
#define MAX(x,y) (x > y ? x : y) Собсно,макрос,который находит наибольшее число. Вначале идёт сравнение,а вот дальше я не понял,для чего нужны знаки ? и : .
C++ Найти наименьшее число среди четных элементов последовательности
Напишите пожалуйста программу по условию задачи :Вводится последовательность из N положительных целых чисел. Найти наименьшее число среди четных элементов последовательности. Заранее благодарю за помощь.
C++ Не выводит список введенный с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread1105027.html
Программа должна выводить с начало список всех игроков и ниже тех которые играют в основном составе... а выводит только тех которые забиты до компиляции :( #include"stdafx.h" #include"iostream" #include"conio.h" using namespace std; struct Data { unsigned day;
C++ Найти наименьшее число, которое удовлетворяет условию Дано вещественное число a. Найти такое наименьшее n, что 1+1/2+1/3+…+1/n >a. Пункт 3.4 Правил: Спокойствие и хладнокровие помогут вам постичь себя. подробнее

Показать сообщение отдельно
xkorp
 Аватар для xkorp
0 / 0 / 1
Регистрация: 31.01.2014
Сообщений: 12
25.02.2014, 13:05     Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно иметь следующие
1. Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как
динамический массив. Для этого определение класса должно иметь следующие поля:
• указатель на начало массива;
• максимальный размер массива;
• текущий размер массива.
2. Определить и реализовать в классе конструкторы (и конструктор копирования), деструктор, функции Input() (ввод склавиатуры) и Print() (вывод на экран), перегрузить операцию присваивания.
3. Написать программу тестирования класса и выполнить тестирование.
4. Дополнить определение класса заданными перегруженными операциями ( в соответствии с
вариантом).
5. Реализовать эти операции. Выполнить тестирование.
АТД - множество с элементами типа char. Дополнительно перегрузить следующие
операции:
«-» - удалить элемент из множества (типа set-char);
«*» - пересечение множеств (дружественная функция);
«<» - сравнение множеств(дружественная функция ).
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
#include <iostream>
using namespace std;
 
class SetChar{
private:
    char *arr;
    int maxSize;
    int size;
public:
    SetChar(){
        maxSize = 0;
        size = 0;
        arr = NULL;
    }
    SetChar(int maxSize){
        this->maxSize = maxSize;
        size = 0;
        arr = new char[maxSize];
    }
    SetChar(const SetChar &setchar){
        maxSize = setchar.maxSize;
        arr = new char[maxSize];
        size = setchar.size;
        for(int i = 0; i < size; i++)
            arr[i] = setchar.arr[i];
    }
    ~SetChar(){
        delete [] arr;
    }
    
    bool in(char item){
        for(int i = 0; i < size; i++)
            if(arr[i]==item) return true;
        return false;
    }
    
    SetChar &operator += (char item){
        if(in(item)==false && size < maxSize){
            arr[size] = item;
            size++;
        }
        return *this;
    }
 
    SetChar &operator = (SetChar &setchar){
        if(this == &setchar) return *this;
        if(arr != NULL) delete [] arr;
        maxSize = setchar.maxSize;
        arr = new char[maxSize];
        size = setchar.size;
        for(int i = 0; i < size; i++)
            arr[i] = setchar.arr[i];
        return *this;
    }
 
    bool operator == (SetChar &setchar){
        if(size != setchar.size) return false;
        // предварительно отсортировать arr и setchar.arr
        for(int i = 0; i < size; i++)
            if(arr[i]!=setchar.arr[i]) return false;
        return true;
    }
 
    void input(int size){
        if(size > maxSize) return ;
        this->size = size;
        int i = 0;
        while(i < size){
            char item = (33 + rand()%100);
        //  cin >> item;
            if(!in(item)) {
                arr[i] = item;
                i++;
            }
        }   
    }
    
    void print(){
        for(int i = 0; i < size; i++)
            cout << arr[i] << " ";
        cout << endl;
    }
    friend SetChar operator + (SetChar &s1, SetChar &s2);
    friend SetChar operator * (SetChar &s1, SetChar &s2);
};
 
SetChar operator + (SetChar &s1, SetChar &s2){
    int maxTotalSize = s1.maxSize + s2.maxSize;
    SetChar result(maxTotalSize);   
    for(int i = 0; i < s1.size; i++){
        result.arr[i] = s1.arr[i];
    }
    result.size = s1.size;
    for(int i = 0; i < s2.size; i++){
        result += s2.arr[i];
    }
    return result;
}
 
SetChar operator * (SetChar &s1, SetChar &s2){
    int mSize;
    if(s1.maxSize > s2.maxSize) mSize = s1.maxSize; else mSize = s2.maxSize;
    SetChar result(mSize);
    for(int i = 0; i < s1.size; i++){
        for(int j = 0 ; j < s2.size; j++)
            if(s1.arr[i] == s2.arr[j])
                result += s1.arr[i];
    }
    return result;
}
 
int main(){
    srand(5);
    SetChar st(10);
    st.input(5);
    st.print();
 
    SetChar st2(10);
    st2.input(5);
    st2.print();
    
    if(st == st2) cout << "set equal" << endl;
    else cout << "set no equal" << endl;
 
    SetChar st1 = st2;
    if(st1 == st2) cout << "set equal" << endl;
    else cout << "set no equal" << endl;
 
    SetChar st3;
    st3 = st + st2;
    st3.print();
 
    
  
    st3 += 't';
 
 
    st3.print();
 
    SetChar st4;
    st4 = st*st2;
    cout <<"--------"<< endl;
    st4.print();
    system("pause");
    return 0;
}
Желательно с комментариями) Я просто не понимаю эту тему, хочется вникнуть на примере решённой задачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru