em có lập trình bài chuyển đổi cơ số nó không hiển thị lỗi nhưng chạy tới đoạn pop() thì nó lại exit ạ.
using System;
using System.Collections.Generic;
using System.Text;
namespace chuyendoicoso
{
class TStack
{
Object[] stack;
Int32 i;
Int32 j;
public TStack(int n)
{
stack = new Object[n];
i = 0;
j = n;
}
public void Push(object item)
{
if (!isStackFull())
{
stack[i++] = item;
}
else
Console.WriteLine("Stack is Full");
}
public bool isStackFull()
{
if (i == j)
return true;
else
return false;
}
public object Pop()
{
if (stack.Length != 0)
return stack[i--];
return -1;
}
public object TopElement()
{
if (stack.Length != 0)
return stack[i - 1];
return 0;
}
}
class Program
{
static void Main(string[] args)
{
Console.Title = "Chuyen doi he co so";
Console.Clear();
Console.Write("Nhap so: ");
var n = int.Parse(Console.ReadLine());
int k = n, dem=0;
while(k!=0)
{
k = k / 10;
dem++;
}
Console.Write("Nhap he co so can chuyen: ");
var b = int.Parse(Console.ReadLine());
var bin = Convert(n, b, dem);
Console.WriteLine($"{n} (he co so 10) => {bin} (he co so {b})");
Console.ReadKey();
}
static string Convert(int so, int coso, int dodai)
{
TStack a = new TStack(dodai+1);
do
{
var d = so % coso;
if (d >= 10 && d <= 15 && coso == 16)
{
var hex = string.Empty; // chuoi hex trong
switch (d)
{
case 10: hex = "A"; break;
case 11: hex = "B"; break;
case 12: hex = "C"; break;
case 13: hex = "D"; break;
case 14: hex = "E"; break;
case 15: hex = "F"; break;
}
a.Push(hex);
dodai++;
}
else
{
a.Push(d.ToString());
dodai++;
}
so /= coso;
} while (so != 0);
var sb = new StringBuilder();
while (dodai > 0)
{
sb.Append(a.Pop());
dodai--;
}
return sb.ToString();
}
}
}