summaryrefslogtreecommitdiff
path: root/structures/task25.cpp
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2021-02-11 00:24:49 +0400
committerAndrew <saintruler@gmail.com>2021-02-11 00:24:49 +0400
commitb3f28bca3da03a81fb7a72f85f563360d4f13b0f (patch)
tree2e91e9f7eb85abd59f09c78f905b769b7199bd16 /structures/task25.cpp
parent17a4c9f6e0380aae2366b33628fae0ef722ec762 (diff)
Добавил комментариев.
Diffstat (limited to 'structures/task25.cpp')
-rw-r--r--structures/task25.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/structures/task25.cpp b/structures/task25.cpp
index fde664c..730e465 100644
--- a/structures/task25.cpp
+++ b/structures/task25.cpp
@@ -10,15 +10,23 @@ int main()
cin >> n;
stack *s = NULL;
- char* buf = new char[32];
+ // Так как в int не помещаются числа длиной более 10
+ // знаков, буфера такого размера будет достаточно.
+ char* buf = new char[16];
for (int i = 0; i < n; i++)
{
cin >> buf;
+
+ // Если первый элемент буфера -- цифра, то можно считать, что
+ // в буфере находится число и его нужно преобразовать в int.
if ('0' <= buf[0] && buf[0] <= '9')
{
int i = atoi(buf);
push(s, i);
}
+ // Иначе, скорее всего, в буфере находится операция.
+ // Если первый символ не является допустимой операцией,
+ // то ничего не происходит.
else
{
switch (buf[0])
@@ -44,6 +52,7 @@ int main()
}
}
+ // В результате выполнения выражения в стеке должно остаться одно число.
int result = pop(s);
cout << "Result = " << result << endl;