Творческая работа на тему Объектно ориентированое програмирование на С
Работа добавлена на сайт bukvasha.net: 2014-06-21Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
Міністерство освіти і науки України
Запорізький національний університет
Кафедра інформаційних технологій
Індивідуальна робота
З теми: «С++. Класи і об’єкти»
Виконав:
студ. 2 курсу
матем. ф-ту
гр. 8226-1
Лапін С.М.
Перевірив:
Борю С.Ю.
Запоріжжя 2007
Цель: Разработка простейших классов на примере разработки моделей элементарных объектов и динамических информационных структур (одно и двунаправленных списков).
1 часть работы "разработка простых классов"
Постановка задачи
Разработать класс, набор методов (конструктор и минимум два метода) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Разработать вызывающую программу (main), использующей объекты разработанного класса и тестирующие работоспособность всех методов.
Варианты заданий
14. Объект «прямоугольник заданный длинами двух сторон». Предусмотреть возможность операции присваивания, определения площади и периметра, а так же логический метод, отвечающий на вопрос – является ли прямоугольник квадратом. Конструктор должен позволить создавать объекты без и с начальной инициализацией.
Програма:
#ifndef rectangle__h
#define rectangle__h
#include <math.h>
class rectangle
{
private:
double a, b;
public:
rectangle();
rectangle(double, double);
~rectangle();
rectangle & operator=(const rectangle & x);
double square(void);
double perimeter(void);
double diagonal(void);
int is_square(void);
void print_rectangle(void);
};
#endif
#ifndef conrectangle__h
#define conrectangle__h
#include <iostream.h>
#include "rectangle.h"
rectangle::rectangle()
{
cout<<"The constructor \"rectangle()\" worked.\n";
a=1.0;
b=1.0;
};
rectangle::rectangle(double x, double y)
{
cout<<"The constructor \"rectangle(double, double)\" worked.\n";
a=x;
b=y;
};
rectangle::~rectangle()
{
cout<<"The destructor \"~rectangle()\" worked.\n";
a=0.0;
b=0.0;
};
rectangle & rectangle::operator=(const rectangle & x)
{
if(this==&x) return *this;
this->a=x.a;
this->b=x.b;
return *this;
};
double rectangle::square(void)
{
return a*b;
};
double rectangle::perimeter()
{
return 2*a+2*b;
};
double rectangle::diagonal()
{
return sqrt(a*a+b*b);
};
int rectangle::is_square()
{
if(a==b) return 1;
return 0;
};
void rectangle::print_rectangle()
{
char msg1[]=" ", msg2[]=" not ";
cout<<"a="<<a<<" b="<<b;
cout<<"\nS= "<<square()<<" m^2 P="<<perimeter()<<" m d="<<diagonal()<<" m";
cout<<"\nRectangle is";
if(is_square())
cout<<msg1;
else
cout<<msg2;
cout<<"square.\n";
return;
};
#endif
#include <iostream.h>
#include "conrectangle.h"
void main()
{
rectangle r1;
double a,b;
char s[1];
cout<<"\nESLI VAM ETA PROGA POKAZHETSA TUPOY... NE PEREZHYVAITE! ETO DEISTVITEL'NO TAK :)\n";
do
{
cout<<"\n Our rectangle:\n";
r1.print_rectangle();
cout<<"Input a, b:\n";
cin>>a>>b;
rectangle r2(a, b);
cout<<"\n Your rectangle:\n";
r2.print_rectangle();
r1=r2;
cout<<"\n Your rectangle is our now:\n";
r1.print_rectangle();
cout<<"Repeat or quit?(r/q)...";
cin>>s;
}
while (s[0]!='q');
return;
};
Результати:
D:\Studies\Labs\Cpp\Individ_6>ind1
The constructor "rectangle()" worked.
ESLI VAM ETA PROGA POKAZHETSA TUPOY... NE PEREZHYVAITE! ETO DEISTVITEL'NO TAK :)
Our rectangle:
a=1 b=1
S= 1 m^2 P=4 m d=1.41421 m
Rectangle is square.
Input a, b:
456.125
789.5452485
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Your rectangle is our now:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Repeat or quit?(r/q)...r
The destructor "~rectangle()" worked.
Our rectangle:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Input a, b:
0.4876
0.4876
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Your rectangle is our now:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Repeat or quit?(r/q)...r
The destructor "~rectangle()" worked.
Our rectangle:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Input a, b:
16.23
31.06
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=16.23 b=31.06
S= 504.104 m^2 P=94.58 m d=35.0448 m
Rectangle is not square.
Your rectangle is our now:
a=16.23 b=31.06
S= 504.104 m^2 P=94.58 m d=35.0448 m
Rectangle is not square.
Repeat or quit?(r/q)...q
The destructor "~rectangle()" worked.
The destructor "~rectangle()" worked.
D:\Studies\Labs\Cpp\Individ_6>
2 часть работы «Информационные динамические структуры»
Постановка задачи
Написать программу, в которой создаются динамические структуры, и выполнить их обработку в соответствии со своим вариантом.
Для каждого вариант разработать следующие методы:
1. Конструктор пустого списка.
2. Добавление элемента в список (в соответствии со своим вариантом).
3. Удаление элемента из списка (в соответствии со своим вариантом).
4. Печать списка.
5. Запись списка в файл.
6. Восстановление списка из файла.
7. Деструктор списка (уничтожение).
Порядок выполнения работы
1. Разработать описание класса, выделить публичные и приватные поля данных. Разработать интерфейс класса – прототипы методов.
2. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы.
3. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой.
4. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом.
5. Выполнить изменения в списке и печать списка после каждого изменения.
6. Написать функцию для записи списка в файл.
7. Написать функцию для уничтожения списка.
8. Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой").
9. Написать функцию для восстановления списка из файла.
10. Восстановить список и распечатать его.
11. Уничтожить список.
Варианты заданий
14. Записи в линейном списке содержат поле данных звена типа *char(строка символов). Сформировать двунаправленный список. Удалить из него К элементов с указанными номерами. Добавить К элементов с указанными номерами.
Програма:
#ifndef list_h
#define list_h
class list
{
private:
struct element
{
char* info;
element* up;
element* down;
};
element *first, *last, *current;
public:
list(); //constructor
~list(); //destructor
void del_list(); //ochishchajet spisok
void init_list(int,char*); //initsializatsia spiska fonarhym metodom
void print_list(); //vyvod na ekran spiska
int current_element(int); //zdelat element s nomerom "int" tekushchim, vernetsa 0;
//Esli doidem do kontsa spiska,to vernetsa nomer poslednego elementa,kotoryi i budet tekushchim
int next_element(); //sdelat tekushchim sledujushchiy element tekuschuego
int divvious_element(); //sdelat tekushchim divdydushchiy element tekuschuego
int num_current(); //nomer v spiske tekushchego elementa
char* read_element(int &); //prochitat element s nomerom; Robe jogo tekushchim
char* read_element(); //prochitat tekushchiy element
void add_element(char*, int &);//dobavit element na nomer "int"; Robe novyi element tekushchim
void add_after(char*); //dobavit element posle tekushchego; Robe novyi element tekushchim
void add_before(char*); //dobavit element do tekushchego; Robe novyi element tekushchim
void del_element(); //udalit tekushchiy element; Robe sleduushchiy element tekushchim
void del_element(int &); //udalit element z nomerom "int"; Robe sleduushchiy element tekushchim
int fput_list(char*); //zapisat spisok v fail s imenem char*
int fget_list(char*); //vostanovit spisok iz faila s imenem char*
int num_list(); //kol-vo zvenjev u spiska
};
#endif
#ifndef list__h
#define list__h
#include "list.h"
#include <iostream.h>
list::list()
{
current=last=first=NULL;
};
void list::add_after(char* s)
{
if (current==NULL)
{
current=new element[1];
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
current->up=current->down=NULL;
first=last=current;
return;
};
if (current==last)
{
last=new element[1];
last->info=new char[strlen(s)+1];
strcpy(last->info,s);
last->down=NULL;
last->up=current;
current->down=last;
current=last;
return;
};
//put in buffer adress down
last->down=current->down;
current->down=new element[1];
current->down->up=current;
current=current->down;
current->down=last->down;
//clear buffer
last->down->up=current;
last->down=NULL;
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
return;
};
void list::add_before(char* s)
{
if (current==NULL)
{
add_after(s);
return;
};
if (current==first)
{
first=new element[1];
first->up=NULL;
first->down=current;
current=current->up=first;
first->info=new char[strlen(s)+1];
strcpy(first->info,s);
return;
};
first->up=current->up;
current->up=new element[1];
current->up->down=current;
current=current->up;
current->up=first->up;
first->up->down=current;
first->up=NULL;
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
return;
};
void list::add_element(char* s, int &k)
{
int i;
i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.Po etomu vmesto "<<k<<" nomera, functsia dobavit info elementa na "<<i+1<<"-e mesto(poslednee v spiske)!!!\n";
k=i+1;
add_after(s);
};
if(i==0)
Запорізький національний університет
Кафедра інформаційних технологій
Індивідуальна робота
З теми: «С++. Класи і об’єкти»
Виконав:
студ. 2 курсу
матем. ф-ту
гр. 8226-1
Лапін С.М.
Перевірив:
Борю С.Ю.
Запоріжжя 2007
Цель: Разработка простейших классов на примере разработки моделей элементарных объектов и динамических информационных структур (одно и двунаправленных списков).
1 часть работы "разработка простых классов"
Постановка задачи
Разработать класс, набор методов (конструктор и минимум два метода) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Разработать вызывающую программу (main), использующей объекты разработанного класса и тестирующие работоспособность всех методов.
Варианты заданий
14. Объект «прямоугольник заданный длинами двух сторон». Предусмотреть возможность операции присваивания, определения площади и периметра, а так же логический метод, отвечающий на вопрос – является ли прямоугольник квадратом. Конструктор должен позволить создавать объекты без и с начальной инициализацией.
Програма:
#ifndef rectangle__h
#define rectangle__h
#include <math.h>
class rectangle
{
private:
double a, b;
public:
rectangle();
rectangle(double, double);
~rectangle();
rectangle & operator=(const rectangle & x);
double square(void);
double perimeter(void);
double diagonal(void);
int is_square(void);
void print_rectangle(void);
};
#endif
#ifndef conrectangle__h
#define conrectangle__h
#include <iostream.h>
#include "rectangle.h"
rectangle::rectangle()
{
cout<<"The constructor \"rectangle()\" worked.\n";
a=1.0;
b=1.0;
};
rectangle::rectangle(double x, double y)
{
cout<<"The constructor \"rectangle(double, double)\" worked.\n";
a=x;
b=y;
};
rectangle::~rectangle()
{
cout<<"The destructor \"~rectangle()\" worked.\n";
a=0.0;
b=0.0;
};
rectangle & rectangle::operator=(const rectangle & x)
{
if(this==&x) return *this;
this->a=x.a;
this->b=x.b;
return *this;
};
double rectangle::square(void)
{
return a*b;
};
double rectangle::perimeter()
{
return 2*a+2*b;
};
double rectangle::diagonal()
{
return sqrt(a*a+b*b);
};
int rectangle::is_square()
{
if(a==b) return 1;
return 0;
};
void rectangle::print_rectangle()
{
char msg1[]=" ", msg2[]=" not ";
cout<<"a="<<a<<" b="<<b;
cout<<"\nS= "<<square()<<" m^2 P="<<perimeter()<<" m d="<<diagonal()<<" m";
cout<<"\nRectangle is";
if(is_square())
cout<<msg1;
else
cout<<msg2;
cout<<"square.\n";
return;
};
#endif
#include <iostream.h>
#include "conrectangle.h"
void main()
{
rectangle r1;
double a,b;
char s[1];
cout<<"\nESLI VAM ETA PROGA POKAZHETSA TUPOY... NE PEREZHYVAITE! ETO DEISTVITEL'NO TAK :)\n";
do
{
cout<<"\n Our rectangle:\n";
r1.print_rectangle();
cout<<"Input a, b:\n";
cin>>a>>b;
rectangle r2(a, b);
cout<<"\n Your rectangle:\n";
r2.print_rectangle();
r1=r2;
cout<<"\n Your rectangle is our now:\n";
r1.print_rectangle();
cout<<"Repeat or quit?(r/q)...";
cin>>s;
}
while (s[0]!='q');
return;
};
Результати:
D:\Studies\Labs\Cpp\Individ_6>ind1
The constructor "rectangle()" worked.
ESLI VAM ETA PROGA POKAZHETSA TUPOY... NE PEREZHYVAITE! ETO DEISTVITEL'NO TAK :)
Our rectangle:
a=1 b=1
S= 1 m^2 P=4 m d=1.41421 m
Rectangle is square.
Input a, b:
456.125
789.5452485
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Your rectangle is our now:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Repeat or quit?(r/q)...r
The destructor "~rectangle()" worked.
Our rectangle:
a=456.125 b=789.545
S= 360131 m^2 P=2491.34 m d=911.829 m
Rectangle is not square.
Input a, b:
0.4876
0.4876
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Your rectangle is our now:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Repeat or quit?(r/q)...r
The destructor "~rectangle()" worked.
Our rectangle:
a=0.4876 b=0.4876
S= 0.237754 m^2 P=1.9504 m d=0.689571 m
Rectangle is square.
Input a, b:
16.23
31.06
The constructor "rectangle(double, double)" worked.
Your rectangle:
a=16.23 b=31.06
S= 504.104 m^2 P=94.58 m d=35.0448 m
Rectangle is not square.
Your rectangle is our now:
a=16.23 b=31.06
S= 504.104 m^2 P=94.58 m d=35.0448 m
Rectangle is not square.
Repeat or quit?(r/q)...q
The destructor "~rectangle()" worked.
The destructor "~rectangle()" worked.
D:\Studies\Labs\Cpp\Individ_6>
2 часть работы «Информационные динамические структуры»
Постановка задачи
Написать программу, в которой создаются динамические структуры, и выполнить их обработку в соответствии со своим вариантом.
Для каждого вариант разработать следующие методы:
1. Конструктор пустого списка.
2. Добавление элемента в список (в соответствии со своим вариантом).
3. Удаление элемента из списка (в соответствии со своим вариантом).
4. Печать списка.
5. Запись списка в файл.
6. Восстановление списка из файла.
7. Деструктор списка (уничтожение).
Порядок выполнения работы
1. Разработать описание класса, выделить публичные и приватные поля данных. Разработать интерфейс класса – прототипы методов.
2. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы.
3. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой.
4. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом.
5. Выполнить изменения в списке и печать списка после каждого изменения.
6. Написать функцию для записи списка в файл.
7. Написать функцию для уничтожения списка.
8. Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой").
9. Написать функцию для восстановления списка из файла.
10. Восстановить список и распечатать его.
11. Уничтожить список.
Варианты заданий
14. Записи в линейном списке содержат поле данных звена типа *char(строка символов). Сформировать двунаправленный список. Удалить из него К элементов с указанными номерами. Добавить К элементов с указанными номерами.
Програма:
#ifndef list_h
#define list_h
class list
{
private:
struct element
{
char* info;
element* up;
element* down;
};
element *first, *last, *current;
public:
list(); //constructor
~list(); //destructor
void del_list(); //ochishchajet spisok
void init_list(int,char*); //initsializatsia spiska fonarhym metodom
void print_list(); //vyvod na ekran spiska
int current_element(int); //zdelat element s nomerom "int" tekushchim, vernetsa 0;
//Esli doidem do kontsa spiska,to vernetsa nomer poslednego elementa,kotoryi i budet tekushchim
int next_element(); //sdelat tekushchim sledujushchiy element tekuschuego
int divvious_element(); //sdelat tekushchim divdydushchiy element tekuschuego
int num_current(); //nomer v spiske tekushchego elementa
char* read_element(int &); //prochitat element s nomerom; Robe jogo tekushchim
char* read_element(); //prochitat tekushchiy element
void add_element(char*, int &);//dobavit element na nomer "int"; Robe novyi element tekushchim
void add_after(char*); //dobavit element posle tekushchego; Robe novyi element tekushchim
void add_before(char*); //dobavit element do tekushchego; Robe novyi element tekushchim
void del_element(); //udalit tekushchiy element; Robe sleduushchiy element tekushchim
void del_element(int &); //udalit element z nomerom "int"; Robe sleduushchiy element tekushchim
int fput_list(char*); //zapisat spisok v fail s imenem char*
int fget_list(char*); //vostanovit spisok iz faila s imenem char*
int num_list(); //kol-vo zvenjev u spiska
};
#endif
#ifndef list__h
#define list__h
#include "list.h"
#include <iostream.h>
list::list()
{
current=last=first=NULL;
};
void list::add_after(char* s)
{
if (current==NULL)
{
current=new element[1];
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
current->up=current->down=NULL;
first=last=current;
return;
};
if (current==last)
{
last=new element[1];
last->info=new char[strlen(s)+1];
strcpy(last->info,s);
last->down=NULL;
last->up=current;
current->down=last;
current=last;
return;
};
//put in buffer adress down
last->down=current->down;
current->down=new element[1];
current->down->up=current;
current=current->down;
current->down=last->down;
//clear buffer
last->down->up=current;
last->down=NULL;
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
return;
};
void list::add_before(char* s)
{
if (current==NULL)
{
add_after(s);
return;
};
if (current==first)
{
first=new element[1];
first->up=NULL;
first->down=current;
current=current->up=first;
first->info=new char[strlen(s)+1];
strcpy(first->info,s);
return;
};
first->up=current->up;
current->up=new element[1];
current->up->down=current;
current=current->up;
current->up=first->up;
first->up->down=current;
first->up=NULL;
current->info=new char[strlen(s)+1];
strcpy(current->info,s);
return;
};
void list::add_element(char* s, int &k)
{
int i;
i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.
k=i+1;
add_after(s);
};
if(i==0)
add_before(s);
return;
};
void list::del_element()
{
if (first==NULL)
{
cout<<"Nemogu udalit element so spiska. Spisok pust.\n";
return;
};
if (current==first)
{
if (current==last)
{first=last=NULL;}
else
{
first=current->down;
first->up=NULL;
};
delete[]current->info;
delete[]current;
current=first;
return;
};
if (current==last)
{
last=current->up;
last->down=NULL;
delete[]current->info;
delete[]current;
current=last;
return;
};
last->down=current->down;
current->up->down=current->down;
current->down->up=current->up;
delete[]current->info;
delete[]current;
current=last->down;
last->down=NULL;
return;
};
void list::del_element(int &k)
{
int i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.Po etomu vmesto "<<k<<" elementa, functsia udalit "<<i<<" element!!!\n";
k=i;
};
del_element();
return;
};
list::~list()
{
del_list();
};
void list::del_list()
{
while (last!=first)
{
current=last;
delete [] last->info;
last=last->up;
delete [] current;
};
if (first) delete [] first->info;
delete[]first;
current=first=last=NULL;
return;
};
//current ostaetsa netronutym
int list::num_list()
{
if(first==NULL) return 0;
int i(1);
element* temp=first->down;
while (temp!=NULL)
{
i++;
temp=temp->down;
};
return i;
};
//if OK return 0, esle return i (number current element)
int list::current_element(int k)
{
if (first==NULL)
{
cout<<"V spiske 0 elementov.\n";
return 0;
};
int i(1);
current=first;
if(i==k) return 0;
while (current->down)
{
current=current->down;
if (++i==k) return 0;
};
return i;
};
//Esli sled. element sdelalsa tekuschim return 1, else 0
int list::next_element()
{
if (current->down)
{
current=current->down;
return 1;
};
return 0;
};
//Esli divd. element sdelalsa tekuschim return 1, else 0
int list::divvious_element()
{
if (current->up)
{
current=current->up;
return 1;
};
return 0;
};
int list::num_current()
{
if(current==NULL)return 0;
int i(1);
element* temp=current;
while (temp->up!=NULL)
{
i++;
temp=temp->up;
};
return i;
};
char* list::read_element()
{
return current->info;
};
char* list::read_element(int &k)
{
int i;
i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.Po etomu vmesto "<<k<<" elementa, functsia vozvrashchaet "<<i<<" element!!!\n";
k=i;
};
return current->info;
};
void list::init_list(int k, char* str)
{
if (k==0) return;
int f(2);
char* s;
s=new char[strlen(str)+7];
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\n";
cout<<"Chto delat?(0/1/2)\n";
cout<<" 0)Otmenit initsializatsiu;\n";
cout<<" 1)Dopisat fonarnuu infomatsiu v konets spiska;\n";
cout<<" 2)Zamenit spisok novoi fonarnoi informatsyei.\n";
cin>>f;
};
if(f==0) return;
if(f==1) current=last;
if(f==2)
{
del_list();
first=new element[1];
first->info=new char[strlen(str)+3];
sprintf(first->info,"%s 1",str);
first->up=first->down=NULL;
current=last=first;
};
for (int j=f; j<=k; j++)
{
sprintf(s,"%s %d",str,j);
add_after(s);
};
return;
};
void list::print_list()
{
cout<<"Vmestimoe spiska:\n";
element* temp=first;
if (first==NULL)
{
cout<<"Spisok pust!!!\n";
return;
};
do
{
cout<<"| "<<temp->info<<" |";
temp=temp->down;
}
while (temp);
cout<<"\n";
return;
};
int list::fput_list(char* s)
{
FILE* f;
if ((f=fopen(s,"w+"))==NULL)
{
cout << "Can not open file "<<s<<"\n";
return 0;
};
if (!first) fclose(f);
element* temp=first;
do
{
fputs(temp->info,f);
fputs("\n",f);
temp=temp->down;
}
while (temp);
fclose(f);
return 1;
};
int list::fget_list(char* s)
{
int ff=2;
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\nChto delat?(0/1/2)\n 0)Otmenit vostanovlenie iz faila;\n";
cout<<" 1)Vostanovit infomatsiu iz faila v konets spiska;\n";
cout<<" 2)Zamenit spisok informatsyei iz faila.\n";
cin>>ff;
};
if(!ff) return ff;
FILE* f;
if ((f=fopen(s,"r"))==NULL)
{
cout<<"Can not open file "<<s<<"\n";
return 0;
};
char str[255];
if(ff==1)
current=last;
char *sss;
if(ff==2)
del_list();
while (fgets(str,256,f))
{
sss=new char[strlen(str)];
int j=0;
while(str[j]!='\n')
sss[j]=str[j++];
sss[j]='\0';
add_after(sss);
delete [] sss;
};
fclose(f);
return ff;
};
#endif
#include "list_.h"
void main()
{
int n=16;
cout<<"Rozhdenie spiska...\n";
list s;
char a[255];
strcpy(a,"Seha");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko proinitsializirovat' elementov spiska?\nn=";
cin>>n;
cout<<"Initsialitsia spiska...\n";
s.init_list(n,a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: ";
cout<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie posle tekuschego...\n";
s.add_after(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Delaem tekuschim sledujushiy element...\n";
s.next_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie do tekuschego...\n";
s.add_before(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element\n";
cin>>k;
cout<<"Dobavlenie "<<k<<"-togo elementa...\n";
s.add_element(a,k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov udalit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Udalenie tekuschego...\n";
s.del_element();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno udalit?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite nomer elementa, kotoryi nuzhno udalit'\n";
cin>>k;
cout<<"Udalenie "<<k<<"-togo elementa...\n";
s.del_element(k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Zapis' spiska v fail...\n";
s.fput_list("Seha.lsm");
cout<<"Udalenie spiska...\n";
s.del_list();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Vostanovlenie spiska...\n";
s.fget_list("Seha.lsm");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Delaem tekuschim divdyduschiy element...\n";
s.divvious_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Press <Enter> for exit...";
getchar();
};
Результат:
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>ind2
Rozhdenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Skol'ko proinitsializirovat' elementov spiska?
n=9
Initsialitsia spiska...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 9
Tekuschiy element spiska: 9
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=6
Vsego elementov v spiske: 9
Tekuschiy element spiska: 6
Skol'ko elementov dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Sveta 1
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Seha 7 || Seha 8
|| Seha 9 |
Vsego elementov v spiske: 10
Tekuschiy element spiska: 7
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 2
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Seha 7
|| Seha 8 || Seha 9 |
Vsego elementov v spiske: 11
Tekuschiy element spiska: 8
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 3
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 9
Press <Enter> for go on...
Delaem tekuschim sledujushiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Svitlana 1
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 2
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 3
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
I
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
10
Dobavlenie 10-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
like
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
11
Dobavlenie 11-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 11
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
you!!!
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
12
Dobavlenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 ||
Seha 9 |
Vsego elementov v spiske: 18
Tekuschiy element spiska: 12
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=4
Vsego elementov v spiske: 18
Tekuschiy element spiska: 4
Skol'ko elementov udalit'?
3
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I ||
like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || yo
u!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Sv
itlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 4
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno udalit?
3
Vvedite nomer elementa, kotoryi nuzhno udalit'
2
Udalenie 2-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 2
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 12
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Zapis' spiska v fail...
Udalenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Vostanovlenie spiska...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Delaem tekuschim divdyduschiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 11
Press <Enter> for go on...
Press <Enter> for exit...
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>
Seha.lsm:
Seha 1
Seha 3
Sveta 1
Sveta 2
Sveta 3
I
like
you!!!
Svitlana 3
Svitlana 2
Svitlana 1
Seha 9
return;
};
void list::del_element()
{
if (first==NULL)
{
cout<<"Nemogu udalit element so spiska. Spisok pust.\n";
return;
};
if (current==first)
{
if (current==last)
{first=last=NULL;}
else
{
first=current->down;
first->up=NULL;
};
delete[]current->info;
delete[]current;
current=first;
return;
};
if (current==last)
{
last=current->up;
last->down=NULL;
delete[]current->info;
delete[]current;
current=last;
return;
};
last->down=current->down;
current->up->down=current->down;
current->down->up=current->up;
delete[]current->info;
delete[]current;
current=last->down;
last->down=NULL;
return;
};
void list::del_element(int &k)
{
int i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.
k=i;
};
del_element();
return;
};
list::~list()
{
del_list();
};
void list::del_list()
{
while (last!=first)
{
current=last;
delete [] last->info;
last=last->up;
delete [] current;
};
if (first) delete [] first->info;
delete[]first;
current=first=last=NULL;
return;
};
//current ostaetsa netronutym
int list::num_list()
{
if(first==NULL) return 0;
int i(1);
element* temp=first->down;
while (temp!=NULL)
{
i++;
temp=temp->down;
};
return i;
};
//if OK return 0, esle return i (number current element)
int list::current_element(int k)
{
if (first==NULL)
{
cout<<"V spiske 0 elementov.\n";
return 0;
};
int i(1);
current=first;
if(i==k) return 0;
while (current->down)
{
current=current->down;
if (++i==k) return 0;
};
return i;
};
//Esli sled. element sdelalsa tekuschim return 1, else 0
int list::next_element()
{
if (current->down)
{
current=current->down;
return 1;
};
return 0;
};
//Esli divd. element sdelalsa tekuschim return 1, else 0
int list::divvious_element()
{
if (current->up)
{
current=current->up;
return 1;
};
return 0;
};
int list::num_current()
{
if(current==NULL)return 0;
int i(1);
element* temp=current;
while (temp->up!=NULL)
{
i++;
temp=temp->up;
};
return i;
};
char* list::read_element()
{
return current->info;
};
char* list::read_element(int &k)
{
int i;
i=current_element(k);
if ((i<k)&&(i!=0))
{
cout<<"V spiske vsego "<<i<<" elmentov.
k=i;
};
return current->info;
};
void list::init_list(int k, char* str)
{
if (k==0) return;
int f(2);
char* s;
s=new char[strlen(str)+7];
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\n";
cout<<"Chto delat?(0/1/2)\n";
cout<<" 0)Otmenit initsializatsiu;\n";
cout<<" 1)Dopisat fonarnuu infomatsiu v konets spiska;\n";
cout<<" 2)Zamenit spisok novoi fonarnoi informatsyei.\n";
cin>>f;
};
if(f==0) return;
if(f==1) current=last;
if(f==2)
{
del_list();
first=new element[1];
first->info=new char[strlen(str)+3];
sprintf(first->info,"%s 1",str);
first->up=first->down=NULL;
current=last=first;
};
for (int j=f; j<=k; j++)
{
sprintf(s,"%s %d",str,j);
add_after(s);
};
return;
};
void list::print_list()
{
cout<<"Vmestimoe spiska:\n";
element* temp=first;
if (first==NULL)
{
cout<<"Spisok pust!!!\n";
return;
};
do
{
cout<<"| "<<temp->info<<" |";
temp=temp->down;
}
while (temp);
cout<<"\n";
return;
};
int list::fput_list(char* s)
{
FILE* f;
if ((f=fopen(s,"w+"))==NULL)
{
cout << "Can not open file "<<s<<"\n";
return 0;
};
if (!first) fclose(f);
element* temp=first;
do
{
fputs(temp->info,f);
fputs("\n",f);
temp=temp->down;
}
while (temp);
fclose(f);
return 1;
};
int list::fget_list(char* s)
{
int ff=2;
if (first!=NULL)
{
cout<<"Spisok ne pust!!!\nChto delat?(0/1/2)\n 0)Otmenit vostanovlenie iz faila;\n";
cout<<" 1)Vostanovit infomatsiu iz faila v konets spiska;\n";
cout<<" 2)Zamenit spisok informatsyei iz faila.\n";
cin>>ff;
};
if(!ff) return ff;
FILE* f;
if ((f=fopen(s,"r"))==NULL)
{
cout<<"Can not open file "<<s<<"\n";
return 0;
};
char str[255];
if(ff==1)
current=last;
char *sss;
if(ff==2)
del_list();
while (fgets(str,256,f))
{
sss=new char[strlen(str)];
int j=0;
while(str[j]!='\n')
sss[j]=str[j++];
sss[j]='\0';
add_after(sss);
delete [] sss;
};
fclose(f);
return ff;
};
#endif
#include "list_.h"
void main()
{
int n=16;
cout<<"Rozhdenie spiska...\n";
list s;
char a[255];
strcpy(a,"Seha");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko proinitsializirovat' elementov spiska?\nn=";
cin>>n;
cout<<"Initsialitsia spiska...\n";
s.init_list(n,a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list();
cout<<"\nTekuschiy element spiska: ";
cout<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie posle tekuschego...\n";
s.add_after(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Delaem tekuschim sledujushiy element...\n";
s.next_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Dobavlenie do tekuschego...\n";
s.add_before(a);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite stroku dlja dobavlenija v spisok\n";
gets(a);
cout<<"Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element\n";
cin>>k;
cout<<"Dobavlenie "<<k<<"-
s.add_element(a,k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Kakoi element v spiske sdelat' tekeschim?\nn=";
cin>>n;
s.current_element(n);
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Skol'ko elementov udalit'?\n";
cin>>n;
getchar();//clear iostream
for (int i=0; i<n; i++)
{
cout<<"Udalenie tekuschego...\n";
s.del_element();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
};
cout<<"Skol'ko eschje elementov spiska nuzhno udalit?\n";
cin>>n;
getchar();//clear iostream
for (int k,i=0; i<n; i++)
{
cout<<"Vvedite nomer elementa, kotoryi nuzhno udalit'\n";
cin>>k;
cout<<"Udalenie "<<k<<"-
s.del_element(k);
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();//clear iostream
getchar();
};
cout<<"Zapis' spiska v fail...\n";
s.fput_list("Seha.lsm");
cout<<"Udalenie spiska...\n";
s.del_list();
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Vostanovlenie spiska...\n";
s.fget_list("Seha.lsm");
s.print_list();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Delaem tekuschim divdyduschiy element...\n";
s.divvious_element();
cout<<"\nVsego elementov v spiske: "<<s.num_list()<<"\nTekuschiy element spiska: "<<s.num_current()<<'\n';
cout<<"Press <Enter> for go on...\n";
getchar();
cout<<"Press <Enter> for exit...";
getchar();
};
Результат:
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>ind2
Rozhdenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Skol'ko proinitsializirovat' elementov spiska?
n=9
Initsialitsia spiska...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 9
Tekuschiy element spiska: 9
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=6
Vsego elementov v spiske: 9
Tekuschiy element spiska: 6
Skol'ko elementov dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Sveta 1
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Seha 7 || Seha 8
|| Seha 9 |
Vsego elementov v spiske: 10
Tekuschiy element spiska: 7
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 2
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Seha 7
|| Seha 8 || Seha 9 |
Vsego elementov v spiske: 11
Tekuschiy element spiska: 8
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Sveta 3
Dobavlenie posle tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 9
Press <Enter> for go on...
Delaem tekuschim sledujushiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
Svitlana 1
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 2
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
Svitlana 3
Dobavlenie do tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 10
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno dobavit'?
3
Vvedite stroku dlja dobavlenija v spisok
I
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
10
Dobavlenie 10-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 10
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
like
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
11
Dobavlenie 11-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 11
Press <Enter> for go on...
Vvedite stroku dlja dobavlenija v spisok
you!!!
Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element
12
Dobavlenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta
3 || I || like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 ||
Seha 9 |
Vsego elementov v spiske: 18
Tekuschiy element spiska: 12
Press <Enter> for go on...
Kakoi element v spiske sdelat' tekeschim?
n=4
Vsego elementov v spiske: 18
Tekuschiy element spiska: 4
Skol'ko elementov udalit'?
3
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I ||
like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 17
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || yo
u!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 16
Tekuschiy element spiska: 4
Press <Enter> for go on...
Udalenie tekuschego...
Vmestimoe spiska:
| Seha 1 || Seha 2 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Sv
itlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 15
Tekuschiy element spiska: 4
Press <Enter> for go on...
Skol'ko eschje elementov spiska nuzhno udalit?
3
Vvedite nomer elementa, kotoryi nuzhno udalit'
2
Udalenie 2-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 14
Tekuschiy element spiska: 2
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 8 || Seha 9 |
Vsego elementov v spiske: 13
Tekuschiy element spiska: 12
Press <Enter> for go on...
Vvedite nomer elementa, kotoryi nuzhno udalit'
12
Udalenie 12-togo elementa...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Zapis' spiska v fail...
Udalenie spiska...
Vmestimoe spiska:
Spisok pust!!!
Vsego elementov v spiske: 0
Tekuschiy element spiska: 0
Press <Enter> for go on...
Vostanovlenie spiska...
Vmestimoe spiska:
| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |
| Svitlana 2 || Svitlana 1 || Seha 9 |
Vsego elementov v spiske: 12
Tekuschiy element spiska: 12
Press <Enter> for go on...
Delaem tekuschim divdyduschiy element...
Vsego elementov v spiske: 12
Tekuschiy element spiska: 11
Press <Enter> for go on...
Press <Enter> for exit...
D:\Studies\Labs\Programing\Labs\Cpp\Individ_6\ind2>
Seha.lsm:
Seha 1
Seha 3
Sveta 1
Sveta 2
Sveta 3
I
like
you!!!
Svitlana 3
Svitlana 2
Svitlana 1
Seha 9