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

Необходимо помочь с след. функциями 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++ удаление слов из строки
Здравствуйте! помогите пожалуйста!!! нужно удалить из строки все слова, заканчивающиеся на букву к, если они есть. проверку сделала, а как слова удалить не знаю, даже с чего начать! посмотрите пожалуйста! #include <iostream.h> #include <stdio.h> #include <string.h> int main(void) { int a=0;
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. Есть решенный вариант через указатели, от которых нужно избавиться: void diofant(int a, int b, int *x, int *y, int *nod) { int q, r, x1, x2, y1, y2; if (b == 0) { *nod = a, *x = 1, *y =... подробнее

Показать сообщение отдельно
palamarchukn
9 / 9 / 1
Регистрация: 26.11.2009
Сообщений: 78
19.05.2012, 18:12  [ТС]
Доброго времени суток! Всем спабо за помощь!
Может быть кому пригодится:
Цель Л.Р.: Реализовать стек на языке Си (LIFO). Так же при создании, была реализована корзина для стека. (вспомогательный стек)
Пояснения к работе программы:
-Реализация задачи проведена на языке Microsoft Visual C++ 2008 Express Edition (используя функции языка Си)
-Алгоритмы были использованы из курса лекций и дополнительных учебных материалов.
-Запуск программы производится при запуске stack.exe файла.
-При запуске программы мы видим, консольное приложение, где нам предложены действия над стеком.
-На свое усмотрение я создал вспомогательный стек, который действует по такому же принципу как и стек LIFO,
только предназначенный в качестве корзины.
-Мы можем добавлять, удалять элементы из основного стека, а так же вместо удаления мы можем убирать элементы в корзину.
-И обратно, можем добавлять элементы в основной стек из корзины.
-Заголовочный файл создался автоматически при создании нового проекта, но использован не был.(из за ненадобности)
-Спасибо за внимание!

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
// stack.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"   //заголовочный файл здесь не используется. Он автоматически создается при создании проекта. 
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;  // для русского алфавита
// Объявление типа STACK
 struct STACK {
     int info;
     struct STACK *next;
  };
 //Вспомогательный стек Empty - корзина 
 int Empty(struct STACK *pstack)   //выделение памяти
 {
     if (pstack==NULL)            //условие для возвращения значения
     return 0;
     else
     return 1;
 }
 
 void Add(struct STACK **pstack)  //выделение памяти
 {
     // C++   STACK *tmp=new STACK;              Таким образом происходит выделения памяти в языке C++
     STACK *tmp=(STACK*)malloc(sizeof(STACK)); //Выделение памяти в языке C
     tmp->info=rand()%100;                     //генерация случайных  значений в стеке
     tmp->next=*pstack;
     *pstack=tmp;
 }
 
 void Move(struct STACK **pdopstack, struct STACK **pstack) // движение по стеку с выделением памяти
 {
     struct STACK *tmp=*pdopstack;
     *pdopstack=(*pdopstack)->next;
     tmp->next=*pstack;
     *pstack=tmp;
 }
 
 void Del(struct STACK **pstack)  //удаление элемента со стека
 {
     struct STACK *tmp=*pstack;
     *pstack=(*pstack)->next;
     //delete tmp;                //освобождение памяти в языке c++
     free(tmp);                   //освбождение памяти в языке c
 }
 
 void Show(struct STACK *pstack) //просмотр стека
 {
     struct STACK *tmp=pstack;
     while(tmp!=NULL)
     {
     cout << tmp->info << " ";
     tmp=tmp->next;
     }
 }
 
 void ClearAll(struct STACK **pstack)  //Очистка, удаление элемантов стека
 {
     struct STACK *tmp;
     while(*pstack!=NULL)
     {
     tmp=*pstack;
     *pstack=(*pstack)->next;
     //delete tmp;                      //освобождение памяти в языке c++
     free(tmp);                         //освбождение памяти в языке c
     }
 }
  int main()                           //реализация меню в консоли используя основную функцию case
 {
 
     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();
 
 }
Добавлено через 7 часов 53 минуты
Цитата Сообщение от Nameless One Посмотреть сообщение
И да, что такое iterator?
И да, Nameless One, ответ на Ваш вопрос:
Итератор - объект, позволяющий программисту перебирать все элементы коллекции без учёта особенностей её реализации. Напр.rint(next(A)). Для проверки в общем. Спасибо за помощь.
Можно считать тему закрытой.
a.n.o.n.i.m, тебе тоже огромное спасибо.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru