Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi codai
    COSO.CPP
    Mọi người thông cảm, em tìm mãi không thấy nút hiển thị code ở chỗ nào

    Điều này cực kì vô lí, trừ phi bạn không thấy đường thôi. Ở trang chủ có mục Hướng dẫn sử dụng code tag đấy.

    Tôi đề nghị bạn nên đưa code vào tag, nói rõ sai ở đâu, gặp lỗi gì... cho mọi người dễ giúp, cả đoạn code dài thế muốn giúp bạn người ta cũng ngại đọc -> bỏ qua luôn.

    Bài stack cần xem lại cách khởi tạo và sử dụng biến top cho hợp lí:

    Mã:
    void khoitao(stack &d)     {  d.top=-1;     }   int ktrong(stack d)     {   return d.top==-1;     }   void push(stack &d, char x)     {   d.top++;     d.a[d.top-1]=x;  // lần đầu push d.top-1 = -1 -> có tồn tại d.a[d.top-1] ?     }   void pop(stack &d)     { cout<<d.a[d.top-1]  ;       d.top--;     }
    Sửa lại thế này:

    Mã:
    void khoitao(stack &d)     {  d.top=-1;     }   int ktrong(stack d)     {   return d.top==-1;     }   void push(stack &d, char x)     {   d.top++;     d.a[d.top]=x;     }   void pop(stack &d, char &x)     {       if(ktrong(d)) return 0;        x = d.a[d.top]  ;       d.top--;       return 1;     }
    Trong hàm chuyen(int n, int k) tôi lưu ý bạn vài điều:

    Mã:
    void chuyen(int n, int k)     {  int du; stack d; char x;     cout<<"
     NHap so ";     cin>>n;     cout<<"
     Nhap co so : ";     cin>>k;     cout<<"
     So "<<n<<" o he co so "<<k<<" la : ";     while(n!=0)       {     du=n%k;                   //  du thuộc [0 ... k-1]         n=n/k;         if(du>='0'||du<='9')     // '0' = 48 , '9' = 57                        x=du+48;         else x=65+du-10;         push(d,x);       }     // lệnh này://      pop(d);         // nên sửa lại:    while(pop(d,x))               cout<<x;     }
    Bài về cây nhị phân tìm kiếm bạn nên làm như tôi đã nói ớ trên sẽ có nhiều sự giúp đỡ hơn đấy.
    Tôi đọc qua thì thấy vài điều:
    1. Trong hàm timkiemxoa dòng đầu bạn cho p = new node với mục đích gì?

    2. Hàm menu()

    Mã:
    void menu(){//.....case'4':      cout<<"
     So bao danh  : ";     cin>>x.sbd;     cout<<timkiem(d,x);    // hàm timkiem trả về 1 node* , chỗ này xuất cái gì?     break;//....}
    3. Hàm xóa 1 node có khóa x có thể viết thế này:

    Mã:
    // Tìm phần tử thế mạng cho nút pvoid searchStandFor(node *&p, node *&q){    if(q->left)        searchStandFor(p, q->left);    else{        p->info = q->info;        p = q;        q = q->right;    }} int delNode(node *&T, sv x){    if(T == NULL)  return 0;    if( (*T).info.sbd > x.sbd )        return delNode(T->left, x);    if( (*T).info.sbd < x.sbd )        return delNode(T->right, x);    node *p = T;    if(T->left == NULL)        T = T->right;    else if(T->right == NULL)        T = T->left;    else{        Node *q = T->right;        searchStandFor(p, q);    }    delete p;    return 1;}

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •