CherMi

List for float C# CLI

Nov 26th, 2020
354
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2.  
  3. class List
  4. {
  5.     static int MaxId;
  6.     string StackId;
  7.     static int MaxSize;
  8.     int nextIndex;
  9.     Single[] L;
  10.  
  11.     public List(int mSize)
  12.     {
  13.         MaxSize = mSize;
  14.         L = new Single[MaxSize];
  15.         MaxId++;
  16.         StackId = Convert.ToString(MaxId);
  17.         nextIndex = 0;
  18.         Console.WriteLine("Создан список " + StackId + ".");
  19.     }
  20.     public void addLastElement(Single c)
  21.     {
  22.         if (nextIndex < MaxSize)
  23.             L[nextIndex++] = c;
  24.         else Console.WriteLine("Список переполнен!");
  25.     }
  26.     public Single getElementByIndex(int index)
  27.     {
  28.         if (index < nextIndex)
  29.         {
  30.             return L[index];
  31.         }
  32.         else
  33.         {
  34.             Console.WriteLine("Нет элемента с таким индексом!");
  35.             return (Single)0;
  36.         }
  37.     }
  38.     public void deleteElementByValue(Single value)
  39.     {
  40.         for (int i = 0; i < nextIndex; i++)
  41.         {
  42.             if (L[i].Equals(value))
  43.             {
  44.                 deleteElementByIndex(i);
  45.                 return;
  46.             }
  47.         }
  48.         Console.WriteLine("Нет элемента с таким значением!");
  49.         return;
  50.     }
  51.     public Single deleteElementByIndex(int index)
  52.     {
  53.         if (index < nextIndex)
  54.         {
  55.             Single deletedElement = L[index];
  56.             if (index < nextIndex - 1)
  57.             {
  58.                 for (int i = index; i < nextIndex - 1; i++)
  59.                 {
  60.                     L[i] = L[i + 1];
  61.                 }
  62.             }
  63.             nextIndex--;
  64.             Console.WriteLine("Удалён элемент " + index + " = " + deletedElement + ".");
  65.             return deletedElement;
  66.         }
  67.         else
  68.         {
  69.             Console.WriteLine("Нет элемента с таким индексом!");
  70.             return (Single)0;
  71.         }
  72.     }
  73.     public void printList()
  74.     {
  75.         if (nextIndex == 0)
  76.         {
  77.             Console.WriteLine("Список пуст!");
  78.         }
  79.         for (int i = 0; i < nextIndex; i++)
  80.         {
  81.             Console.WriteLine("Элемент " + i + " = " + L[i]);
  82.         }
  83.     }
  84. };
  85. class Program
  86. {
  87.     private static bool enterInt(ref int value)
  88.     {
  89.         try
  90.         {
  91.             int tmp = Convert.ToInt32(Console.ReadLine());
  92.             value = tmp;
  93.             return true;
  94.         }
  95.         catch (FormatException)
  96.         {
  97.             Console.WriteLine("Неверный формат ввода. Значение должно быть целым положительным числом.");
  98.             return false;
  99.         }
  100.         catch (OverflowException)
  101.         {
  102.             Console.WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате целого числа.");
  103.             return false;
  104.         }
  105.     }
  106.  
  107.     private static bool enterSingle(ref Single value)
  108.     {
  109.         try
  110.         {
  111.             Single tmp = Convert.ToSingle(Console.ReadLine());
  112.             value = tmp;
  113.             return true;
  114.         }
  115.         catch (FormatException)
  116.         {
  117.             Console.WriteLine("Неверный формат ввода. Введите число с плавающей запятой в формате целая_часть,дробная_часть .");
  118.             return false;
  119.         }
  120.         catch (OverflowException)
  121.         {
  122.             Console.WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
  123.             return false;
  124.         }
  125.     }
  126.  
  127.     public static void Main(string[] args)
  128.     {
  129.         Single f;
  130.         List vs; //1
  131.         while (true)
  132.         {
  133.             Console.WriteLine("Создать список? (да - создать, любой другой ввод - выход из программы)");
  134.             if (Console.ReadLine() == "да")
  135.             {
  136.                 Console.WriteLine("Какой длины?");
  137.                 int mSize = 0;
  138.                 Console.Write("Длина: ");
  139.                 if (!enterInt(ref mSize))
  140.                 {
  141.                     continue;
  142.                 }
  143.                 vs = new List(mSize); //1
  144.                 break;
  145.             }
  146.             else return;
  147.         }
  148.  
  149.         string s;
  150.         do
  151.         {
  152.             Console.WriteLine("Что сделать? (распечатать список / добавить элемент в конец / получить элемент по индексу / удалить элемент по значению / удалить элемент по индексу)");
  153.             Console.Write("Действие: ");
  154.             s = Console.ReadLine();
  155.             if (s == "добавить элемент в конец")
  156.             {
  157.                 Single value = 0;
  158.                 Console.Write("Значение: ");
  159.                 if (!enterSingle(ref value))
  160.                 {
  161.                     continue;
  162.                 }
  163.                 vs.addLastElement(value);
  164.                 Console.WriteLine("Число добавлено в конец списка.");
  165.             }
  166.             else if (s == "получить элемент по индексу")
  167.             {
  168.                 int index = 0;
  169.                 Console.Write("Индекс: ");
  170.                 if (!enterInt(ref index))
  171.                 {
  172.                     continue;
  173.                 }
  174.                 Console.WriteLine("Элемент " + index + " = " + vs.getElementByIndex(index) + ".");
  175.             }
  176.             else if (s == "удалить элемент по значению")
  177.             {
  178.                 Single value = 0;
  179.                 Console.Write("Значение: ");
  180.                 if (!enterSingle(ref value))
  181.                 {
  182.                     continue;
  183.                 }
  184.                 vs.deleteElementByValue(value);
  185.             }
  186.             else if (s == "удалить элемент по индексу")
  187.             {
  188.                 int index = 0;
  189.                 Console.Write("Индекс: ");
  190.                 if (!enterInt(ref index))
  191.                 {
  192.                     continue;
  193.                 }
  194.                 vs.deleteElementByIndex(index);
  195.             }
  196.             else if (s == "распечатать список")
  197.             {
  198.                 vs.printList();
  199.             }
  200.             else
  201.             {
  202.                 Console.WriteLine("Неверный формат ввода. Доступны команды: распечатать список, добавить элемент в конец, получить элемент по индексу, удалить элемент по значению, удалить элемент по индексу");
  203.             }
  204.         } while (s != "");
  205.     }
  206. }
RAW Paste Data