giúp em về C với các bác ơi

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi Hoang_Nguyen, 16/10/06.

  1. Hoang_Nguyen

    Hoang_Nguyen Youtube Master Race

    Tham gia ngày:
    1/6/06
    Bài viết:
    90
    em có đoạn chương trình này đã hoàn thành.nhưng khi thao tác trên máy thì khi nhấn lệnh từ lệnh này sang lệnh khác thì cứ phải nhấn các số khác nhau rồi nhấn enter thì máy mới hiện lên các dòng chỉ thị lệnh tiếp theo.vậy bác nào giỏi C xin sửa giúp em đoạn chương trình này với

    PHP:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #define TRUE 1
    #define FALSE 0
    #define NULLKEY -1
    #define M 10

    //khai bao cau truc mot nut cua bang bam
    struct node
    {
        
    int key//khoa cua nut tren bang bam
    };

    //Khai bao bang bam co M nut
    struct node hashtable[M];
    int N;
    /*bien toan cuc chi so nut hien co tren bang bam*/

    //ham bam
    int hashfunc(int key)
    {
        return(
    key %M);
    }

    //khoi dong bang bam
    void initialize()
    {
    int i;
        for(
    i=0;i<M;i++)
        
    hashtable[i].key=NULLKEY;
        
    N=0;    //so nut hien co khoi dong bang 0
    }

    //tac vu empty:kiem tra ba bang bam co ranh khong
    int empty()
    {
        return(
    N==0?TRUE:FALSE);
    }
    //tac vu full:kiem tra bang bam da day chua
    int full()
    {
        return(
    N==M-1?TRUE:FALSE);
    }
    /*----------------------------------------------------------------------------------------------------------------------------------------
    tac vu search:tim kiem nut co khoa k tren bang bam,neu khong tim thay ham nay tra ve vi tri M,neu tim thay ham nay tra ve dia chi tim thay
    ----------------------------------------------------------------------------------------------------------------------------------------*/
    int search(int k)
    {
        
    int i;
        
    i=hashfunc(k);
        while(
    hashtable[i].key!=k&&hashtable[i].key!=NULLKEY)
        {
        
    //bam lai(theo phuong phap do tim tuyen tinh):hi(key)=h(key)+i)%M)
            
    i=i+1;
            if(
    i>=M)
            
    i=i-M;
        }
        if(
    hashtable[i].key==k)        //tim thay
            
    return(i);
        else        
    //khong tim thay
            
    return(M);
    }
    //tac vu insert:them nut co khoa k vao bang bam
    int insert(int k)
    {
        
    int i,j;
        if(
    full())
        {
            
    printf("\nbang bam bi da,khong them nut co khoa %d duoc",k);
            return(
    M);
        }
        
    i=hashfunc(k);
        while(
    hashtable[i].key!=NULLKEY)
        {
            
    //bam lai (theo phuong phap do tuyen tinh)
            
    i++;
            if(
    i>=M)
            
    i=i-M;
        }
        
    hashtable[i].key=k;
        
    N=N+1;
        return(
    i);
    }

    //tac vu remove:xoa nut tai dia chi i tran bang bam
    void remove(int i)
    {
        
    int j,r,cont,a;
        
    cont=TRUE;
        do
        {
        
    hashtable[i].key=NULLKEY;
            
    j=i;
            do
            {
            
    i=i+1;
            if(
    i>=M)
            
    i=i-M;
            if(
    hashtable[i].key==NULLKEY)
                
    cont=FALSE;
            else
            {
                
    r=hashfunc(hashtable[i].key);
                
    a=(j<r&&r<=i)||(r<=i&&i<j)||(i<j&&j<r);
            }
        }
        while(
    cont&&a);
        if(
    cont)
            
    hashtable[j].key=hashtable[i].key;
        }while(
    cont);
        }
        
    void DeleteAll(){
         
    int i;
         for(
    i=0;i<M;i++)
           
    remove(i);
        }
        
    //tac vu viewtable:xem chi tiet bang bam
        
    void viewtable()
        {
            
    int i;
            for(
    i=0;i<M;i++)
            
    printf("\ntable[%d]:%4d",i,hashtable[i].key);
        }
        
    //chuong trinh chinh
        
    main()
        {
            
    int i,n,p,q;
            
    int b,key,chucnang;
            
    char ch;
            
    clrscr();
            
    //khoi tao bang bam
            
    initialize();
            do
            {
                
    //menu chinh cua chuong trinh
                
    printf("\n\nchuc nang cua chuong trinh:\n");

                
    printf("1:them nut moi vao bang bam\n");
                
    printf("2:tham ngau nhien nhieu nut vao bang bam\n");
                
    printf("3:xoa nut tren bang bam\n");
                
    printf("4:xoa toan bo bang bam\n");
                
    printf("5:xem chi tiet bang bam\n");
                
    printf("6:tim kiem tren bang bam\n");
                
    printf("0:ket thuc chuong trinh\n");
                
    printf("\nchuc nang ban chon:");
                
    scanf("%d",&chucnang);
                switch(
    chucnang)
                {
                case 
    1:
                {
                    
    printf("\nTHEM NUT VAO BANG BAM");
                    
    printf("\nkhoa cua nut moi:");
                    
    scanf("%d",&key);
                    
    insert(key);
                    break;
                }
                case 
    2:
                {
                    
    printf("\nTHEM NGAU NHIEN NHIEU NUT VAO BANG BAM");
                    
    printf("\ban muon them bao nhieu nut:");
                    
    scanf("%d",&n);
                    for(
    i=0;i<n;i++)
                    {
                        
    key=random(1000);
                        
    insert(key);
                    }
                    break;
                }
                case 
    3:
                {
                    
    printf("\nxoa nut tren bang bam");
                    
    printf("\nkhoa cua nut can xoa");
                    
    scanf("%d",&key);
                    
    i=search(key);
                    if(
    i==M)
                        
    printf("\nkhong co nut voi khoa can xoa");
                    else
                    {
                    
    remove(i);
                    
    N--;
                }
                break;
            }
            case 
    4:
            {
                
    printf("\nxoa toan bo bang bam");
                
    printf("nban co chac khong(c/k):");
                
    ch=getchar();
                if(
    ch=='c'||ch=='C')
                  
    DeleteAll();
                    
    //initialize();
                
    break;
            }
            case 
    5:
            {
                
    printf("\nxem chi tiet bang bam");
                
    viewtable();
                break;
            }
            case 
    6:
            {
                
    printf("\ntim kiem tren bang bam");
                
    printf("\nkhoa can tim:");
                if(
    search(key)==M)
                    
    printf("\n khong thay");
                else
                    
    printf("\ntim thay dia chi %d trong bang bam",search(key));
                break;
            }
            }
            
    scanf("%d",&key);
            }
            while(
    chucnang!=0);
            return(
    0);
            }
     
  2. red_strike

    red_strike C O N T R A

    Tham gia ngày:
    13/10/04
    Bài viết:
    1,722
    Nơi ở:
    Onikage Clone :)
    Hix đoạn code dài quá nhác xem thiệt mà tui cũng chỉ mới xong phần căn bản nên bó giò :D
     
  3. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Bỏ dòng scanf("%d", &key) sau cùng của hàm main, chuyển dòng này sau case 6: printf("\nkhoa can tim:"); .

    Mà bài này bạn làm sai khá nhiều đấy.
     
  4. tran_anh1987

    tran_anh1987 Donkey Kong

    Tham gia ngày:
    15/5/04
    Bài viết:
    387
    Nơi ở:
    City Of Auch
    xin hỏi bác đang xài cái gì để viết vậy
    như thế thì mới biết là lỗi của bác ở đâu chứ nếu không thì bó tay khi thấy cả đoạn code này của bác
     
  5. Hoang_Nguyen

    Hoang_Nguyen Youtube Master Race

    Tham gia ngày:
    1/6/06
    Bài viết:
    90
    em dùng C thôi mà.bài này ở nhà máy em chạy ngon làm j có lỗi j đâu.hay bác thử chạy trên C++ xem.vì bài này nhờ ông thầy giáo sửa hộ cái lỗi lặp đó ông ý ko sửa cho.thế có đen ko

    cho em hỏi lại về cái bài viết của em ở trên.sao nhấn lệnh số 6 mà nó ko tìm kiếm đc mà chỉ hiện ra là ko tìm thấy. bác nào chỉ dùm em cái sai ở phần hàm search với.Thanks
     

Chia sẻ trang này