Как объеденить два объекта? Доброго времени суток
Программа представляет собою стек, куда записываются вагоны и они сортируются по типам А и Б
Нужно мне эти два типа объеденить и потом вывести одним целым стеком
Как объединить их информацию в одну целую?using System
using System.Collections.Generic
using System.Linq
using System.Text
using System.Threading.Tasks
interface IStack
Boolean Empty()
object Pop()
object Push(object element1)
object Peek()
void Display()

class Carriage
public int CarriageNumber
get; protected set

public string CarriageType
get; protected set

public Carriage(string type, int number)
this.CarriageNumber = number
this.CarriageType = type

public override string ToString()
return CarriageNumber.ToString() + "/" + CarriageType

public void Entering()

class Stack : IStack
int StackSize
int top
object[] item
public int StackSizeProperty
get { return StackSize;
set { StackSize = value;

public Stack()
StackSizeProperty = 10
item = new object[StackSize]
top = 0

public Stack(int capacity)
StackSizeProperty = capacity
item = new object[StackSizeProperty]
top = 0

public bool Empty()
if (top == 0)
return true

return false


public object Push(object elements)
if (top == StackSize)
Console.WriteLine("Stack is full.\n")
return "Stack is full."

else
item[++top] = elements
Console.WriteLine("Item was been pushed.\n")
return "item was been pushed."


public void Entering(string CarriageType, int CarriageNumber)
Console.Write("\n\tEnter the type of train: ")
CarriageType = Console.ReadLine()
Console.Write("\tEnter the number of train: ")
CarriageNumber = int.Parse(Console.ReadLine())

public object Pop()
if (Empty()

Console.WriteLine("Stack is empty.\n")
return "Nothing."

else
return item[top--]


public object Peek()
if (Empty())
Console.WriteLine("Stack is empty.\n")
return "Nothing."

else
return item[top]


public void Display()
for (int elements = top; elements > 0; elements--)
Console.WriteLine("Item " + elements + ": " + item[elements])


public void Exit()
do
} while (Console.ReadKey().Key != ConsoleKey.Escape)

public int Entering()
Console.Write("\tEnter the number of train: ")
return int.Parse(Console.ReadLine())

class MainProgramStacks
static void Main()
Stack FullStack = new Stack()
Stack AtypeStack = new Stack()
Stack BtypeStack = new Stack()
int mm_choice = 0, type_choice = 0, peek_choice = 0
rmv_choice = 0, display_choice = 0
CarriageNumberA = 0, CarriageNumberB = 0
while (true)
Console.WriteLine("- -- --- - Menu - --- -- -")
Console.WriteLine("- 1 - Add an element -"); //
Console.WriteLine("- 2 - Peek top element -"); //
Console.WriteLine("- 3 - Remove top element -"); //
Console.WriteLine("- 4 - Display stacks -"); //
Console.WriteLine("- 5 - Exit -")
Console.WriteLine("- -- --- - -- - --- -- -")
mm_choice = int.Parse(Console.ReadLine())

switch (mm_choice)
case 1
Console.Clear()
while (type_choice != 3

Console.WriteLine("- 1 - Add an element to type A: ")
Console.WriteLine("- 2 - Add an element to type B: ")
Console.WriteLine("- 3 - Exit -")
type_choice = int.Parse(Console.ReadLine())
switch (type_choice

case 1
AtypeStack.Push(new Carriage("a", AtypeStack.Entering()))
break
case 2
BtypeStack.Push(new Carriage("b", AtypeStack.Entering()))
break


break
case 2
Console.Clear()
while (peek_choice != 3)
Console.WriteLine("- 1 - Peek top element of A type: ")
Console.WriteLine("- 2 - Peek top element of B type: ")
Console.WriteLine("- 3 - Exit ")
peek_choice = int.Parse(Console.ReadLine())
switch (peek_choice)
case 1
AtypeStack.Peek()
break
case 2
BtypeStack.Peek()
break


break
case 3
Console.Clear()
while (rmv_choice != 3)
Console.WriteLine("- 1 - Remove element from type A: ")
Console.WriteLine("- 2 - Remove element from type B: ")
Console.WriteLine("- 3 - Exit -")
rmv_choice = int.Parse(Console.ReadLine())
switch (rmv_choice)
case 1
AtypeStack.Pop()
break
case 2
BtypeStack.Pop()
break


FullStack.Pop()
break
case 4
Console.Clear()
while (display_choice != 4

Console.WriteLine("- 1 - Display elements of type A: ")
Console.WriteLine("- 2 - Display elements of type B: ")
Console.WriteLine("- 3 - Display all elements: ")
Console.WriteLine("- 4 - Exit -")
display_choice = int.Parse(Console.ReadLine())

switch (display_choice

case 1
AtypeStack.Display()
break
case 2
BtypeStack.Display()
break
case 3
FullStack.Display()
break


break
case 5
FullStack.Exit()
break



}

21 Авг 2019 в 07:00
183 +1
0
Ответы
1

Для объединения двух стеков типов A и B в один общий стек, можно просто добавить все элементы из стека типа B в стек типа A
Вот пример кода, который показывает, как это сделать:

Создаём метод в классе Stack для объединения стеков:public void CombineStacks(Stack stackB

while(!stackB.Empty()

Push(stackB.Pop())

}В методе Main после добавления элементов в стеки типов A и B, вызываем метод CombineStacks для объединения:case 1
Console.Clear()
while (type_choice != 3

Console.WriteLine("- 1 - Add an element to type A: ")
Console.WriteLine("- 2 - Add an element to type B: ")
Console.WriteLine("- 3 - Exit -")
type_choice = int.Parse(Console.ReadLine())
switch (type_choice

case 1
AtypeStack.Push(new Carriage("a", AtypeStack.Entering()))
break
case 2
BtypeStack.Push(new Carriage("b", AtypeStack.Entering()))
break


AtypeStack.CombineStacks(BtypeStack)
break;

Теперь после того, как вы добавите все элементы в стеки типов A и B, они будут объединены в стеке типа A.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 620 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир