![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
Очень прошу,откликнитесь пожалуйста! Очень нужно решение! Уже не знаю сколько пытаюсь разобраться - не получается! Хотя с остальными лабами проблем не было :-(((
Определить и реализовать класс - абстрактный тип данных. Определить и реализовать операции над данными этого класса. Написать и выполнить программу полного тестирования этого класса. //=================================== =============== Вот задание: АДТ-однонаправленный список с элементами типа char. Дополнительно перегрузить следующие операции: [] доступ к элементу в заданной позиции, например: int i; char c; list L; c=L[i]; + объединить два списка; != проверка на неравенство. //=================================== =============== Порядок выполнения работы. 1. Выбрать класс АТД в соответствии с вариантом. 2. Определить и реализовать в классе конструкторы, деструктор, функции Input (ввод с клавиатуры) и Print (вывод на экран), перегрузить операцию присваивания. 3. Написать программу тестирования класса и выполнить тестирование. 4. Дополнить определение класса заданными перегруженными операциями ( в соответствии с вариантом). 5. Реализовать эти операции. Выполнить тестирование. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
Есть кто-нибудь, кто хорошо понимает списки???
|
![]() |
![]() |
![]() |
#3 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
![]()
Многие тут всё хорошо понимают, просто поймите, что времени на эту задачку придётся потратить не 5 и не 15 минут.
Мы же помогаем, а не делаем с нуля. Надо решить с нуля - фриланс поможет, за умеренную плату конечно. Иначе давайте то, что у вас получилось, что не работает? |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
#include <iostream.h>
#include <conio.h> #include <string.h> //АТД class Atd{ class Spisok { public: char simv; //Данные Spisok *next; //Указатель на следующий узел Spisok (char x = NULL) //Конструктор {simv = x; next = NULL;} }; Spisok *begin, *end; //Указатели на начало, конец списка public: Atd (); //Конструктор по умолчанию Atd (char *str); //Конструктор с параметрами ~Atd(); //Деструктор bool operator !=(const Atd&); //Перегрузка операции != - проверка на неравенство Atd& operator =(const Atd&); //Перегрузка операции присваивания // Atd& operator +(char); //Перегрузка операции + -объединить два списка (Atd+Atd) // Atd& operator [](char); //Перегрузка операции [] -доступ к элементу в заданной позиции (например: int i; char c;list L;c=L[i]) // void Input(); //Ввод с клавиатуры void Print(); //Функция вывода на экран }; //Конструктор с параметрами Atd :: Atd (char* str) { Spisok *pv = new Spisok; pv->simv = str[0]; begin = end = pv; for (int i=1; i <= (int)strlen(str); i++) { Spisok *pv = new Spisok; pv->simv = str[i]; end->next = pv; end = pv; } cout << endl << "vyzvan konstruktor c parametrami.\n"; } //Деструктор Atd :: ~Atd () { if (begin != NULL ) { Spisok *pv = begin; while (pv) { pv = begin->next; delete begin; begin = pv; } } cout << endl << "vyzvan destructor.\n"; } //Перегрузка операции присваивания Atd& Atd :: operator =(const Atd& x) { cout << "vyzvana peregruzka operatora '='.\n"; this->~Atd(); char dsimv; Spisok *pv = new Spisok; Spisok *dpv = x.begin; dsimv = dpv->simv; dpv = dpv->next; pv->simv = dsimv; begin = end = pv; while (dpv) { Spisok *pv = new Spisok; dsimv = dpv->simv; pv->simv = dsimv; end->next = pv; end = pv; dpv = dpv->next; }; return (*this); }; //Перегрузка операции + -объединить два списка (Atd+Atd) /* Atd& Atd :: operator +(Atd& , Atd& ) { cout << "vyzvana peregruzka operatora '+'.\n"; cout << endl << "Atd: \n"; cout << endl; return (*this); }; */ //Перегрузка операции [] -доступ к элементу в заданной позиции (например: int i; char c;list L;c=L[i]) /* Atd& Atd :: operator [](char x) { cout << "vyzvana peregruzka operatora '[]'.\n"; return (*this); }; */ //Проверка АТД на неравенство bool Atd :: operator !=(const Atd& x) { cout << "vyzvana peregruzka operatora '!='.\n"; Spisok *pv = begin; Spisok *dpv = x.begin; while ((pv)&&(dpv)) { if (pv->simv == dpv->simv) return false; pv = pv->next; dpv = dpv->next; } return true; } //статическая компонента-функция просмотра всего списка void Atd :: Print() { Spisok *pv = begin; cout << endl << "Atd: \n"; while (pv) { cout << pv->simv << ' '; pv = pv->next; } cout << endl; } void main() { cout << "Press ENTER to create objects...\n"; getch (); Atd first("IAM"); cout << "object is created.\n" << "Press ENTER to look at it...\n"; getch (); first.Print(); cout << "Press ENTER to create one more object...\n"; getch(); Atd second("ACOUY"); cout << "list is object.\n" << "Press ENTER to look at it...\n"; getch (); second.Print(); cout << endl << "compare them.\n"; cout << "Press ENTER to look at result.\n"; getch (); if (first != second) cout << "They are didn't =.\n"; else cout << "They are =.\n"; first.Print(); second.Print(); cout << endl << "the first object compare to the second object. And following compare them anew.\n"; cout << "Press ENTER to look at result.\n"; getch (); first = second; if (first != second) cout << "They are didn't =.\n"; else cout << "They are =.\n"; first.Print(); second.Print(); /* cout << endl << "add second object to first object, and [] from second object.\n"; cout << "Press ENTER to look at result.\n"; getch (); */ getch (); } |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
я -
![]() Помогите, пожалуйста, разобраться!.. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
Как сложить два списка???
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
![]()
в последнем элементе ссылкой на следующий элемент должна быть ссылка на первый элемент второго списка.
Skype : UASm1Le.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
Индексирование почти написала, кто-нибудь может привести пример объединения(складывания) двух списков? Ну не получается...
![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 31.10.2008
Сообщений: 500
|
![]()
Вот сюда в последнем элементе списка 1 запиши ссылку на 1 элемент списка 2 !!!
Skype : UASm1Le.
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 30.11.2008
Сообщений: 11
|
![]()
Спасибо, Sm1le!
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операций new, new[], delete, delete[] | IgorKr | Общие вопросы C/C++ | 1 | 22.10.2008 12:14 |
Конструктор, наследование, перегрузка операций | Lioness | Помощь студентам | 18 | 02.06.2008 20:44 |
Нужна помощь с программой ООП на С++ | Vofka | Фриланс | 3 | 30.11.2007 16:52 |