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

Đề tài: Lỗi cấp phát hay lỗi gì đây?

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

    Mặc định Lỗi cấp phát hay lỗi gì đây?

    Nhờ các bạn sửa giùm Lỗi của mình với,hình như là cấp phát bộ nhớ không đúng chỗ thì phải, 2-3 ngày rồi có lỗi này mà sửa không được. Điên đầu rồi>>>help me:
    Code:
    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    class interger {
           private:
                   int value;
           public:
                  interger*next;
                  int getValue(){
                           return value;
                  }
                  void setValue(int value1){
                           value = value1;
                  }
                  void display(){
                       cout<< value << "   ";
                  }
          };
    template<class T>
    class QLDS {
          private:
                  T*head,*tall;
                  int n;
          public:
                 void input();
                 void displayList();
                 QLDS();
                 ~QLDS();
                 void append(T*cur);                 //Them 1 sinh vien vao cuoi danh sach
                 void insert(int index,T*cur);       //Chen 1 sinh vien sau vi tri index
                 T getPT(int index);                 //Tra lai sinh vien o vi tri index
                 void firthead(T*cur);               //Them 1 sinh vien vao dau danh sach
                 void del(int index);                //Xoa 1 sinh vien o vi tri index
    };
    //--------------------------------------------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------
    template<class T>
    void QLDS<T>::displayList(){
                  T*q = head;
                  while(q != NULL){
                          q->display();
                          q = q->next;
                  }
           }
    template<class T>
    void QLDS<T>::input(){
                  cout<<"Moi ban nhap vao so phan tu cua danh sach: "; cin >> n;
                  int i = 1;
                  T*cur = NULL;
                  while(i <= n){
                          
                          T*kq = new T[1];
                          int vl;
                          cout<<"Phan Tu "<<i<<" : "; cin >> vl;
                          kq->setValue(vl);
                          if(i == 1){
                               head = tall = cur = kq; tall ->next = NULL;}
                          cur->next = kq;
                          cur = kq;
                          if(i == n){ tall = kq; tall->next = NULL; break;}
                          cur->next = NULL;
                          i++;
                  }
            }
    template<class T>
    QLDS<T>::QLDS(){
                   n = 0; head = tall = NULL;
            }
    //-----------------------------------------------------------------------------------------------------
    
    template<class T>
    QLDS<T>::~QLDS(){
                  T*p = head;
                  T*q;
                   while(p!=NULL)
                    {
                       q = p->next;
                       delete p;         
                       p = q;
                    }
                    n = 0;
            }
    //------------------------------------------------------------------------------------------
    
    template<class T>
    void QLDS<T>::append(T*cur){
                   tall->next = cur;
                   tall = cur;
                   tall->next = NULL;
            }
    //-------------------------------------------------------------------------------------------
    
    template<class T>
    void QLDS<T>::firthead(T*cur){
                cur->next = head;
                head = cur;   
            }
    //--------------------------------------------------------------------------------------------        
    template<class T>
    T QLDS<T>::getPT(int index){
                assert(index > 0 && index < n);
                int i = 1;
                T*p = head;
                p = p->next;
                while(p!=NULL){
                    i++;
                    if(i == index){
                         break;
                    }
                }
                return p;
            }
    //---------------------------------------------------------------------------------------------
            
    template<class T>
    void QLDS<T>::del(int index){
               assert(index > 0 && index < n);
                int i = 1;
                T*p = head;
                p = p->next;
                while(p!=NULL){
                    i++;
                    if(i == index){
                         break;
                    }
                }
                T*q = p->next;
                q->next = p->next;
                delete p;
                return p;
            }
    //---------------------------------------------------------------------------------------
            
    template<class T>
    void QLDS<T>::insert(int index,T*cur){
                assert(index > 0 && index < n);
                int i = 1;
                T*p = head;
                p = p->next;
                while(p!=NULL){
                    i++;
                    if(i == index){
                         break;
                    }
                }
                T*q = p->next;
                q->next = cur;
                cur->next = q;
           }
    //--------------------------------------------------------------------------------------
    
    void Menu(){
                cout<<" 1. Tao danh sach\n";
                cout<<" 2. Hien thi\n";
                cout<<" 3. Them vao dau\n";
                cout<<" 4. Them vao cuoi\n";
                cout<<" 5. Chen vao vi tri index\n";
                cout<<" 6. Xoa mot phan tu\n";
                cout<<" 7. Tra lai 1 phan tu\n";
         }
    void LuaChon()
      {
         int ESC;
         QLDS <interger> kq;
         while(ESC!=27)
          {
            Menu();           
            cout<<"Moi ban chon : "; int chon; cin >> chon;
            switch(chon)
             {
                 case 1:
                       kq.input(); break;
                 case 2:
                       kq.displayList();break;
                 case 3:
                       interger*in = new interger[1]; //--------------->Loi o day
                 case 4:
                       /*cout<<"Nhap thong tin:\n";
                       sinhvien sv1 = new sinhvien;
                       sv1.creatSV();
                       kq.add(sv1);break;*/
                 case 5:
                       /*int index1;
                       cout<<"Nhap thu tu cua sinh vien can xoa: ";
                       cin >> index1;
                       kq->del;break;*/
                 case 6:
                       /*cout<<"Moi ban nhap Thu tu chen vao: ";
                       int index2; cin >> index2; cin.ignore();
                       sinhvien sv = new sinhvien;
                       sv.creatSV();
                       kq.insertN(sv,index2);*/;
                 default:      ;
             }
            cout<<"\n---Bam ESC de thoat...!";
            cout<<"\n---Bam Enter de tiep tuc...!\n";
            ESC=getch();
          }
       }
    main()
    {
         LuaChon();
     }
    Bạn nào giúp mình với

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Lỗi là do trong cấu trúc switch case ko được khai báo biến.

    C++ Code:
    1. #include <iostream.h>
    2. #include <conio.h>
    3. #include <iomanip.h>
    4.  
    5. class interger
    6. {
    7.     private:
    8.         int value;
    9.     public:
    10.         interger*next;
    11.         int getValue()
    12.         {
    13.             return value;
    14.         }
    15.    
    16.         void setValue(int value1)
    17.         {
    18.             value = value1;
    19.         }
    20.    
    21.         void display()
    22.         {
    23.             cout<< value << "   ";
    24.         }
    25. };
    26.  
    27. template<class T>
    28. class QLDS
    29. {
    30.     private:
    31.         T*head,*tall;
    32.         int n;
    33.  
    34.     public:
    35.         void input();
    36.         void displayList();
    37.         QLDS();
    38.         ~QLDS();
    39.         void append(T*cur);                 //Them 1 sinh vien vao cuoi danh sach
    40.         void insert(int index,T*cur);       //Chen 1 sinh vien sau vi tri index
    41.         T getPT(int index);                 //Tra lai sinh vien o vi tri index
    42.         void firthead(T*cur);               //Them 1 sinh vien vao dau danh sach
    43.         void del(int index);                //Xoa 1 sinh vien o vi tri index
    44. };
    45. //--------------------------------------------------------------------------------------------------
    46. //--------------------------------------------------------------------------------------------------
    47. template<class T>
    48. void QLDS<T>::displayList()
    49. {
    50.     T*q = head;
    51.     while(q != NULL)
    52.     {
    53.         q->display();
    54.         q = q->next;
    55.     }
    56. }
    57.  
    58. template<class T>
    59. void QLDS<T>::input()
    60. {
    61.     cout<<"Moi ban nhap vao so phan tu cua danh sach: "; cin >> n;
    62.     int i = 1;
    63.     T*cur = NULL;
    64.     while(i <= n)
    65.     {
    66.         T*kq = new T[1];
    67.         int vl;
    68.         cout<<"Phan Tu "<<i<<" : "; cin >> vl;
    69.         kq->setValue(vl);
    70.         if(i == 1)
    71.         {
    72.             head = tall = cur = kq; tall ->next = NULL;
    73.         }
    74.         cur->next = kq;
    75.         cur = kq;
    76.         if(i == n)
    77.         {
    78.             tall = kq; tall->next = NULL;
    79.             break;
    80.         }
    81.         cur->next = NULL;
    82.         i++;
    83.     }
    84. }
    85. template<class T>
    86. QLDS<T>::QLDS()
    87. {
    88.     n = 0; head = tall = NULL;
    89. }
    90. //-----------------------------------------------------------------------------------------------------
    91.  
    92. template<class T>
    93. QLDS<T>::~QLDS()
    94. {
    95.     T*p = head;
    96.     T*q;
    97.     while(p!=NULL)
    98.     {
    99.         q = p->next;
    100.         delete p;        
    101.         p = q;
    102.     }
    103.     n = 0;
    104. }
    105. //------------------------------------------------------------------------------------------
    106.  
    107. template<class T>
    108. void QLDS<T>::append(T*cur)
    109. {
    110.     tall->next = cur;
    111.     tall = cur;
    112.     tall->next = NULL;
    113. }
    114. //-------------------------------------------------------------------------------------------
    115.  
    116. template<class T>
    117. void QLDS<T>::firthead(T*cur)
    118. {
    119.     cur->next = head;
    120.     head = cur;  
    121. }
    122. //--------------------------------------------------------------------------------------------        
    123. template<class T>
    124. T QLDS<T>::getPT(int index)
    125. {
    126.     assert(index > 0 && index < n);
    127.     int i = 1;
    128.     T*p = head;
    129.     p = p->next;
    130.     while(p!=NULL)
    131.     {
    132.         i++;
    133.         if(i == index)
    134.         {
    135.             break;
    136.         }
    137.     }
    138.     return p;
    139. }
    140. //---------------------------------------------------------------------------------------------
    141.  
    142. template<class T>
    143. void QLDS<T>::del(int index)
    144. {
    145.     assert(index > 0 && index < n);
    146.     int i = 1;
    147.     T*p = head;
    148.     p = p->next;
    149.     while(p!=NULL)
    150.     {
    151.         i++;
    152.         if(i == index)
    153.         {
    154.             break;
    155.         }
    156.     }
    157.     T*q = p->next;
    158.     q->next = p->next;
    159.     delete p;
    160.     return p;
    161. }
    162. //---------------------------------------------------------------------------------------
    163.  
    164. template<class T>
    165. void QLDS<T>::insert(int index,T*cur)
    166. {
    167.     assert(index > 0 && index < n);
    168.     int i = 1;
    169.     T*p = head;
    170.     p = p->next;
    171.     while(p!=NULL)
    172.     {
    173.         i++;
    174.         if(i == index)
    175.         {
    176.             break;
    177.         }
    178.     }
    179.     T*q = p->next;
    180.     q->next = cur;
    181.     cur->next = q;
    182. }
    183. //--------------------------------------------------------------------------------------
    184.  
    185. void Menu()
    186. {
    187.     cout<<" 1. Tao danh sach\n";
    188.     cout<<" 2. Hien thi\n";
    189.     cout<<" 3. Them vao dau\n";
    190.     cout<<" 4. Them vao cuoi\n";
    191.     cout<<" 5. Chen vao vi tri index\n";
    192.     cout<<" 6. Xoa mot phan tu\n";
    193.     cout<<" 7. Tra lai 1 phan tu\n";
    194. }
    195.  
    196. void LuaChon()
    197. {
    198.     int ESC;
    199.     interger *in;
    200.     QLDS <interger> kq;
    201.  
    202.     while(ESC!=27)
    203.     {
    204.     Menu();          
    205.     cout<<"Moi ban chon : "; int chon; cin >> chon;
    206.     switch(chon)
    207.     {
    208.         case 1:
    209.             kq.input(); break;
    210.  
    211.         case 2:
    212.             kq.displayList();break;
    213.    
    214.         case 3:
    215.             in = new interger[1]; //--------------->Loi o day
    216.             break;
    217.  
    218.         case 4:
    219.             /*cout<<"Nhap thong tin:\n";
    220.             sinhvien sv1 = new sinhvien;
    221.             sv1.creatSV();
    222.             kq.add(sv1);break;*/
    223.             break;
    224.  
    225.         case 5:
    226.             /*int index1;
    227.             cout<<"Nhap thu tu cua sinh vien can xoa: ";
    228.             cin >> index1;
    229.             kq->del;break;*/
    230.             break;
    231.  
    232.         case 6:
    233.             /*cout<<"Moi ban nhap Thu tu chen vao: ";
    234.             int index2; cin >> index2; cin.ignore();
    235.             sinhvien sv = new sinhvien;
    236.             sv.creatSV();
    237.             kq.insertN(sv,index2);*/;
    238.             break;
    239.         }
    240.  
    241.         cout<<"\n---Bam ESC de thoat...!";
    242.         cout<<"\n---Bam Enter de tiep tuc...!\n";
    243.         ESC=getch();
    244.     }
    245. }
    246.  
    247. main()
    248. {
    249.     LuaChon();
    250.     return 0;
    251. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Nếu cấp phát ngoài case: thì oke, còn trong case: thì bị lỗi, nói chung là bó tay
    Bác nào pro giúp em với.

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi dangnhapvn Xem bài viết
    Nếu cấp phát ngoài case: thì oke, còn trong case: thì bị lỗi, nói chung là bó tay
    Bác nào pro giúp em với.
    ko phải là do cấp phát mà là trong cấu trúc switch case ko được phép khai báo biến.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Cảm ơn anh meoconlongvang nhiều nha.
    Có 1 lỗi này mà em sửa mãi ko biết.
    Nạp bài cho thầy mất rùi.
    May mà bài này thầy ko lấy điểm.hihihi
    Nhưng rút kinh nghiệm lần sau.
    Em đưa post bài lên đây chưa quen nên hơi xấu mong các anh thông củm nhé.
    Lần sau bót nhất định phân biệt được từ khóa và các từ khác.
    Thank you very much.

  6. #6
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Mặc định Lỗi cấp phát hay lỗi gì đây?

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    ko phải là do cấp phát mà là trong cấu trúc switch case ko được phép khai báo biến.
    Muốn khai báo biên thì để trong khối block đó {...}
    ví dụ :
    case 5:
    {
    int i = 1;
    }

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