#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
class board
{
public:
board();
~board();
void setCategory(char c[]);
void setHeading(char c[]);
void setDate(char c[]);
void setContact(char c[]);
void setText(char c[]);
char* getCategory();
char* getHeading();
char* getDate();
char* getContact();
char* getText();
private:
char* category;
char* heading;
char* text;
char* date;
char* contact;
};
class list {
public:
void setParams();
void sort(list* d);
list* init();
void addElem(list* d);
void out();
list* next = NULL;
list* prev = NULL;
board obj;
int Id();
int getCount();
int decreaseCount();
private:
static int count;
};
board::~board(void)
{
delete[] category;
delete[] heading;
delete[] date;
delete[] contact;
delete[] text;
}
board::board()
{
category = new char[15];
heading = new char[15];
date = new char[11];
contact = new char[12];
text = new char[50];
};
void board::setCategory(char c[])
{
category = c;
};
void board::setHeading(char c[])
{
heading = c;
};
void board::setDate(char c[])
{
date = c;
};
void board::setContact(char c[])
{
contact = c;
};
void board::setText(char c[])
{
text = c;
};
void list::setParams()
{
char f[8]="Selling";
char c[15]="Garage";
char g[12]="15.10.2015";
char e[13]="79567856432";
char t[100]="I am selling a new garage";
obj.setCategory(f);
obj.setHeading(c);
obj.setDate(g);
obj.setContact(e);
obj.setText(t);
};
char* board::getCategory()
{
return category;
};
char* board::getHeading()
{
return heading;
};
char* board::getContact()
{
return (contact);
};
char* board::getDate()
{
return (date);
};
char* board::getText()
{
return (text);
};
list* list::init()//инициализация
{
Id();
list* lst= new list;
lst->next = NULL; // указатель на следующий узел
cout << "Введите параметры корня:"<<endl;
lst->setParams();
lst->prev = NULL; // указатель на предыдущий узел
return(lst);
}
void list::addElem(list* c)//принимает указатель на элемент, после которого надо добавить новый элемент
{//Путаются указатели на поля объекта
list* temp = new list;
if (c->next==NULL)
{
temp->setParams();
temp->next = NULL;
c->next = temp;
temp->prev = c;
Id();
}
else
{
list* p;
temp ->init();
p = c->next; // сохранение указателя на следующий узел
c->next = temp; // предыдущий узел указывает на создаваемый
cout << "Введите параметры нового узла: " << endl;
temp->setParams();
temp->next = p; // созданный узел указывает на следующий узел
temp->prev = c; // созданный узел указывает на предыдущий узел
p->prev = temp;
}
}
void list::out()
{
list* l=this;
while (true)
{
if (l->prev != NULL)
{
l = l->prev;
}
else break;
}
for (int i = 0; i < getCount(); i++)
{
cout << "Категория объявления: " <<l->obj.getCategory()<<endl;
cout << "Рубрика объявления: " << l->obj.getHeading() << endl;
cout << "Контактный телефон: " << l->obj.getContact() << endl;
cout << "Дата подачи объявления:" << l->obj.getDate() << endl;
cout << "Текст объявления:" << l->obj.getText() << endl;
l = l->next;
}
};
int list::Id()
{
int c1;
c1=++count;
return c1;
}
int list::getCount()
{
int c1;
c1 = count;
return c1;
}
int list::decreaseCount()
{
int c1;
c1 = count--;
return c1;
}
int list::count = 0;
int main()
{
setlocale(LC_ALL, "Russian");
list* Ap= new list;
Ap=Ap->init();
Ap->addElem(Ap);
Ap->addElem(Ap);
Ap->next->out(); //тут ошибка
return 0;
}