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

Списки типа стек - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сложение в двоичной системе счисления http://www.cyberforum.ru/cpp-beginners/thread1179979.html
Добрый день! Помогите пожалуйста, не знаю как реализовать. Например n = 1010.1111 m = 1011.0101 . Я понимаю как сделать это на бумаге, но как сделать на практике? Как например практически записать, чтобы программа складывала последние числа, в данном случае 1+1, писала 0, и единицу запоминала для следующего разряда?
C++ Определить число узлов в дереве, в которых есть указатель только на одну ветвь Люди добрый помогите ,пожалуйста, нужно определить число узлов в дереве, в которых есть указатель только на одну ветвь. Мой код дерева: #include<iostream.h> struct node { int Key; int Count; node *Left; node *Right; }; http://www.cyberforum.ru/cpp-beginners/thread1179973.html
Графическая реализация на С++ C++
Добрый вечер, подскажите пожалуйста решение проблемы...есть код,который реализует графический вывод примитивных фигур. вот необходимо чтобы при перемещении мышью нарисованного квадрата он перемещался не свободно по полю, а непосредственно по координатной сетке. class SETKA: public FIGURE { public: SETKA() { BTNW=60; BTNH=60; x=30; a=30; b= 30;zahvat = false; } ...
C++ экранная клавиатура
Я разобрался как записывать в блокнот текст. void Write(char a) { HANDLE hwnd=FindWindow("Notepad", NULL); hwnd=FindWindowEx(hwnd, NULL, "Edit", NULL); SendMessage(hwnd,WM_ACTIVATE , WA_ACTIVE, NULL); SendMessage(hwnd, WM_CHAR, a, 0); }; Подскажите пожалуйста, как теперь мне отправлять туда же нажатие кнопок. Т.е. чтоб можно было стирать, работали Home и End и т.д.
C++ Деление в матрице http://www.cyberforum.ru/cpp-beginners/thread1179953.html
дано матрицу А размером 8х7 поделить каждый элемент столбца на элемент этого столбца который находится на главной диагонали если этот элемент равен 0. Помогите с программой я не понимаю как
C++ Чтение текстовых файлов для новичков (getline) Задача чтения и обработки текстового файла - одна из самых распространенных. Она сравнительно проста, но у новичков порой возникают трудности и тема создана для обсуждения возникающих проблем и способов их решения. Сначала общая схема: открывается некий текстовый файл, в буфер считывается порция данных, затем эта порция обрабатывается. Цикл чтение-обработка порции выполняется, пока не будет... подробнее

Показать сообщение отдельно
eaton
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 8
18.05.2014, 18:52     Списки типа стек
Помогите пожалуйста, не хочет работать программа:
Создать стек с числами, определить сколько элементов стека находится между его минимальным и максимальным значениями.
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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <windows.h>
 
 
typedef struct st {
int info;
st *next;
} STACK;
 
 
STACK* create_stack(void);
STACK* push(STACK*);
STACK* pop(STACK*);
int count(STACK*);
STACK* get_count(STACK*, int);
void print(STACK*); 
void destruct(STACK*);  
 
int pos_min=0, pos_max=0, c=0;
int main(void) {setlocale(LC_CTYPE, "Russian"); fflush(stdin); system("cls");
STACK *top,*top3,*top4;
int action,i,pos;
 
do {
do {
puts("\n\n\t\t\tIAI?");
puts("\t\t\t1 - Sozdat novii stek");
puts("\t\t\t2 - VVesti soderjimoe steka");
puts("\t\t\t3 - Dobavit novii element v stek");
puts("\t\t\t4 - Ydatit elementi po poradku");
puts("\t\t\t5 - Naiti MIN i MAX elementi");
puts("\t\t\t6 - Delete elementi mejdu MIn i MAX");
puts("\t\t\t7 - Exit");
printf("Viberite deistvie: \r\n");
scanf("%d",&action);
} while (action<1||action>7);
 
switch (action) {
case 1: top = create_stack(); srand( time( NULL) ); get_count(top, 0); break;
case 2: print(top); break;  
case 3: top = push(top); break; 
case 4: printf("Chislo del elementov [1-%d]?\n ", i=count(top));
scanf("%d",&action);
if(action<1||action>i) {
printf("Nevernoe chislo elementov!\n");
action=0;
}
for(i=0;i<action;i++)
top = pop(top);
break;
case 5: get_count(top,1); break;
case 6: action = c;
//pos_min+1, pos_max-1
top3=top;
for(i=0; i<(pos_min<=pos_max?pos_min:pos_max); i++) 
{
if(i==(pos_min<=pos_max?pos_min:pos_max)-1) top4=top3;
top3=top3->next;
}
printf("Elementi deleted: ");
for(i=0; i<action; i++)
{   
printf("%d ",top3->info);
top3 = pop(top3);
}
printf("\n");
top4->next=top3;
break;
default: action = -1; break;
}
} while (action != -1);
destruct(top);
return 0;
}
 
STACK* create_stack(void) {
STACK *top, *p;
top =p = NULL;
 
int i, count;
srand (time (NULL));
printf("Vvedite kol-vo elementov spiska: ");
scanf("%d", &count);
system ("cls");
printf("Spisok sformirovan\n");
for (i=0; i<count; i++)
{
if (top)
{
p->next = new (STACK);
p = p->next;
p->next = NULL;
}
else 
{
top = new (STACK);
top->next = NULL;
p = top;
}
p->info = rand()%101;
}
if (!top->next) {printf("\n\nV spiske tolko odno znachenie"); getch(); return top;}
 
}
 
STACK* get_count(STACK *top, int flag) {
int c_min=1000, c_max=1, i=0, k=0;
STACK *p;
STACK *key_min, *key_max;
p=(STACK*)malloc(sizeof(STACK));    
for(p=top; p; p=p->next){
c=p->info;
 
i++; 
if (c < c_min){
c_min=c;
pos_min=i;
key_min=p; 
}
 
if (c > c_max){
c_max=c;
pos_max=i;
key_max=p; 
}
}
if(flag) //++
{
printf("Min element: %d\nMax element: %d\n", c_min, c_max);
 
c=0;
if (pos_min<pos_max){
c=pos_max-pos_min-1;
printf("Nado udalit %d elementov\n", c);
 
 
}
else
{
c=pos_min-pos_max-1;
printf("Nado del %d elementov\n", c);
 
}
 
}
 
return top;
}
 
 
STACK* push(STACK *top) {
STACK *q;
int d;
q=(STACK*)malloc(sizeof(STACK));
printf("Vvedite novi element: ");
scanf("%d",&d);
q->info = d;
q->next = top;
return q;
}
 
STACK* pop(STACK *top) {
STACK *q;
if(top) {
q=top;
top=top->next;
free(q);
}
else
return NULL;
return top;
}
 
int count(STACK *top) {
int c;
for(c=0; top; top=top->next, c++);
return c;
}
 
void print(STACK *top) {
STACK *p;
for(p=top; p; p=p->next)
printf("%d ",p->info);
}
 
void destruct(STACK *top) {
STACK *q;
for(;top;) {
q=top;
top=top->next;
free(q);
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru