Advertisement
CherMi

Stack for float C++ CLI

Nov 13th, 2020
806
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.84 KB | None | 0 0
  1. // cppCLinStackCLR.cpp: главный файл проекта.
  2. using namespace System;
  3.  
  4. ref class Stack
  5. {
  6.     static int MaxId;
  7.     String^ StackId;
  8.     static int MaxSize;
  9.     int top;
  10.     array<Single^>^ ST;
  11.  
  12. public: Stack(int mSize)
  13. {
  14.     MaxSize = mSize;
  15.     ST = gcnew array<Single^>(MaxSize);
  16.     MaxId++;
  17.     StackId = ::Convert::ToString(MaxId);
  18.     Console::WriteLine("Создан стек " + StackId + ".");
  19. };
  20.       void push(Single^ c)
  21.       {
  22.           if (top < MaxSize)
  23.               ST[top++] = c;
  24.           else Console::WriteLine("Стек переполнен!");
  25.       }
  26.       Single^ pop()
  27.       {
  28.           if (top > 0)
  29.               return ST[--top];
  30.           else
  31.           {
  32.               Console::WriteLine("Стек пуст!");
  33.               return (Single)0;
  34.           }
  35.       }
  36. };
  37. int main(array<String^>^ args)
  38. {
  39.     Single^ f;
  40.     Stack^ vs; //1
  41.     while (true)
  42.     {
  43.         Console::WriteLine("Создать стек? (да - создать, любой другой ввод - выход из программы)");
  44.         if (Console::ReadLine() == "да")
  45.         {
  46.             Console::WriteLine("какой глубины?");
  47.             int mSize;
  48.             try
  49.             {
  50.                 mSize = Convert::ToInt32(Console::ReadLine());
  51.             }
  52.             catch (FormatException^)
  53.             {
  54.                 Console::WriteLine("Неверный формат ввода. Введите целое положительное число.");
  55.                 continue;
  56.             }
  57.             catch (OverflowException^)
  58.             {
  59.                 Console::WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
  60.                 continue;
  61.             }
  62.             vs = gcnew Stack(mSize); //1
  63.             break;
  64.         }
  65.         else return 0;
  66.     }
  67.  
  68.     String^ s;
  69.     do
  70.     {
  71.         Console::WriteLine("Что сделать? (заложить / достать)");
  72.         s = Console::ReadLine();
  73.         if (s == "заложить")
  74.         {
  75.             Console::WriteLine("Что?");
  76.             try
  77.             {
  78.                 f = Convert::ToSingle(Console::ReadLine());
  79.             }
  80.             catch(FormatException^)
  81.             {
  82.                 Console::WriteLine("Неверный формат ввода. Введите число с плавающей запятой в формате целая_часть,дробная_часть .");
  83.                 continue;
  84.             }
  85.             catch(OverflowException^)
  86.             {
  87.                 Console::WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
  88.                 continue;
  89.             }
  90.             vs->push(f);
  91.             Console::WriteLine("Число заложено.");
  92.         }
  93.         else if (s == "достать")
  94.         {
  95.             Console::WriteLine(vs->pop());
  96.         }
  97.         else
  98.         {
  99.             Console::WriteLine("Неверный формат ввода. Доступны команды \"заложить\" и \"достать\"");
  100.         }
  101.     } while (s != "");
  102. }
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement