0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 5
1

Класс для pаботы с массивом

11.12.2014, 21:36. Показов 2869. Ответов 3
Метки нет (Все метки)

Доброго вечера, господа! Очень прошу помощи в написании кода.

Было у меня задание такого рода: "Постpоить класс для pаботы с массивом. Класс должен включать соответствующие поля: мак-симальный размер массива, индекс текущего элемента, указатель на массив.
Класс должен обеспечивать пpостейшие функции для pаботы с данными классами: добавление элементов, поиск, замена, удаление, вывод массива в удобной форме и т.д."

Я видел такую тему на форуме, но в общем написал, и оно довольно таки работает (что меня очень радует)! Ниже прилагаю код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <time.h>
using namespace std;
 
class Array{
private:
    int max, index;
    int *arr;
public:
    void add(int& a);
    void search(int& a); 
    void replace(int& ind, int& val); 
    void del(int& ind);
    void show();
    Array(int& i);
    Array();
    ~Array();
};
 
Array::Array(int& i){
    max = i - 1;
    index = 0;
    arr = new int[max];
    time_t t;
    srand((unsigned)time(&t));
    for (int j = 0; j <= max; j++) arr[j] = rand() % 100 + 1;
}
 
Array::Array(){
    max = 10;
    index = 0;
    arr = new int[max];
    time_t t;
    srand((unsigned)time(&t));
    for (int j = 0; j <= max; j++) arr[j] = rand() % 100 + 1;
}
 
Array::~Array(){ 
    for (int i = 0; i <= max; i++){ 
        delete[] &arr[i];
    }
    delete[] arr;
    delete[] &max;
    delete[] &index;
}
 
void Array::search(int& a){
    int seek = a;
    int count = 0;
    for (int j = 0; j <= max; j++){
        if(seek == arr[j]){
            cout << endl << "The value of " << seek << " is at " << j;
            count++;
        }
    }
    if(count==0)
    cout << endl << "The array doesn't have this element" << endl;
}
 
void Array::add(int& a){
    arr[max+1] = a;
    max++;
}
 
void Array::replace(int& ind, int& val){
    if (ind <= max) {
        arr[ind] = val;
    }
}
 
void Array::del(int& ind){
    if (ind <= max) {
        for (int i = 0; i < (max - ind); i++) {
            arr[ind+i] = arr[ind+i+1];
        }
        arr[max] = 0;
        max--;
    }
}
 
void Array::show(){
    for (int i = 0; i <= max; i++) {
        cout << i << " - " << arr[i] << endl;
    }
}
 
int main(){ 
    int choice;
    int temp0;
    int temp2;
 
    cout << "Enter the size of the array: ";
    cin >> temp0;
    cout << "\n";
 
    Array test(temp0);
 
    cout << endl << "Array created" << endl;
    cout << endl << "Select: \n";
 
    cout << "1. Add element" << endl;
    cout << "2. Search value" << endl;
    cout << "3. Replace element" << endl;
    cout << "4. Delete element" << endl;
    cout << "5. Show array" << endl;
    cout << "0. Exit \n" << endl;
 
    cin >> choice;
    cout << endl;
    while (choice != 0){
        switch (choice)
        {
            case 1: cout << "Enter the value: "; 
                    cin >> temp0; test.add(temp0); temp0 = 0; 
                    cout << "\n"; cin >> choice; 
                    cout << "\n"; break;
            case 2: cout << "\nEnter the value: "; 
                    cin >> temp0; test.search(temp0); temp0 = 0; 
                    cout << "\n"; cin >> choice; 
                    cout << "\n"; break;
            case 3: cout << "\nEnter the index: "; 
                    cin >> temp0; 
                    cout << "\nEnter the value: "; 
                    cin >> temp2; test.replace(temp0, temp2); 
                    temp0 = 0; temp2 = 0; 
                    cout << "\n"; cin >> choice; cout << "\n"; break;
            case 4: cout << "\nEnter the index: "; 
                    cin >> temp0; test.del(temp0); temp0 = 0; 
                    cout << "\n"; cin >> choice; cout << "\n"; break;
            case 5: test.show(); 
                    cout << "\n"; cin >> choice; cout << "\n"; break;
            default: cout << "Press 1 to 5\n "; 
                    cin >> choice; cout << "\n"; break;
        }
    }
    return 0;
}

Касательно этого у меня 2 проблемы (личная инициатива их решить). Во-первых, она нормально не закрывается, не пойму. Второе, пытался через "if-else" реализовать конструкцию, при которой, если пользователь ведет символы (буквы и т.п.), выходило бы сообщение о том, что максимальный размер задается через цифры. В общем, он не хотел подхватывать через "cin >> temp0" заново переменную, тупо сообщение о том, что нельзя такое ввести повторялось до бесконечности. В общем, я был бы рад, если дадите рекомендации касательно этого.

А теперь начинается реальный призыв к помощи! Дабы сократить, выкладываю задания в спойлере:
Кликните здесь для просмотра всего текста
Для задач из лаб. работы №1 реализовать набор операций для работы с классами: сложе-ние, вычитание, инкремент постфиксный и префиксный, преобразование к разным типам (по усмотрению студентов и преподавателя).

Разpаботать функции и перегрузить операции ввода/вывода, позволяющие осуществлять ввод и вывод в удобной фоpме об'ектов классов:
• ввод с клавиатуры и вывод на экран;
• в текстовый файл и из текстового файла;
• в двоичный файл и из двоичного файла.

Изменить демонстpационную пpогpамму. В файл сохранять все созданные объекты. При загрузке в программу их считывать.

Вообще не понимаю, что от меня хотят. Если будете добры написать дополнение к моему исходному коду, то прокомментируйте пожалуйста практически всё, ибо я валенок после 3 дней без сна.

Задание к 3 лабораторной:
Кликните здесь для просмотра всего текста
Для задач из предыдущей лабораторной работы реализовать иерархию классов, изменяя отдельные методы и добавляя члены-данные (по усмотрению студента и преподавателя). В иерархию должно входить 2-3 производных класса. Несколько методов (по смыслу) должны быть виртуальными.

Реализовать класс – двунаправленный список объектов классов наследников. Изменить демонстрационную программу так, чтобы она демонстрировала полиморфическое поведение классов. Исследовать, как реализуется механизм полиморфизма.

Добавить обработку исключений при возникновении ошибок: недостатка памяти, выход за пределы диапазона допустимых значений и т.д. Обработку исключений реализовать на уровне методов и демонстрационной программы. Изменить демонстрационную программу так, чтобы она демонстрировала обработку исключений.

Мой вариант:
Класс для pаботы с массивом. Создать наследников класса:
• класс циклический массив, в котором добавление элементов при заполнении начи-нается с начала;
• класс - очередь на массиве.

Просьба по решению аналогично записи выше

Добавлено через 1 час 3 минуты
Хелп ми, плиз!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2014, 21:36
Ответы с готовыми решениями:

Постpоить класс для pаботы с целыми числами произвольной точности
Всем привет! Помогите пожалуйста написать код к этой задаче: Постpоить класс для pаботы с целыми...

Разработка классов! (Постpоить класс для pаботы с целыми произвольной точности)
Всем добрый вечер! Кто-нибудь объясните что тут от меня требуется?? +примеры если есть... ...

Какую библиотеку бpать для pаботы с гpафикой
Добрый день,такой вопрос , в универе задали дз, написать игру, любую, на любом ЯП. Я вот изучаю C++...

Класс для работы с трёхмерным массивом
Программа должна демонстрировать работу с классом объявленным и определённым, класс применяется для...

3
Эксперт PHP
3026 / 2537 / 1192
Регистрация: 14.05.2014
Сообщений: 7,109
Записей в блоге: 1
11.12.2014, 21:42 2
Цитата Сообщение от krealap Посмотреть сообщение
C++
1
2
delete[] &max;
delete[] &index;
разве под это динамически выделялась память?
Цитата Сообщение от krealap Посмотреть сообщение
C++
1
2
3
for (int i = 0; i <= max; i++){ 
delete[] &arr[i];
}
та же история. У вас одномерный массив. В деструкторе должна быть только эта строчка
C++
1
delete[] arr;
1
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 5
12.12.2014, 10:07  [ТС] 3
Спасибо большое за поправку
Помогите со 2 и 3 заданием, пожалуйста

Добавлено через 1 час 12 минут
АП, чуваки, спасите

Добавлено через 10 часов 54 минуты
Нуждаюсь в помощи
0
0 / 0 / 0
Регистрация: 11.12.2014
Сообщений: 5
25.12.2014, 14:40  [ТС] 4
UP!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2014, 14:40

Создать класс для работы с массивом
При этом должны быть такие требования::-|:-|:stop: Разработать следующие члены класса: 1. Поля:...

Разработать класс для работы с массивом
нужна помощь. 8 вариант

Класс для работы с одномерным массивом
Описать класс для работы с одномерным массивом строк фиксированной длины. Обеспечить следующие...

Класс для работы с одномерным массивом
Помогите разобраться: Написать класс для работы с одномерным массивом. Реализовать конструктор,...

Класс для работы с одномерным массивом
Здравствуйте, я создал класс одномерный массив и при создании массива мне бьет ошибку на...

Класс для работы с одномерным массивом
Помогите дописать класс для работы с одномерным массивом. Реализовать конструктор, создающий массив...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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