Câu lạc bộ Hỗ Trợ Học Tập
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
Trang ChínhTrang Chính  Latest imagesLatest images  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
  • Top posters
 Mr.Pakapun (256)
 ddtan90 (178)
 tvduong (147)
 dthnam90 (137)
 minhquankq (101)
 arianbo (70)
 DoanhNhan (54)
 chicken (53)
 stormit (52)
 gentle_storm (47)

 

 cau truc du lieu

Go down 
2 posters
Tác giảThông điệp
mapcao91
Thành viên mới
Thành viên mới
mapcao91


Tổng số bài gửi : 12
Join date : 28/02/2011

cau truc du lieu Empty
Bài gửiTiêu đề: cau truc du lieu   cau truc du lieu EmptyTue Mar 29, 2011 7:24 pm

các bạn ơi, sửa bài này giúp mình với.
Code:

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 100
using namespace std;
typedef char ElementType ;
typedef struct{
  ElementType Element[MAX];
  int Top; 
}Stack;
 
/*khoi tao ngan xep */
void MakeNull_Stack(Stack *S)
{
    (*S).Top=MAX;
 
}
//kiem tra ngan xep rong
ElementType Empty_Stack(Stack S)
{
    return S.Top==MAX;
   
}
//kiem tra nga xep day
ElementType Full_Stack(Stack S)
{
    return S.Top==0;
}

//them mot phan tu vao ngan xep
void Push(ElementType X,Stack *S)
{
    if(Full_Stack(*S))
    printf("\nError :Ngan xep day");
    else
    {
        (*S).Top=(*S).Top-1;
        (*S).Element[(*S).Top]=X;
    }
}
//tra ve phan tu dau ngan xep
ElementType Top(Stack S)
{
    if(Empty_Stack(S)) printf("\nError :Ngan xep rong");
    else
    {
        return S.Element[S.Top];
    }
 
}

//xoa mot phan tu khoi ngan xep
void Pop(Stack *S)
{
    if(Empty_Stack(*S)) printf("\nError : Ngan xep rong");
    else
    {
          (*S).Top=(*S).Top+1;
    }
}
//in
//void Print_Stack(Stack S)
//{
//    for(int i=S.Top;i<MAX;i++)
//    printf("%d ",S.Element[i]);
//}

//void doi_sang_hau_to(char *,char *);
//int uu_tien(char);
//int laso(char);
int laso(char kitu){
 return (kitu>='0'&&kitu<='9');
}
int uu_tien(char toan_tu){
    switch(toan_tu){
                      case '*':case '/':{return 2; break;}
                      case '+':case '-':{return 1; break;}
                      case'(':{return 0; break;}
    }
}
void doi_sang_hau_to(char *Element,char* kq){
    char i;
    int j,k=0;
    Stack S;
    MakeNull_Stack(S);
    while(Element[j]){
        if(laso(Element[j])){
                        kq[k]=Element[j];
                        k++;
        }
        else if(laso(Element[j])==0&&Element[j]!=')')
              if(uu_tien (S.Element[S.Top])>= uu_tien(Element[j])&&uu_tien(Element[j])!=0){
                    Pop(S,i);
                    kq[k]=i;
                    k++;
                    Push(S,Element[j]);
              }
              else Push(S,Element[j]);
        if(Element[j]==')')
        {
            while(S.Element[S.Top]!='(')
            {
                Pop(S,i);
                kq[k]=i;
                k++;
                                 
            }
            Pop(S,i);
        }
        j++;
    }
    while(!Empty_Stack(S))
    {
          Pop(S,i);
          kq[k]=i;
          k++;               
    }
    kq[k]='\0';
}


int main(){
ElementType Element[MAX];
ElementType kq[MAX];
cout<<"nhap bieu thuc:";
cin.getline(Element,MAX);
doi_sang_hau_to(Element,kq);
cout<<"\nbieu thuc hau to:"<<kq<<endl;
return 0;
getch();
}



[Admin]
Các bạn nên đưa code vào cặp thẻ |code| |/code| để code hiện đúng định dạng.
Thêm 1 lưu ý nữa, các bạn nên đặt tên bài viết và yêu cầu trong bài viết rõ ràng 1 chút để người xem dễ biết đường mà giúp các bạn. Nếu bạn cứ để như vậy thì người khác sẽ không biết bạn bị sai chổ nào mà giúp.
Về Đầu Trang Go down
ddtan90
Admin
Admin
ddtan90


Tổng số bài gửi : 178
Join date : 30/12/2010
Age : 33
Đến từ : SE 3 - K34

cau truc du lieu Empty
Bài gửiTiêu đề: Re: cau truc du lieu   cau truc du lieu EmptyTue Mar 29, 2011 9:39 pm

Bài của bạn về giải thuật thì mình chưa có thời gian coi, nhưng nhìn sơ qua thì mình thấy nhiều lỗi cú pháp lắm, ví dụ 1 vài chổ nhe:
1. lúc khai báo MakeNull_Stack thì bạn cho tham số là (*S) nhưng khi gọi hàm này bạn lại gọi chỉ có MakeNull_Stack(S); (dòng 86). Các hàm Pop(*S), Push(X,*S) cũng vậy. Các hàm này khi gọi tơid nó thì bạn phải gọi MakeNull_Stack(&S);, Pop(&S), ....
2. Hàm Pop và hàm Push có vấn đề
- Bạn khai báo Pop (*S), nhưng khi bạn gọi nó thì bạn lại gọi Pop(S,i).
- Bạn khai báo Push (X,*S) , nhưng khi bạn gọi nó thì bạn lại gọi Push (S,X).

Hi vọng vài góp ý này giúp được bạn!
Thân!
Về Đầu Trang Go down
mapcao91
Thành viên mới
Thành viên mới
mapcao91


Tổng số bài gửi : 12
Join date : 28/02/2011

cau truc du lieu Empty
Bài gửiTiêu đề: Re: cau truc du lieu   cau truc du lieu EmptyTue Mar 29, 2011 10:30 pm

hi.t da sua dc code ui.cam on ban nhieu nhe
Về Đầu Trang Go down
Sponsored content





cau truc du lieu Empty
Bài gửiTiêu đề: Re: cau truc du lieu   cau truc du lieu Empty

Về Đầu Trang Go down
 
cau truc du lieu
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Thêm, sửa, xóa dữ liệu trực tiếp trên Datagridview không thông qua textbox
» Trúc xanh_C#
» Đề thi Kiến trúc máy tính
» PHP căn bản - 4 - Cấu trúc điều khiển, Hàm
» Trò chơi trúc xanh đây!! Thử tài trí nhớ nào!

Permissions in this forum:Bạn không có quyền trả lời bài viết
Câu lạc bộ Hỗ Trợ Học Tập :: CÁC MÔN ĐẠI CƯƠNG - CƠ SỞ NGÀNH :: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT-
Chuyển đến