Не соответствие результата по книге Шилда C Шарп Полное руководство - C#
Формулировка задачи:
Всех приветствую.
Начал изучать программирование по данной книге. Дошел до раздела Глава 8. Подробнее о методах и классах, там есть такой пример:
У меня выводится следующий результат:
а должно быть:
Прошу помочь разобраться почему так получается
// Продемонстрировать применение класса Stack.
using System;
// Класс для хранения символов в стеке
class Stack
{
//Эти члены класса являются закрытыми
Char[] stck; // массив, содержащий стек
int tos; //индекс вершины стека
// Построить пустой класс Stack для реализации стека заданного размера
public Stack(int size)
{
stck = new char[size]; // распределить память для стека
tos = 0;
}
// Поместить символы в стек
public void Push(char ch)
{
if(tos == stck.Length)
{
Console.WriteLine(" - Стек заполнен.");
return;
}
stck[tos] = ch;
tos++;
}
// Извлечь символ из стека.
public char Pop()
{
if(tos == 0)
{
Console.WriteLine(" - Стек пуст.");
return (char) 0;
}
tos--;
return stck[tos];
}
// Возвратить значение true, если стек заполнен
public bool IsFull()
{
return tos == stck.Length;
}
// Возвратить значение true, если стек пуст.
public bool IsEmpty()
{
return tos == 0;
}
// Возвратить общую емкость стека
public int Capacity()
{
return stck.Length;
}
//Возвратить количество объектов, находящихся в данный момент в стеке
public int GetNum()
{
return tos;
}
}
class StackDemo
{
static void Main()
{
Stack stk1 = new Stack(10);
Stack stk2 = new Stack(10);
Stack stk3 = new Stack(10);
char ch;
int i;
// Поместить ряд символов в стек stk1.
Console.WriteLine("Поместить символы A-J в стек stk1.");
for (i = 0; !stk1.IsFull(); i++) ;
stk1.Push((char)('A' + i));
if (stk1.IsFull()) Console.WriteLine("Стек stk1 заполнен.");
//Вывести содержимое стека stk1
Console.Write("Содержимое стека stk1: ");
while (!stk1.IsEmpty())
{
ch = stk1.Pop();
Console.Write(ch);
}
Console.WriteLine();
if (stk1.IsEmpty()) Console.WriteLine("Стек stk1 пуст.\n");
// Поместить дополнительные символы в стек stk1.
Console.WriteLine("Вновь поместить символы A-J в стек stk1");
for (i = 0; !stk1.IsFull(); i++)
stk1.Push((char)('A' + i));
// А теперь извлечь элементы из стека stk1 и поместить их в стек stk2
// В итоге элементы сохраняются в стеке stk2 в обратном порядке
Console.WriteLine("А теперь извлечь символы из стека stk1\n" +
"и поместить их в стек stk2.");
while (!stk1.IsEmpty())
{
ch = stk1.Pop();
stk2.Push(ch);
}
Console.Write("Содержимое стека stk2: ");
while (!stk2.IsEmpty())
{
ch = stk2.Pop();
Console.Write(ch);
}
Console.WriteLine("\n");
//Поместить 5 в стек
Console.WriteLine("Поместить 5 символов в стек stk3.");
for (i = 0; i < 5; i++)
stk3.Push((char)('A' + i));
Console.WriteLine("Емкость стека stk3: " + stk3.Capacity());
Console.WriteLine("Количество объектов в стеке stk3: " +
stk3.GetNum());
}
}
Поместить символы A-J в стек stk1.
Поместить символы A-J в стек stkl.
Стек stkl заполнен.
Содержимое стека stkl: JIHGFEDCBA
Стек stkl пуст.
Вновь поместить символы A-J в стек stkl.
А теперь извлечь символы из стека stkl
и поместить их в стек stk2.
Содержимое стека stk2: ABCDEFGHIJ
Поместить 5 символов в стек stk3.
Емкость стека stk3: 10
Количество объектов в стеке stk3: 5
Решение задачи: «Не соответствие результата по книге Шилда C Шарп Полное руководство»
textual
Листинг программы
for (i = 0; !stk1.IsFull(); i++) ;