Форум программистов, компьютерный форум CyberForum.ru

Ошибка в проге при создании конструкторов,деструкторов - C++

Восстановить пароль Регистрация
 
levgen
 Аватар для levgen
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
25.05.2013, 21:44     Ошибка в проге при создании конструкторов,деструкторов #1
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
#include <iostream> 
#include <math.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
struct spisok
{
    int inf;
    spisok *next;
    spisok *prev;
};
 
class spobj
{
 
    spisok *head;
    spisok *tail;
 
public:
spobj()
{
    head = NULL;
    tail = NULL;
}
void create (int inf)
{
    spisok *P=new spisok; 
    P->inf=inf; 
    P->prev=tail;
    P->next=NULL;
    if (head)
        tail->next=P;
    else
        head=P;
    tail=P;
}
 
void output ()
{
    spisok *P=head;
    while (P)
    {
        cout << P->inf << ' ';
        P=P->next;
    }
}
 
void mission1 ()
{
    spisok* P=head;
    int kol;
    int elem;
    bool prov;
    cout << "\nВведите искомый элемент";
    cout << "\n ";
    cin >> kol;
    cout << "\nВведите элемент, который его заменит";
    cout << "\n ";
    cin >> elem;
    prov=false;
    spisok* temp = head;
 
    while (temp != NULL)
    {
        if (temp->inf == kol)
        {
            prov=true;
            temp->inf=elem;
        } 
        temp=temp->next;
    }
    if (prov == false)
    {
        cout << "\nТакой элемент отсутствует";
    }
}
 
void mission2 ()
{   
    spobj newSP;
    spisok * temp = head;
    while(temp)
    {
        newSP.create(temp->inf);
        temp=temp->next;
    }
    newSP.output();
}
 
void mission3 ()
{ 
    spisok * temp = tail;
    while (temp) {
        create(temp->inf);
        temp = temp->prev;
    }
 
}
 
void remove()
{   
    spisok* A;
    while(head != NULL)
    {
        A=head;
        head=head->next;
        delete A;
    }
    tail=NULL;
}
};
 
int main()
{
    setlocale(LC_ALL,"rus");
    spobj op;
    cout << "\nВведите количество элементов ";
    int m=0;
    cin >> m;
    int k=0;
    for (int i=0; i<m; i++)
    {
        cout << "\nВведите число ";
        cout <<"\n ";
        cin >> k;
        op.create(k);
    }
    cout << "\nСписок введеных элементов ";
    cout << "\n";
    op.output();
    cout << "\n";
    cout << "\nЗадание №1 (Замена вхождения) ";
    op.mission1 ();
    op.output ();
    cout<<"\n";
    cout << "\n";
    cout << "\nЗадание №2 (Копия списка) ";
    op.mission2 ();
    cout <<"\n";
    cout << "\n";
    cout << "\nЗадание №3 (Инвертированный список) ";
    op.mission3 ();
    cout << "\n\n\n ";
    op.output ();
    op.remove ();
    cout << "\n ";
}
Суть задания такова: переделать данный код (он является кодом для предыдущей моей лабы, работает нормально, а теперь надо его переделать)
Создать не менее двух конструкторов, в том числе - по умолчанию, для объектов.
Создать конструктор копирования с динамическим выделением памяти, деструктор.
Добавить в программу инициализацию объектов с помощью различных конструкторов.
В конструкторе копирования применяйте указатель this, для динамического выделения памяти используйте new.
В деструкторе для освобождения памяти применяйте delete.


Как не пытался переделывать, вылазит ошибка. Помогите пожалуйста, кому не сложно. Заранее спасибо!)

Добавлено через 1 минуту
Еще забыл, что данный код делает эти деиствия( с прошлой лабы ):
Написать программу с встроенными функциями и классом, которые:
в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2;
строит список Р1 - копию списка Р;
добавляет в конец списка Р инвертированный список Р.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 21:44     Ошибка в проге при создании конструкторов,деструкторов
Посмотрите здесь:

C++ Оценить правильность использования конструкторов, деструкторов в коде
C++ Правильное использование конструкторов и деструкторов
C++ Непонятный вызов Деструкторов при создании списка
Разработка классов, создание конструкторов и деструкторов C++
C++ Порядок вызова конструкторов/деструкторов
C++ Как реализовать набор конструкторов и деструкторов
C++ Вызов конструкторов/деструкторов при наследовании
Задание с использованием конструкторов и деструкторов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru