CherMi

List for float C№ with inverse

Nov 26th, 2020
426
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.     public void inverse()
  85.     {
  86.         if (nextIndex == 0)
  87.         {
  88.             Console.WriteLine("Список пуст!");
  89.             return;
  90.         }
  91.         if (nextIndex == 1)
  92.         {
  93.             Console.WriteLine("Список состоит из одного элемента!");
  94.             return;
  95.         }
  96.         Single tmp;
  97.         for (int i = 0; i < Math.Floor((Single)nextIndex / 2); i++)
  98.         {
  99.             tmp = L[i];
  100.             L[i] = L[nextIndex - 1 - i];
  101.             L[nextIndex - 1 - i] = tmp;
  102.         }
  103.         Console.WriteLine("Список инверсирован!");
  104.     }
  105.  
  106. };
  107. class Program
  108. {
  109.     private static bool enterInt(ref int value)
  110.     {
  111.         try
  112.         {
  113.             int tmp = Convert.ToInt32(Console.ReadLine());
  114.             value = tmp;
  115.             return true;
  116.         }
  117.         catch (FormatException)
  118.         {
  119.             Console.WriteLine("Неверный формат ввода. Значение должно быть целым положительным числом.");
  120.             return false;
  121.         }
  122.         catch (OverflowException)
  123.         {
  124.             Console.WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате целого числа.");
  125.             return false;
  126.         }
  127.     }
  128.  
  129.     private static bool enterSingle(ref Single value)
  130.     {
  131.         try
  132.         {
  133.             Single tmp = Convert.ToSingle(Console.ReadLine());
  134.             value = tmp;
  135.             return true;
  136.         }
  137.         catch (FormatException)
  138.         {
  139.             Console.WriteLine("Неверный формат ввода. Введите число с плавающей запятой в формате целая_часть,дробная_часть .");
  140.             return false;
  141.         }
  142.         catch (OverflowException)
  143.         {
  144.             Console.WriteLine("Неверный формат ввода. Введённое число невозможно представить в формате числа с одиночной точностью с плавающей запятой.");
  145.             return false;
  146.         }
  147.     }
  148.  
  149.     public static void Main(string[] args)
  150.     {
  151.         Single f;
  152.         List vs; //1
  153.         while (true)
  154.         {
  155.             Console.WriteLine("Создать список? (да - создать, любой другой ввод - выход из программы)");
  156.             if (Console.ReadLine() == "да")
  157.             {
  158.                 Console.WriteLine("Какой длины?");
  159.                 int mSize = 0;
  160.                 Console.Write("Длина: ");
  161.                 if (!enterInt(ref mSize))
  162.                 {
  163.                     continue;
  164.                 }
  165.                 vs = new List(mSize); //1
  166.                 break;
  167.             }
  168.             else return;
  169.         }
  170.  
  171.         string s;
  172.         do
  173.         {
  174.             Console.WriteLine("Что сделать? (распечатать список / добавить элемент в конец / получить элемент по индексу / удалить элемент по значению / удалить элемент по индексу / инверсировать список)");
  175.             Console.Write("Действие: ");
  176.             s = Console.ReadLine();
  177.             if (s == "добавить элемент в конец")
  178.             {
  179.                 Single value = 0;
  180.                 Console.Write("Значение: ");
  181.                 if (!enterSingle(ref value))
  182.                 {
  183.                     continue;
  184.                 }
  185.                 vs.addLastElement(value);
  186.                 Console.WriteLine("Число добавлено в конец списка.");
  187.             }
  188.             else if (s == "получить элемент по индексу")
  189.             {
  190.                 int index = 0;
  191.                 Console.Write("Индекс: ");
  192.                 if (!enterInt(ref index))
  193.                 {
  194.                     continue;
  195.                 }
  196.                 Console.WriteLine("Элемент " + index + " = " + vs.getElementByIndex(index) + ".");
  197.             }
  198.             else if (s == "удалить элемент по значению")
  199.             {
  200.                 Single value = 0;
  201.                 Console.Write("Значение: ");
  202.                 if (!enterSingle(ref value))
  203.                 {
  204.                     continue;
  205.                 }
  206.                 vs.deleteElementByValue(value);
  207.             }
  208.             else if (s == "удалить элемент по индексу")
  209.             {
  210.                 int index = 0;
  211.                 Console.Write("Индекс: ");
  212.                 if (!enterInt(ref index))
  213.                 {
  214.                     continue;
  215.                 }
  216.                 vs.deleteElementByIndex(index);
  217.             }
  218.             else if (s == "распечатать список")
  219.             {
  220.                 vs.printList();
  221.             }
  222.             else if (s == "инверсировать список")
  223.             {
  224.                 vs.inverse();
  225.             }
  226.             else
  227.             {
  228.                 Console.WriteLine("Неверный формат ввода. Доступны команды: распечатать список, добавить элемент в конец, получить элемент по индексу, удалить элемент по значению, удалить элемент по индексу, инверсировать список");
  229.             }
  230.         } while (s != "");
  231.     }
  232. }
RAW Paste Data