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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
zesen
122 / 85 / 1
Регистрация: 17.10.2010
Сообщений: 436
#1

Не знаю как переделать лабу, есть пример - C++

01.06.2011, 20:30. Просмотров 2936. Ответов 7
Метки нет (Все метки)

Есть готовая лаба, нужно переделать под другой вариан
Помогите, пожалуйста.....

Порядок выполнения работы.
1. Выбрать класс АТД в соответствии с вариантом.
2. Определить и реализовать в классе конструкторы, деструктор, функции Input (ввод с клавиатуры) и Print (вывод на экран), перегрузить операцию присваивания.
3. Написать программу тестирования класса и выполнить тестирование.
4. Дополнить определение класса заданными перегруженными операциями ( в соответствии с вариантом).
5. Реализовать эти операции. Выполнить тестирование.

Методические указания.
1.Класс АТД реализовать как динамический массив. Для этого определение класса должно иметь следующие поля:
 указатель на начало массива;
 максимальный размер массива;
 текущий размер массива.
2. Конструкторы класса размещают массив в памяти и устанавливают его максимальный и текущий размер. Для задания максимального массива использовать константу, определяемую вне класса.
3. Чтобы у вас не возникало проблем, аккуратно работайте с константными объектами. Например:
* конструктор копирования следует определить так:
MyClass (const MyClass& ob);
* операцию присваивания перегрузить так:
MyClass& operator = (const MyClass& ob);


4. Для удобства реализации операций-функций реализовать в классе private(protected)-функции, работающие непосредственно с реализацией класса. Например, для класса множество это могут быть следующие функции:
 включить элемент в множество;
 найти элемент и возвратить его индекс;
 удалить элемент;
 определить, принадлежит ли элемент множеству.
Указанные функции используются в реализации общедоступных функций-операций (operator).

Задание варианта который есть:

2. АТД - множество с элементами типа 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
#include <stdio.h>
#include <stdafx.h>
#include <conio.h>
//#include <iostream.h>
class charArray {
private:
    char *data;
    int size;
public:
    charArray(void){
        data=new char[100];
        size=100;
        for(int index=0;index<size;index++)
            data[index]=0;
    }
    
    charArray(int mySize){
        data=new char[mySize];
        size=mySize;
        for(int index=0;index<size;index++)
            data[index]=0;
    }
    charArray(charArray& ancharArray){ //Конструктор инициализации
        size=ancharArray.size;
        data=new char[ancharArray.size];
        for(int index=0;index<size;index++)
            data[index]=ancharArray.data[index];
    }
    char& operator [](int index){
        if (index>0&&index<=size) {
            return data[index-1];
        }
    }
    charArray& operator = (const charArray& ancharArray) { //присваивание
        if (size > ancharArray.size){
            for (int index=0;index<ancharArray.size;index++)
                data[index]=ancharArray.data[index];
            for (int index=ancharArray.size;index<size;index++)
                data[index]=0;
        }else{
            for (int index=ancharArray.size;index<size;index++)
                data[index]=ancharArray.data[index];
        }
 
        return *this;
    }
    void put(int at,char value){
        if(at>0&&at<=size) {
            data[at-1]=value;
        }
 
    }
    char get(int at){
        if(at>0&&at<=size) {
            return data[at-1];
        }
        else return '\0';
 
    }
    
    ~charArray(){ 
        delete data;
    }
    friend charArray operator *(charArray& c1,charArray& c2){
        
    }
    int operator < (const charArray& ancharArray){
        return size < ancharArray.size;
    }
    charArray& operator -(char ch1){
        for (int index1=0;index1<size;index1++)
            if (data[index1]==ch1)
                for (int index2=index1;index2<size+1;index2++)
                        data[index2]=data[index2+1];
    return *this;           
    }
};
 
 
void main(){
int i1=1;
int i2=1;
charArray a1,a2;
a1.put(i1++,'a');
a1.put(i1++,'b');
a1.put(i1++,'c');
a1.put(i1++,'d');
a1.put(i1++,'e');
a1.put(i1++,'f');
 
a2.put(i2++,'c');
a2.put(i2++,'e');
a2.put(i2++,'f');
 
}
нужно переделать для

4. АТД - множество с элементами типа char. Дополнительно перегрузить следующие операции:
+ добавить элемент в множество (типа set+char);
* пересечение множеств;
int() мощность множества.


я как понимаю мощность это количество элементов
нужно переделать (- на +) и мощность
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2011, 20:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не знаю как переделать лабу, есть пример (C++):

пример на файлы. у меня в коде есть ошибки, но я не знаю, как их исправить - C++
по заданному списку фамилий напечатать каждому упомянутому в списке поздравление к определенному празднику. чтобы избежать шаблона,...

Лабу оформить в виде функции (сама лаба есть) - C++
Товарищи! Прошу помощи, уже 2 недели мучаюсь с одной лабораторной, сил нет больше) Не могу никак написать несколько функций) Точнее просто...

Знаю , что подобное задание на форуме есть, но подскажите как правильно оформить мой код, пожалуйста - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;locale.h&quot; #include &quot;math.h&quot; #include &quot;ctype.h&quot; //Не правильно считает сумму и в...

Лафорье (13глава) - пример из книги, как он есть - не работает - C++
Есть пример в книге Лафорье, в 13 главе (многофайловые программы), называется он vl_app. В программе 3 файла, verylong.h, verylong.cpp,...

Переделать готовый пример - C++
Добрый день помогите переделать пример. По заданию сказано: Перепишите класс класс Stonewt таким образом,чтобы прегрузить все 6...

Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон - C++
Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон, чтобы можно было добавлять элементы в...

7
Gangsterus
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 5
11.11.2013, 17:22 #2
zesen, ДРУЖИЩЕ ПРИВЕТ!!ну что ты переделал эту работу? =)

Добавлено через 2 часа 49 минут
zesen, помоги мне пожалуйста! =)
0
zesen
122 / 85 / 1
Регистрация: 17.10.2010
Сообщений: 436
12.11.2013, 11:17  [ТС] #3
Gangsterus, я уже не помню гляну на домашнем компе. что осталось....
1
Gangsterus
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 5
12.11.2013, 11:45 #4
Спасибо!!посмотри пожалуйста
0
zesen
122 / 85 / 1
Регистрация: 17.10.2010
Сообщений: 436
13.11.2013, 00:31  [ТС] #5
Gangsterus, нашел!

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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <iostream.h>
#include <conio.h >
#include <vcl.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
// инифиализация класса country
class country
{
 public:
    char* name; // Имя
           char* form_of_government; // Форма правления
    float area ; // Площадь
 // Конструктор класса country без параметров
    country()
    {
        name = new char[15];    // выделение памяти для названия страны
        strcpy(name,"default"); // копирование названия поумолчанию в выделенную память
        form_of_government = new char[10];    // выделение памяти для формы правления в стране
        strcpy(form_of_government,"undefined"); // копирование имени поумолчанию в выделенную память
        area =0; // присваивание свойству area 0
        // вывод сообщение о создании нового экземпляра класса  country
        cout<<"Created country object"<<" "<<this<<" name: "<<name<<"\n\r";
    }
// Конструктор класса country с параметрами
// входные параметры:
// nm - Имя
// fog – Форма правления
// ar - Площадь
    country(char* nm, char* fog,float ar)
    {
        name = new char[StrLen(nm)]; // выделение памяти для названия страны
        strcpy(name,nm); // копирование имени в выделенную память
        form_of_government = new char[StrLen(fog)]; // выделение памяти для формы правления в стране
        strcpy(form_of_government,fog); // копирование формы правления в выделенную память
        area =ar; // присваивание свойству area знаение ar
        // вывод сообщение о создании нового экземпляра класса  country
        cout<<"Created country object"<<" "<<this<<" name: "<<name<<"\n\r";
    }
// Конструктор копирования класса country
    country(const country& st)
    {
        name= new char[StrLen(st.name)]; // выделение памяти копии свойства name
        strcpy(name,st.name); // копирование имени  выделенную память
        form_of_government= new char[StrLen(st.form_of_government)]; // выделение памяти копии свойства form_of_government
        strcpy(form_of_government,st.form_of_government); // копирование формы правления в выделенную память
        area=st.area;// присваивание свойству area знаение копируемого экзкмпляра класса
// вывод сообщения об завершении работы конмтруктора копирования
        cout<<"Object copied"<<" "<<this<<" name: "<<name<<"\n\r";
    }
// Диструктор класса country
    ~country()
    {
    // вывод сообщение об уничтожении экземпляра класса country
        cout<<"Destroyed country object"<<" "<<this<<" name: "<<name<<"\n\r";
        delete this->name; // освобождение памяти от строки значения свойства name
        delete this->form_of_government; // освобождение памяти от строки значения свойства form_of_government
        getch();
    }
// Метод set_name предназначен для установки свойства name в экземляре класса country
// входные параметры:
// nm - Имя 
    void set_name(char *nm)
    {
    // вывод сообщение об изменении свойства name экземпляра класса country
        cout<<"Object"<<" "<<this<<" name changed from: "<<name<<" to: "<<nm<<"\n\r";
        delete this->name;// освобождение памяти от строки значения свойства name
        name = new char[StrLen(nm)]; // выделение памяти для свойства name
        strcpy(name,nm); // копирование имени  выделенную память
    }
// Метод set_fog предназначен для установки свойства form_of_government в экземляре класса country
// входные параметры:
// fog – форма правления
    void set_fog(char *fog)
    {
// вывод сообщение об изменении свойства name экземпляра класса country
        cout<<"Object"<<" "<<this<<" form_of_government changed from: "<<form_of_government<<" to: "<<fog<<"\n\r";
        delete this->form_of_government;// освобождение памяти от строки значения свойства form_of_government
        form_of_government = new char[StrLen(fog)]; // выделение памяти для свойства form_of_government
        strcpy(form_of_government,fog); // копирование  новой формы правления в выделенную память
    }
// Метод set_area предназначен для установки свойства area в экземляре класса country
// входные параметры:
// ar - площадь
    void set_area(float ar)
    {
    // вывод сообщение об изменении свойства area экземпляра класса country
        cout<<"Object"<<" "<<this<<" quantity changed from: "<<area<<" to: "<<ar<<"\n\r";
        this->area=ar; // присваивание свойству area знаение ar
    }
// Метод show_name предназначен для просмотра свойства name класса country
    void show_name()
    {
        cout<<"Object"<<" "<<this<<" name is: "<<name<<"\n\r"; // вывод значения name
    }
// Метод show_fog предназначен для просмотра свойства form_of_government класса country
    void show_fog()
    {
        cout<<"Object"<<" "<<this<<" code is: "<<form_of_government<<"\n\r"; // вывод значения form_of_government
    }
// Метод show_area предназначен для просмотра свойства area класса country
    void show_area()
    {
        cout<<"Object"<<" "<<this<<" quantity is: "<<area<<"\n\r"; // вывод значения area
    }
 };
 
//-----------------------------------------------------------------------------
// Функция view предназначена для просмотра элементов экземпляра класса country
void view(country sh)
{
 // Инициализация указателя не метод show_name класса country
    void (country::*show_n)();
    show_n=&country::show_name;
 
        cout<<"\n\r         Info about "<<sh.name<<"\n\r";
        (sh.*show_n)(); // Вывод свойсвтва name на экран
        sh.show_fog(); // Вывод свойсвтва form_of_government на экран
        sh.show_area(); // Вывод свойсвтва area на экран
        cout<<"\n\r";
// при выходе из функции вызывается диструктор для копии объекта переданного в функцию
}
 
//-----------------------------------------------------------------------------
float main(float argc, char* argv[])
{
    country group[2], *one, *two; // определяем массив из 2-х элементов класса country
                                //и двух указателей на экземпляр класса country
                                // при этом вызывается 2 раза конструктор без параметоров
// создаем объект класса country, при этом вызывается конструктор с параметрами
    one=new country("Belarus","smeshan",207);
    two=&group[1]; // присваиваем указателю адрес второго элемента массива group
    int i,n;
 
    for(i=0;i<2;i++)
    {
 
        group[i].set_name(("Country N"+FloatToStr(i)).c_str()); // установка значения свойства name
        group[i].set_fog(("form_of_government N" +FloatToStr(i)).c_str()); // установка значения свойства form_of_government
        group[i].set_area((i+1)*(i+1));// установка значения свойства area
        view(group[i]); // вывод на экран свойств group[i], при этом вызывается конструктор копирования
    }
    one->set_fog("President"); // установка значения свойства form_of_government 
    one->set_name("Polska"); // установка значения свойства name
    one->set_area(300); // установка значения свойства area
    view(*one); // вывод на экран свойств group[i], при этом вызывается конструктор копирования
 
    getch();
    return 0;
 
// при завершении программы вызывается  деструктор для объектов массива group, а также
//объект созданный оператором new, на который указывает указатель one
}
//---------------------------------------------------------------------------
1
Gangsterus
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 5
13.11.2013, 12:33 #6
АААААААААА сапсибо,огромное!!!не знаю как отблагодарить тебя,выручил!!!РЕСПЕКТ!есть же добрые люди,СПАСИБО!!!!!!!!!!!

Добавлено через 4 минуты
Что - то это по-моему не похоже на эту задачу
0
zesen
122 / 85 / 1
Регистрация: 17.10.2010
Сообщений: 436
13.11.2013, 18:25  [ТС] #7
Gangsterus, Си++ сдавал уже давно, надо посмотреть по папкам, если есть интерес могу скинуть папку со всем может что интересного найдешь. Если надо, скинь мыло в личку - перешлю. Мне не жалко
1
Gangsterus
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 5
14.11.2013, 18:06 #8
zesen, давай,попробуем,я сам не силён в нем,учился давно и то на делфи,а щас пошел доучиваться такие задания давать стали... )) [вырезано] кинь сюда архивчик пожалуйста,я очень благодарен тебе, СПАСИБО!

Добавлено через 18 часов 53 минуты
zesen, Дружище,привет!ну что,как дела обстоят с архивчиком?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2013, 18:06
Привет! Вот еще темы с ответами:

Есть пример.Поиск ошибки.dev-C++ - C++
Вечер добрый.Как правильно определить методы,нужно ли вызывать для массива name деструктор в операторе присваивания?При компиляции выдаёт...

Задали лабу, но не знаю, как это описать, горю - C#
Задание: Вычислить и вывести на экран значения функции, заданной с помощью ряда Тейлора с точностью ε=. Вывести количество...

Помогите, не знаю как переделать! - HTML, CSS
Подскажите как переставить время, и как убрать последую кнопку!? Если что вот сайт! http://deathrun-game.at.ua/

Не знаю как переделать запрос - MySQL
есть две таблицы в базе первая - radacct в ней данные о сеансах разных юзеров, подключенных к разным роутерам. в этой таблице есть...


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

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

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