Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // cppCLinStackCLR.cpp: главный файл проекта.
- using namespace System;
- ref class Stack
- {
- static int MaxId;
- String^ StackId;
- static int MaxSize;
- int top;
- array<Single^>^ ST;
- public: Stack(int mSize)
- {
- MaxSize = mSize;
- ST = gcnew array<Single^>(MaxSize);
- MaxId++;
- StackId = ::Convert::ToString(MaxId);
- Console::WriteLine("Создан стек " + StackId + ".");
- };
- void push(Single^ c)
- {
- if (top < MaxSize)
- ST[top++] = c;
- else Console::WriteLine("Стек переполнен!");
- }
- Single^ pop()
- {
- if (top > 0)
- return ST[--top];
- else
- {
- Console::WriteLine("Стек пуст!");
- return (Single)0;
- }
- }
- };
- int main(array<String^>^ args)
- {
- Single^ f;
- Stack^ vs; //1
- while (true)
- {
- Console::WriteLine("Создать стек? (да - создать, любой другой ввод - выход из программы)");
- if (Console::ReadLine() == "да")
- {
- Console::WriteLine("какой глубины?");
- int mSize;
- try
- {
- mSize = Convert::ToInt32(Console::ReadLine());
- }
- catch (FormatException^)
- {
- Console::WriteLine("Неверный формат ввода. Введите целое положительное число.");
- continue;
- }
- catch (OverflowException^)
- {
- Console::WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
- continue;
- }
- vs = gcnew Stack(mSize); //1
- break;
- }
- else return 0;
- }
- String^ s;
- do
- {
- Console::WriteLine("Что сделать? (заложить / достать)");
- s = Console::ReadLine();
- if (s == "заложить")
- {
- Console::WriteLine("Что?");
- try
- {
- f = Convert::ToSingle(Console::ReadLine());
- }
- catch(FormatException^)
- {
- Console::WriteLine("Неверный формат ввода. Введите число с плавающей запятой в формате целая_часть,дробная_часть .");
- continue;
- }
- catch(OverflowException^)
- {
- Console::WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
- continue;
- }
- vs->push(f);
- Console::WriteLine("Число заложено.");
- }
- else if (s == "достать")
- {
- Console::WriteLine(vs->pop());
- }
- else
- {
- Console::WriteLine("Неверный формат ввода. Доступны команды \"заложить\" и \"достать\"");
- }
- } while (s != "");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement