Автор |
Сообщение |
ALaGaR Гуру Предупреждений : 1
|
|
народ подскажите. задали знакомой такое задание, завтро сдавать...
А она незнает как его делать..и с какой стороны начать..
Кто чем может)) Я сам в этот не шарю ...
"Реализовать класс в соответствии с вариантом. Класс должен обеспечивать набор методов для работы с данными. Создать пеpегpужаемые констpуктоpы, констpуктоp копирования, констpуктоp по умолчанию. Реализовать указанные классы с динамическим выделением памяти для хранения некоторых полей. Создать деструктор для освобождения памяти. Посмотреть, как вызываются конструкторы и деструкторы.
Составить демонстpационную пpогpамму. Для pеализации демонстpационной пpогpаммы использовать отдельный модуль. Пpогpамму постpоить с использованием пpоекта. Посмотpеть pаботу пpогpаммы в отладчике, обpатить внимание на пpедставление данных. Постpоить пpогpамму без отладочной инфоpмации. Обpатить внимание на pазмеp пpогpаммы. Посмотpеть, как выглядит оттpанслиpованный код.
Реализовать двунаправленный список. Для указателей на список использовать статические члены-данные. Расширить набор функций для работы со списком. Изменить демонстpационную пpогpамму.
Вариант 4.
Постpоить класс для pаботы с многочленами. Класс должен включать соответствующие поля: порядок, набор коэффициентов.
Класс должен обеспечивать пpостейшие функции для pаботы с данными классами: вычисление значения многочлена для данного параметра, вывод многочлена в удобной форме и т.д." |
|
|
|
|
RawRalf Эксперт Предупреждений : 1
|
|
|
|
|
ALaGaR Гуру Предупреждений : 1
|
|
|
|
|
BuXTeR Продвинутый форумчанин |
|
Нате вам список. Тока отлаживайте сами, я в неадеквате.
Код: |
#include "stdafx.h"
// Жил-был список..
class List{
// а в нем элементы
class Element{
private: // история умалчивает что там было в элементах
int *data; // ...
public: // но достоверно известно, что
Element *next; // были элементы следующие
Element *prev; // и были предыдущие
// а еще были конструкторы:
Element():next(NULL),prev(NULL){data=new int(0);}; // по-умолчанию
Element(int val):next(NULL),prev(NULL){data=new int(val);}; // перегруженный
Element (Element &e) // и конструктор копирования
{
// который все плагиатил:
data=new int(e.getData());
next=e.next;
prev=e.prev;
}
// Был еще деструктор
~Element(){if (data) delete data;next=prev=NULL;}
// и всякие методы
int getData(){return *data;} // для получения
void setData(int val){*data=val;} // и установки данных
};
public: // также ходят слухи , что
Element *first; // был самый первый элемент
Element *last; // и самый последний тоже.. был.
List():first(NULL),last(NULL){} // но в пустом списке их как-бы не было..
~List() // а при удалении списка
{
Element *p=last;
while(p)
{
Element *pt=p;
p=p->prev;
delete pt; // гасили всех
}
first=last=NULL; // ну и их за компанию
}
// и собрался честной люд
// и решил сделать добавление в конец списка. Быть посему:
void Add(int val) // будем добавлять элемент со значением val
{
Element *t=new Element(val); // поэтому создаем новый элемент
// с нужным содержимым
// смотрим куда бы его пихнуть
if(first==NULL) // если нифига нету
{
first=last=t; // то он будет первым и последним в одном лице
first->next=last->next=NULL; // а больше ничего и нету
first->prev=last->prev=NULL;
return; // а больше ничего и не надо
}
// ежели в списке уже кто-то есть
last->next=t; // пихаем после последнего
t->prev=last; // соответсвенно, бывший последний теперь предпоследний..
last=t; // а последний теперича мы!
last->next=NULL; // а дальше хоть трава не расти
}
// а казнить-то тоже надо
void Delete(int n) // неугодных супостатов
{
// ищем супостатов
Element *i = first;
int k=0;
while (i && k<n)
{
i = i->next;
k++;
}
if (i) // нашли! несите топор!
{
if (i==first) // если это самый первый супопстат - к нему подход особый
{
Element *t = new Element(*first);
first=first->next; // а его тут никогда и не было
first->prev=NULL; // правда-правда
delete t; // тыдыщ!
return; // и по домам..
}
// та же ерунда и с супостатом последним
if (i==last)
{
Element *t = new Element(*last);
last=last->prev;
last->next=NULL;
delete t;
return;
}
// если обычный такой супостат, ничего особенного
i->prev->next=i->next; // выводим его из приличного общества
i->next->prev=i->prev;
delete i; // и тыдыщ!
}
}
// смотрим что получилось
void Print(int dir) // направление: dir == 0 --->>> | dir == 1 <<<---
{
Element *i;
dir ? i = last: i = first; // решаем откуда будем начинать (см. dir)
while (i) // и пока есть смысл...
{
printf("%d\n",i->getData()); // ...выводим данные
if (dir)
i=i->prev; // в направлении <<<--- туда
else // или
i=i->next; // в направлении --->>> туда
}
}
};
void main()
{
List *lst = new List;
for (int i=0; i<5;i++)
lst->Add(i);
lst->Delete(3);
// ну-ка, ну-ка шо там:
lst->Print(0);
// а ежели вот так:
printf("-----------------\n");
lst->Print(1);
delete lst;
}
|
|
|
|
|
|
Nikolai Продвинутый форумчанин |
|
браво!! коменты читал из под стола! Теперь отчеты таким же способом писать буду))) |
|
|
|
|
ALaGaR Гуру Предупреждений : 1
|
|
BuXTeR
Большое спасибо
Крут!
вот это пояснения)))
Я думаю тему нада в юмор)) |
|
|
|
|
Aprelle Гуру |
|
BuXTeR
|
|
|
|
|
|