Как объеденить два объекта? Доброго времени суток!
Программа представляет собою стек, куда записываются вагоны и они сортируются по типам А и Б.
Нужно мне эти два типа объеденить и потом вывести одним целым стеком.
Как объединить их информацию в одну целую?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
187 +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
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир