Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.86 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. interface IStack {
  8.     Boolean Empty();
  9.     object Pop();
  10.     object Push(object elements);
  11.     object Peek();
  12.     void Generate(int qty);
  13.     void Display();
  14.     void DisplayAll();
  15. }
  16.  
  17. class Carriage {
  18.     public int CarriageNumber {
  19.         get; protected set;
  20.     }
  21.  
  22.     public string CarriageType {
  23.         get; protected set;
  24.     }
  25.  
  26.     public Carriage(string type, int number) {
  27.         this.CarriageNumber = number;
  28.         this.CarriageType = type;
  29.     }
  30.  
  31.     public override string ToString() {
  32.         return CarriageNumber + "/" + CarriageType;
  33.     }
  34. }
  35.  
  36. class Stack : IStack {
  37.     int StackSize;
  38.     int top;
  39.     object[] item;
  40.     List<Carriage> carriages = new List<Carriage>();
  41.  
  42.     public int StackSizeProperty {
  43.         get { return StackSize; }
  44.         set { StackSize = value; }
  45.     }
  46.  
  47.     public Stack() {
  48.         StackSizeProperty = 11;
  49.         item = new object[StackSize];
  50.         top = 0;
  51.     }
  52.    
  53.     public Stack(int capacity) {
  54.         StackSizeProperty = capacity;
  55.         item = new object[StackSizeProperty];
  56.         top = 0;
  57.     }
  58.  
  59.     public bool Empty() {
  60.         if (top == 0) {
  61.             return true;
  62.         }
  63.         return false;
  64.     }
  65.  
  66.     public void Generate(int qty) {
  67.         Random rnd = new Random();
  68.  
  69.         Console.Write("Enter number of trains: ");
  70.         qty = int.Parse(Console.ReadLine());
  71.  
  72.         string[] car_type = { "a", "b" };
  73.  
  74.         for (int elements = qty; elements > 0; elements--) {
  75.             item[elements] = rnd.Next(1, 100);
  76.             int type = rnd.Next(car_type.Length);
  77.             Console.WriteLine("Item " + elements + ": " + item[elements] + "/" + car_type[type]);
  78.            
  79.             carriages.Add(new Carriage(car_type[type], (int)item[elements]));
  80.         }
  81.        
  82.         DisplayAllItemNumbers();
  83.     }
  84.  
  85.     public object Push(object elements) {
  86.         if (top == StackSize) {
  87.             Console.WriteLine("Stack is full.\n");
  88.             return "Stack is full.";
  89.         }
  90.         else {
  91.             item[++top] = elements;
  92.             Console.WriteLine("Item was been pushed.\n");
  93.             return "item was been pushed.";
  94.         }
  95.     }
  96.    
  97.     public List<Carriage> GetCarriages(){
  98.         return carriages;
  99.     }
  100.  
  101.     public void Entering(string CarriageType,  int CarriageNumber) {
  102.         Console.Write("\n\tEnter the type of train: ");
  103.         CarriageType = Console.ReadLine();
  104.         Console.Write("\tEnter the number of train: ");
  105.         CarriageNumber = int.Parse(Console.ReadLine());
  106.     }
  107.  
  108.     public object Pop() {
  109.         if (Empty()) {
  110.             Console.WriteLine("Stack is empty.\n");
  111.             return "Nothing.";
  112.         }
  113.         else {
  114.             return item[top--];
  115.         }
  116.     }
  117.  
  118.     public object Peek() {
  119.         if (Empty()) {
  120.             Console.WriteLine("Stack is empty.\n");
  121.             return "Nothing.";
  122.         }
  123.         else {
  124.             return item[top];
  125.         }
  126.     }
  127.  
  128.     public void Display() {
  129.         for (int elements = top; elements > 0; elements--) {
  130.             Console.WriteLine("Item " + elements + ": " + item[elements]);
  131.         }
  132.     }
  133.  
  134.     public void DisplayAll() {
  135.         Console.WriteLine("All items: ");
  136.         for (int elements = top; elements > 0; elements--) {
  137.             Console.WriteLine("\t" + item[elements]);
  138.         }
  139.     }
  140.    
  141.     public void DisplayAllItemNumbers(){
  142.         Console.WriteLine("All Numerics: ");
  143.         for(int i = 0; i < carriages.Count; i++){
  144.             Console.WriteLine(carriages[i].CarriageNumber);
  145.         }
  146.     }
  147.  
  148.     public void Exit() {
  149.         do{ } while (Console.ReadKey().Key != ConsoleKey.Escape);
  150.     }
  151.  
  152.     public int Entering() {
  153.         Console.Write("\tEnter the number of train: ");
  154.         return int.Parse(Console.ReadLine());
  155.     }
  156. }
  157.  
  158. class MainProgramStacks {
  159.     static void Main() {
  160.         Stack AtypeStack = new Stack();
  161.         Stack BtypeStack = new Stack();
  162.  
  163.         int mm_choice = 0, type_choice = 0, peek_choice = 0,
  164.             rmv_choice = 0, display_choice = 0,  qty =0,
  165.             CarriageNumberA = 0, CarriageNumberB = 0;
  166.         while (true) {
  167.             Console.WriteLine("- -- ---  - Menu - --- -- -");
  168.             Console.WriteLine("- 1 - Add an element      -");
  169.             Console.WriteLine("- 2 - Peek top element    -");
  170.             Console.WriteLine("- 3 - Remove top element  -");
  171.             Console.WriteLine("- 4 - Display stacks      -");
  172.             Console.WriteLine("- -- ---  -  --  - --- -- -");
  173.             mm_choice = int.Parse(Console.ReadLine());
  174.            
  175.             switch (mm_choice) {
  176.                 case 1:
  177.                     Console.Clear();
  178.                     while (type_choice != 5) {
  179.                         Console.WriteLine("- 1 - Add an element to type A: ");
  180.                         Console.WriteLine("- 2 - Add an element to type B: ");
  181.                         Console.WriteLine("                                ");
  182.                         Console.WriteLine("- 3 - Randomize elements for A: ");
  183.                         Console.WriteLine("- 4 - Randomize elements for B: ");
  184.                         Console.WriteLine("- 5 -            Exit           ");
  185.                         type_choice = int.Parse(Console.ReadLine());
  186.  
  187.                         switch (type_choice) {
  188.                             case 1:
  189.                                 AtypeStack.Push(new Carriage("a", AtypeStack.Entering()));
  190.                                 break;
  191.                             case 2:
  192.                                 BtypeStack.Push(new Carriage("b", AtypeStack.Entering()));
  193.                                 break;
  194.                             case 3:
  195.                                 AtypeStack.Generate(qty);
  196.                                 break;
  197.                             case 4:
  198.                                 BtypeStack.Generate(qty);
  199.                                 break;
  200.                         }
  201.                     }
  202.                     break;
  203.                 case 2:
  204.                     Console.Clear();
  205.                     while (peek_choice != 3) {
  206.                         Console.WriteLine("- 1 - Peek top element of A type: ");
  207.                         Console.WriteLine("- 2 - Peek top element of B type: ");
  208.                         Console.WriteLine("- 3 -             Exit            ");
  209.                         peek_choice = int.Parse(Console.ReadLine());
  210.  
  211.                         switch (peek_choice) {
  212.                             case 1:
  213.                                 AtypeStack.Peek();
  214.                                 break;
  215.                             case 2:
  216.                                 BtypeStack.Peek();
  217.                                 break;
  218.                         }
  219.                     }
  220.                     break;
  221.                 case 3:
  222.                     Console.Clear();
  223.                     while (rmv_choice != 3) {
  224.                         Console.WriteLine("- 1 - Remove element from type A: ");
  225.                         Console.WriteLine("- 2 - Remove element from type B: ");
  226.                         Console.WriteLine("- 3 -              Exit          -");
  227.                         rmv_choice = int.Parse(Console.ReadLine());
  228.  
  229.                         switch (rmv_choice) {
  230.                             case 1:
  231.                                 AtypeStack.Pop();
  232.                                 break;
  233.                             case 2:
  234.                                 BtypeStack.Pop();
  235.                                 break;
  236.                         }
  237.                     }
  238.                     break;
  239.                 case 4:
  240.                     Console.Clear();
  241.                     while (display_choice != 4) {
  242.                         Console.WriteLine("- 1 - Display elements of type A: ");
  243.                         Console.WriteLine("- 2 - Display elements of type B: ");
  244.                         Console.WriteLine("- 3 - Display all elements:       ");
  245.                         Console.WriteLine("- 4 -            Exit            -");
  246.                         display_choice = int.Parse(Console.ReadLine());
  247.                        
  248.                         switch (display_choice) {
  249.                             case 1:
  250.                                 AtypeStack.Display();
  251.                                 break;
  252.                             case 2:
  253.                                 BtypeStack.Display();
  254.                                 break;
  255.                             case 3:
  256.                                 AtypeStack.DisplayAll();
  257.                                 BtypeStack.DisplayAll();
  258.                                 AtypeStack.DisplayAllItemNumbers();
  259.                                 break;
  260.                         }
  261.                     }
  262.                     break;
  263.             }
  264.         }
  265.     }
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement