Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: sai code chuyển hệ 10 sang hệ 16 dùng stack

  1. #1
    Ngày gia nhập
    11 2010
    Nơi ở
    Nha Trang đất nóng
    Bài viết
    161

    Mặc định sai code chuyển hệ 10 sang hệ 16 dùng stack

    Chào các bạn.Mình thử viết code chuyển hệ 10 sang hệ 16 dùng stack nhưng chưa rõ nên nó bảo lỗi khi đưa ra kết quả.Mọi người xem giúp đỡ mình nhé.
    class stack :
    Visual C# Code:
    1.  public class Stack<T>
    2.     {
    3.         private int n;
    4.         private int top ;
    5.         public T[] a;
    6.         public int Top
    7.         {
    8.             get { return top; }
    9.             set { top = value; }
    10.         }
    11.         public Stack(int n)
    12.         {
    13.             this.n = n;
    14.             a = new T[n];
    15.         }
    16.         public bool IsEmpty()
    17.         {
    18.             return top == -1;
    19.         }
    20.         public bool IsFull()
    21.         {
    22.             return top == n - 1;
    23.         }
    24.         public void Push(T pt)
    25.         {
    26.            
    27.             if (!IsFull())
    28.             {
    29.                 top = top + 1;
    30.                 a[top] = pt;
    31.             }
    32.             else
    33.             {
    34.                 Console.WriteLine("Stack da day!");
    35.             }
    36.         }
    37.         public void Pop()
    38.         {
    39.             if (!IsEmpty())
    40.             {
    41.                 top = top - 1;
    42.             }
    43.             else
    44.             {
    45.                 Console.WriteLine("Stack rong");
    46.             }
    47.         }
    48.     }
    class HEXA:
    Visual C# Code:
    1. class Hexa
    2.     {
    3.         char[] cHexa = new char[6] { 'A', 'B', 'C', 'D', 'E', 'F' };
    4.         int n,i;
    5.         const int base10 = 10;
    6.         Stack<int> s = new Stack<int>(32);
    7.         public void nhap()
    8.         {
    9.             Console.Write("So nguyen o he so 10 :");
    10.             n = Int32.Parse(Console.ReadLine());
    11.         }
    12.         public void chuyendoi()
    13.         {
    14.             for(;n>0;n/=16)
    15.             {
    16.                 n = n % 16;
    17.                 s.Push(n);
    18.                
    19.             }
    20.             Console.Write("He so 16:");
    21.             while (!s.IsEmpty())
    22.             {
    23.                 i = s.Top;
    24.                 if (i >= 10 )
    25.                     Console.Write(cHexa[(i%10)]);
    26.                 else
    27.                     Console.Write(i);
    28.                 s.Push(i);
    29.                
    30.             }
    31.         }
    Có chương trình mình viết kèm theo!
    Attached Files Attached Files

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Ở stack Pop data thì return T nhé.

    Hàm chuyển đổi sai logic rồi. Chia lấy dư cho vào stack, chia lấy nguyên gán cho chính nó, lặp lại. Thử sửa như này nhé:

    Code:
    for(;n>0;n/=16)
                {
                    s.Push(n % 16);
                }

  3. #3
    Ngày gia nhập
    11 2010
    Nơi ở
    Nha Trang đất nóng
    Bài viết
    161

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Ở stack Pop data thì return T nhé.

    Hàm chuyển đổi sai logic rồi. Chia lấy dư cho vào stack, chia lấy nguyên gán cho chính nó, lặp lại. Thử sửa như này nhé:

    Code:
    for(;n>0;n/=16)
                {
                    s.Push(n % 16);
                }
    đúng mà bạn.Bị sai chỗ in ra cHEXA[i%10] đó.Nó báo lỗi là outside the bounds of the array

  4. #4
    Ngày gia nhập
    11 2010
    Nơi ở
    Nha Trang đất nóng
    Bài viết
    161

    Có ai giúp mình với.Mình chưa hiểu về stack lắm.Khi chạy mình thấy nó in ra tất cả các phần tử trong Stack rồi báo lỗi như trên ah

  5. #5
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Chủ yếu của bạn là gì? Viết một lớp Stack hay là viết một lớp mẫu (template).
    Viết một lúc hai thứ cũng không sao nhưng hình như bạn chưa nắm vững cả hai nên có sự lẫn lộn trong code.

    Bước 1: Nghiên cứu lại xem một lớp Stack căn bản thì cần những phương thức và thuộc tính gì.

    Bước 2: Sửa code lớp Stack lại thành bình thường (chỉ dùng int hoặc char). Khi chạy tốt rồi thì sửa thành template.

Các đề tài tương tự

  1. Lập trình C Dùng stack để chuyển Thập phân sang Nhị phân!
    Gửi bởi tuanle_1108 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 24-11-2012, 02:26 AM
  2. code bài chuyển biểu thức từ trung sang hậu tố-Dùng Stack
    Gửi bởi Loveanygirls trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 16-02-2012, 02:48 PM
  3. Help:dùng stack chuyển biểu thức từ trung sang hậu tố
    Gửi bởi nike trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 23-11-2010, 10:20 PM
  4. Dùng stack, chuyển trung tố sang hậu tố bị lỗi. Đề tài niên luận của tớ.
    Gửi bởi Loveanygirls trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 15-11-2010, 10:17 AM
  5. Code về stack | Chuyển hệ số 10 sang 2 dùng stack
    Gửi bởi ahappyboy89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 17-04-2009, 09:48 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn