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

Đề tài: Lỗi về stack in c#

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    20

    Mặc định Lỗi về stack in c#

    Em mới bắt đầu làm quen với c#.
    em code một số thủ tục thì gặp phải lỗi này:
    Object reference not set to an instance of an object
    lỗi tại dòng:

    Code:
    while(S1.Count !=0 && a[i]<TOP(S2))
    Em có khai báo

    Code:
    Stack S1,S2,S3,S4 = new Stack();
    không hiểu tại sao vẫn có lỗi như vậy. Không biết phải sửa như thế nào?
    Mong mọi người hướng dẫn chi tiết cho em.
    thanks

    phần code của em như sau:

    Code:
    class Important
    {
            Stack S1,S2,S3,S4 = new Stack();
            int[] a, strict_imp, left_imp, right_imp, flat_imp;
            public void FindImportance(int[] a,int n)             
            {
                int i = 1, left = 1;
                int mv = a[1];
                try
                {
                    while (i < n)
                    {
                        while (i<n && a[i] >= a[i + 1])
                        {
                            i = i + 1;
                            if (a[left] > a[i])
                                left = i;
                        }
                        if (left > 1)
                            PUSHMINIMUM(left, mv);
                        for (int flat = left + 1; flat < i - 1; flat++)
                        {
                            PUSHMINIMUM(flat, a[flat]);
                        }
                        if (i > left && i < n)
                            PUSHMINIMUM(i, mv);
                        i = i + 1;
                        while (i < n && a[i] <= a[i + 1])
                            i = i + 1;
                        mv = a[i]; i = i + 1; left = i;
                    }
                    while (S1.Count != 0)
                        mv = POPMINIMUM(mv);
                }
                catch (Exception e)
                {
                    Console.WriteLine("loi:{0}",e);
                }
            }
            public void PUSHMINIMUM(int i,int mv)                      
            {
                while(S1.Count !=0 && a[i]<TOP(S2))
                    mv=POPMINIMUM(mv);
                if(S3.Count !=0)
                    mv=TOP(S3);                            
                PUSH(S1,i);PUSH(S2,mv);PUSH(S3,a[i]);
                if(S4.Count !=0)
                    PUSH(S4,Math.Max(TOP(S4),mv));
                else
                    PUSH(S4,mv);                            
               //list.AddTail(a[i]);
            }
    }

  2. #2
    Ngày gia nhập
    01 2008
    Bài viết
    148

    có lẽ bạn chưa add thư viện refferent .bạn có thể post project của bạn lên để mình tiện kiểm tra cho bạn được không.
    <bạn nên tham khảo cách đặt code trong các thẻ đả được tích hợp trong diễn đàn để mọi người dẽ nhìn http://forums.congdongcviet.com/showthread.php?t=6131>

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    20

    my project
    please help me.

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.IO;
    5.  
    6. namespace Importance
    7. {
    8.     class Program
    9.     {
    10.         static int[] mang=new int[10]; static int dem = 0;                             //mot doi tuong tham chieu thi phai co static
    11.         static void Main(string[] args)
    12.         {
    13.             Important imp = new Important();
    14.             int i = 0;
    15.             StreamReader strem = new StreamReader("C://input.txt");
    16.             string line = strem.ReadLine();
    17.             while (line != null)
    18.             {
    19.                 mang[i] = int.Parse(line);
    20.                 line = strem.ReadLine();
    21.                 i = i + 1;
    22.                 dem = dem + 1;
    23.             }
    24.             strem.Close();
    25.             //Console.WriteLine(dem + " ");
    26.             imp.FindImportance(mang, dem);
    27.             /*foreach (int so in mang)
    28.             {
    29.                 Console.WriteLine(so + " ");
    30.             }*/
    31.             Console.ReadLine();    
    32.         }
    33.     }
    34. }

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Collections;
    4. using System.Text;
    5.  
    6. namespace Importance
    7. {
    8.     class Important
    9.     {
    10.         //S1 de luu tat ca cac minima cuc bo
    11.         //S2,S3,S4 de luu cac gia tri lon nhat tuong ung cua chung
    12.         Stack S1,S2,S3,S4 = new Stack();
    13.          //LinkList list = new LinkList();          // list de luu cac diem theo thu tu chi muc cua chung
    14.         int[] a, strict_imp, left_imp, right_imp, flat_imp;
    15.         //int n;
    16.         public void FindImportance(int[] a,int n)             //tim diem quan trong cua tat ca minima
    17.         {
    18.             int i = 1, left = 1;
    19.             int mv = a[1];
    20.             try
    21.             {
    22.                 while (i < n)
    23.                 {
    24.                     while (i<n && a[i] >= a[i + 1])
    25.                     {
    26.                         i = i + 1;
    27.                         if (a[left] > a[i])
    28.                             left = i;
    29.                     }
    30.                     if (left > 1)
    31.                         PUSHMINIMUM(left, mv);
    32.                     for (int flat = left + 1; flat < i - 1; flat++)
    33.                     {
    34.                         PUSHMINIMUM(flat, a[flat]);
    35.                     }
    36.                     if (i > left && i < n)
    37.                         PUSHMINIMUM(i, mv);
    38.                     i = i + 1;
    39.                     while (i < n && a[i] <= a[i + 1])
    40.                         i = i + 1;
    41.                     mv = a[i]; i = i + 1; left = i;
    42.                 }
    43.                 while (S1.Count != 0)
    44.                     mv = POPMINIMUM(mv);
    45.             }
    46.             catch (Exception e)
    47.             {
    48.                 Console.WriteLine("loi:{0}",e);
    49.             }
    50.         }
    51.         public void PUSHMINIMUM(int i,int mv)                      //Push diem thu i vao stack
    52.         {
    53.             while(S1.Count !=0 && a[i]<TOP(S2))
    54.                 mv=POPMINIMUM(mv);
    55.             if(S3.Count !=0)
    56.                 mv=TOP(S3);                            
    57.             PUSH(S1,i);PUSH(S2,mv);PUSH(S3,a[i]);
    58.             if(S4.Count !=0)
    59.                 PUSH(S4,Math.Max(TOP(S4),mv));
    60.             else
    61.                 PUSH(S4,mv);                            
    62.            //list.AddTail(a[i]);
    63.         }
    64.         public int POPMINIMUM(int mv)                  //pop diem va set diem quan trong
    65.         {
    66.             mv=SETIMPORTANCE(POP(S1),POP(S2),POP(S3),POP(S4),mv);    
    67.             return mv;
    68.         }
    69.         public int SETIMPORTANCE(int i,int lm,int rm,int lms,int mv)      // set diem quan trong
    70.         {
    71.             if(a[i]<lm && a[i]<rm )
    72.                 strict_imp[i]=Math.Min(dist(a[i],lm),dist(a[i],rm));
    73.              if(a[i]<lm && rm < mv )
    74.                 left_imp[i]=Math.Min(dist(a[i],lm),dist(a[i],mv));
    75.              if(a[i]<rm && lm<lms )
    76.                 right_imp[i]=Math.Min(dist(a[i],lms),dist(a[i],rm));
    77.               if(lm<lms && rm<mv )
    78.                 flat_imp[i]=Math.Min(dist(a[i],lms),dist(a[i],mv));
    79.             if(mv<lm)
    80.                 mv=lm;
    81.             return mv;
    82.         }
    83.         public int dist(int a, int b)                    //Tra ve gia tri tuyet doi cua khoang cach giua a va b
    84.         {
    85.             return Math.Abs(a-b);
    86.         }
    87.         public int POP(Stack stack)                      //tra ve gia tri cua dinh stack va xoa no khoi stack
    88.         {
    89.             return Convert.ToInt16(stack.Pop());
    90.         }
    91.         public int TOP(Stack stack)                       // Phep TOP tra ve gia tri dinh cua stack
    92.         {
    93.             return Convert.ToInt16(stack.Peek());
    94.         }
    95.         public void PUSH(Stack stack, int giatri)           //Phep PUSH them gia tri moi vao dinh cua stack
    96.         {
    97.             stack.Push(giatri);
    98.         }
    99.     }
    100. }

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

  1. Bài tập C++ copy noi dung tu stack S sang stack D
    Gửi bởi thaodn_chuprong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 18-10-2012, 11:45 PM
  2. Cấu trúc dữ liệu Chuyển các phần tử từ stack này sang stack kia như thế nào?
    Gửi bởi rukawa1184 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 9
    Bài viết cuối: 06-12-2011, 06:52 PM
  3. Stack, ngăn xếp - Thiết lập và ứng dụng stack trong C
    Gửi bởi PoPoPoPo trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 8
    Bài viết cuối: 15-11-2010, 11:24 PM
  4. Stack trên C | Lỗi khó hiểu trong Stack
    Gửi bởi tom3cang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-05-2009, 11:09 PM
  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