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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифр Вижиненра, шифр скитала http://www.cyberforum.ru/cpp-beginners/thread1105049.html
Я много прочитал информации и захотел реализовать эти шифры на Buider C++, а вот как это сделать. Кому интересно, напишите мне примеры этих кодов. Интересно ведь)
C++ Управление вводом с клавиатуры в С++ Добрый день, подскажите как добиться вот этого результата на С++ вот пример: нажимаю я клавишу "1", по нажатию выполняется ++a, а как только отпущу, то --a. Данный результат должен выводиться на... 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"...
C++ Найти наименьшее число, которое удовлетворяет условию Дано вещественное число a. Найти такое наименьшее n, что 1+1/2+1/3+…+1/n >a. Пункт 3.4 Правил: Спокойствие и хладнокровие помогут вам постичь себя. подробнее

Показать сообщение отдельно
xkorp
0 / 0 / 1
Регистрация: 31.01.2014
Сообщений: 12

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

25.02.2014, 13:05. Просмотров 1486. Ответов 1
Метки (Все метки)

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;
}
Желательно с комментариями) Я просто не понимаю эту тему, хочется вникнуть на примере решённой задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru