Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhó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)

Share | 
 

 cau truc du lieu

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

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

Bài gửiTiêu đề: cau truc du lieu   Tue 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
Xem lý lịch thành viên
ddtan90
Admin
Admin
avatar

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

Bài gửiTiêu đề: Re: cau truc du lieu   Tue 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!

_____________________
Nothing is impossible!
Về Đầu Trang Go down
Xem lý lịch thành viên
mapcao91
Thành viên mới
Thành viên mới
avatar

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

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

hi.t da sua dc code ui.cam on ban nhieu nhe
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




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

Về Đầu Trang Go down
 
cau truc du lieu
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Những điều Sĩ quan Vận hành Boong (Phó 2, Phó 3) cần biết
» Tìm hiểu về Chân vịt bầu xoay (Azimuth thruster/Azimuth propulsion system)
» Hệ thống báo động trực ca hàng hải (Bridge Navigation Watch Alarm System - BNWAS)
» [Tin công nghệ] Công nghệ mới làm giảm tiêu thụ nhiên liệu cho đội tàu biển
» Tỷ lệ vàng

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