Форум программистов, компьютерный форум, киберфорум
Наши страницы

Необходимо помочь с след. функциями assert(), malloc(), iterator - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно написать структуру train http://www.cyberforum.ru/cpp-beginners/thread550289.html
текст задания: В файле содержится информация о железнодорожном расписании (номер поезда, время прибытия на станция, время отправления название станции ). Разработать структуру поезд,...
C++ Вычислить сумму квадратов всех элементов заданного массива A(N), за исключением элементов, кратных пяти. Вычислить сумму квадратов всех элементов заданного массива A(N), за исключением элементов, кратных пяти. http://www.cyberforum.ru/cpp-beginners/thread550286.html
C++ Даны натуральные числа M и N (N>M)
Даны натуральные числа M и N (N>M). Вычислить
C++ удаление слов из строки
Здравствуйте! помогите пожалуйста!!! нужно удалить из строки все слова, заканчивающиеся на букву к, если они есть. проверку сделала, а как слова удалить не знаю, даже с чего начать! посмотрите...
C++ Для заданных вещественных чисел а, b, c определить, имеет ли уравнения ax2+bx+c=0, хотя бы одно вещественное решение http://www.cyberforum.ru/cpp-beginners/thread550267.html
Для заданных вещественных чисел а, b, c определить, имеет ли уравнения ax2+bx+c=0, хотя бы одно вещественное решение. помогите решить на с++
C++ Решение диофантова уравнения на С++ Написать программу, которая принимает в качестве аргументов числа a и b и возвращает структуру из трех полей: x, y и НОД(a,b), которые являются решением диофантова уравнения с параметрами a и b.... подробнее

Показать сообщение отдельно
palamarchukn
9 / 9 / 1
Регистрация: 26.11.2009
Сообщений: 78

Необходимо помочь с след. функциями assert(), malloc(), iterator - C++

16.04.2012, 21:06. Просмотров 669. Ответов 5
Метки (Все метки)

Здравствуйте!
Есть вопрос по реализации некоторых функций.
Написана программа стек в СИ + все возможные действия + доп. стек (корзина).
Необходимо помочь с след. функциями assert(), malloc(), iterator. Нужно переписать программу используя эти функции. Если можно, то хотя бы некоторые куски кода, чтобы понять смысл реализации. Спасибо. Жду ответа.
Сама программа:
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
//#include <memory.h>
#include <stdio.h>
#include <conio.h>
//#include <stdlib.h>
#include <iostream>
#include <windows.h>
//#include <time.h>
 using namespace std;
// Объявление типа STACK
 struct STACK {
 
     int info;
     STACK *next;
 
 };
 //Вспомогательный стек Empty - корзина 
 int Empty(STACK *pstack)
 {
     if (pstack==NULL)
     return 0;
     else
     return 1;
 }
 
 void Add(STACK **pstack)
 {
     STACK *tmp=new STACK;
     tmp->info=rand()%100;
     tmp->next=*pstack;
     *pstack=tmp;
 
 }
 
 void Move(STACK **pdopstack, STACK **pstack)
 {
 
     STACK *tmp=*pdopstack;
     *pdopstack=(*pdopstack)->next;
     tmp->next=*pstack;
     *pstack=tmp;
 
 }
 
 void Del(STACK **pstack)
 {
 
     STACK *tmp=*pstack;
     *pstack=(*pstack)->next;
     delete tmp;
 
 }
 
 void Show(STACK *pstack)
 {
 
     STACK *tmp=pstack;
     while(tmp!=NULL)
     {
     cout << tmp->info << " ";
     tmp=tmp->next;
     }
 
 }
 
 void ClearAll(STACK **pstack)
 {
 
     STACK *tmp;
     while(*pstack!=NULL)
     {
     tmp=*pstack;
     *pstack=(*pstack)->next;
     delete tmp;
     }
 
 }
 
 int main()
 {
 
     setlocale(LC_ALL,"Russian");
     STACK *stack=NULL, *dopstack=NULL;
     int num;
     char otv, otv2;
     do
     {
 
         cout << "1. Добавление элементов в вершину стека" << endl     // сразу же присваиваем переменную otv
         << "2. Удаление элемента с вершины стека" << endl             // сразу же присваиваем переменную otv2
         << "3. Вывод элементов основного стека" << endl
         << "4. Вывод элементов вспомогательного стека" << endl
         << "0. Выход" << endl;
         cout << " = ";
         cin >> otv;
         switch(otv)
         {
 
         case '1':
 
             cout << endl << "1. Добавить новый элемент" << endl
             << "2. Добавить из вспомогательного стека" << endl;
             cout << " = ";
             cin >> otv2;
             switch(otv2)
             {
             case '1':
 
                 cout << endl << "Сколько элементов нужно добавить = " << endl;
                 cin >> num;
                 for (int i=0;i<num;i++)
                 Add(&stack);                     // & адрес, по которому берутся значения
                 cout << endl << "Элементы добавлены" << endl;
                 break;
 
             case '2':
 
                 if (Empty(dopstack)==0)
                 cout << endl << "Вспомогательный стек пуст" << endl;
                 else
                 {
                 Move(&dopstack,&stack);
                 cout << endl << "Элемент добавлен из вспомогательного стека в основной" << endl;
                 }
                 break;
 
             default:
 
                 cout << endl << "Ошибка" << endl;         // это элементарный вывод <<  а, >> Это ввод значений, endl перевод строки
                 break;
 
             }
             break;
 
         case '2':
 
             cout << endl << "1. Удалить элемент" << endl
             << "2. Добавить в вспомогательный стек" << endl << " = ";
             cin >> otv2;
             switch(otv2)
             {
             case '1':
 
                 if (Empty(stack)==0)
                 cout << endl << "Стек пуст" << endl;
                 else
                 {
                 Del(&stack);
                 cout << endl << "Элемент удален" << endl;
                 }
                 break;
 
             case '2':
 
                 if (Empty(stack)==0)
                 cout << endl << "Стек пуст" << endl;
                 else
                 {
                 Move(&stack,&dopstack);
                 cout << endl << "Элемент добавлен в вспомогательный стек" << endl;
                 }
                 break;
 
             default:
 
                 cout << endl << "Ошибка" << endl;
                 break;
 
             }
             break;
 
         case '3':
 
             if (Empty(stack)==0)
             cout << endl << "Стек пуст" << endl;
             else
             {
             cout << endl << "Элементы стека:" << endl;
             Show(stack);
             cout << endl;
             }
             break;
 
         case '4':
 
             if (Empty(dopstack)==0)
             cout << endl << "Вспомогательный стек пуст" << endl;
             else
             {
             cout << endl << "Элементы вспомогательного стека:" << endl;
             Show(dopstack);
             cout << endl;
             }
             break;
 
         case '0':
 
             ClearAll(&stack);
             ClearAll(&dopstack);
             break;
 
         default:
 
             cout << endl << "Ошибка" << endl;
             break;
 
         }
 
     }while(otv!='0');
     cin.get();
 
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru