Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 17 kết quả

Đề tài: Lỗi trong lập trình C, lỗi gì mà kì lạ thật?

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Mặc định Lỗi trong lập trình C, lỗi gì mà kì lạ thật?

    Mình có làm một bài tập nhưng mà khi chạy chương trình thì nó không báo cái lỗi gì cả nhưng mà nó cũng không hiện kết quả mà nó out ra luôn màn hình khi chưa chạy là như thế nào vậy mình không thể hiểu được thế mới lạ chứ ai biết nói cho mình biết với

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

    Có lẽ bạn đã nhấn F5 thay vì Ctrl-F5. Thử nhấn Ctrl-F5 xem.

  3. #3
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    Mình bị rồi. Lỗi này thường do thuật toán sai, dù có chạy nhập xong thì nó out luôn, dù ở cuối có câu lệnh xuất ra một dòng xin chao và getch(). Bạn thử kiểm tra lại thuật toán xem.
    @Đ.Khánh: Đừng có nói em chưa biết sữ dụng TBD đấy.
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 05-04-2009 lúc 02:20 PM.

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Không mình bấm Crt+F5 mà nó như thế mình không chắc là thuật toán có đúng không nhưng mà mình phải chắc nó đúng tới 95 % nhưng mà nó chạy rồi out luôn không hiểu là như thế nào
    đây là code bạn thử xem nó có đúng không và sửa hộ mình cái
    Code:
    //CHUONG TRINH CHUYEN BIEU THUC TRUNG TO THANH HAU TO & TINH KET QUA BIEU THUC HAU TO BY KHANH
    # include <iostream.h>
    # include <conio.h>
    # include <string.h>
    
            // Bien toan cuc
            const int SIZE=100;
            char chuoi_trungto[SIZE]={'5','+','(','(','1','+','2',')','*','4',')','+','3'};
            char chuoi_hauto[SIZE]="";
            char *p=chuoi_hauto;
            //Lop stack
            class stack
            {
                    //Thuoc tinh
                    char stack_data[SIZE];
                    int stack_ptr;
                    int stack_size;
                    //Phuong thuc
                    public:
                        //Khoi tao co tham so
                        stack(int);
                        //Khoi tao khong tham so
                        stack();
                        
                        //Ham push du lieu char
                        int        push(char);
                        //Ham push du lieu int
                        int        push(int);
                        //Ham pop du lieu char
                        int        pop(char *);
                        //Ham pop du lieu int
                        int        pop(int *);
                        //Ham xuly
                        void xuly();
                        void xuly(char,int);
    
                        
                        
            };
                
            
            //Khoi tao
            stack::stack(int size)
            {
                    stack_ptr=-1;
                    stack_size=size;
                    
            }
    
    
    
            stack::stack()
            {
                    stack_ptr=-1;
                    stack_size=SIZE;
                    
    
            }
            //Ham push
            int stack::push (char data)
            {
                
                if (stack_ptr>=(stack_size-1))
                {
                    return 0;
                }
                else
                {
                    stack_data[++stack_ptr]=data;
                    return 1;
                }
            }
    
            int stack::push (int data)
            {
                
                if (stack_ptr>=(stack_size-1))
                {
                    return 0;
                }
                else
                {
                        stack_data[++stack_ptr]=data;
                        return 1;
                }
            }
            //Ham pop
            int stack::pop(char *data)
            {
                if (stack_ptr==-1)    
                {
                    return 0;
                }
                else
                {
                    *data=stack_data[stack_ptr--];
                    return 1;
                }
            }
    
            int stack::pop(int *data)
            {
                if (stack_ptr==-1)    
                {
                    return 0;
                }
                else
                {
                    *data=stack_data[stack_ptr--];
                    return 1;
                }
            }
            //Ham xu ly
            void stack::xuly()
            {
                char ch2;
                while (pop(&ch2))
                {
                    if (ch2=='(')
                        break;
                    else
                        *p++=ch2;
                
                }
            }
    
            void stack::xuly(char ch, int ut1)
            {
                int ut2;
                char ch2;
                while (pop(&ch2))
                {
                    if (ch2=='(')
                    {
                        push(ch2);
                        break;
                    }
                    else
                    {
                        if ((ch2=='+')||(ch2=='-'))
                            ut2=1;
                        else
                            ut2=2;
                        if (ut2<ut1)
                        {
                            push(ch2);
                            break;
                        }
                        else
                        {
                            *p++=ch2;
                            break;
                        }        
                    }
                }
                push(ch);    
            }
    
    
    //Ham chinh
    int main(int argc, char* argv[])
    {    
        char ch;
        int index;
        
        //Qua trinh chuyen trung to sang hau to
        
        int len_trungto=(int)strlen(chuoi_trungto);
        stack pst(len_trungto-1);    
        while (*p++);
        p--;    
        for (index=0;index<len_trungto;index++)
        {
            ch=chuoi_trungto[index];
            switch (ch)
            {
                case '+' :
                case '-' :
                    pst.xuly(ch,1);
                    break;
                case '*' :
                case '/' :
                    pst.xuly(ch,2);
                    break;
                case '(' :
                    pst.push(ch);
                    break;
                case ')' :
                    pst.xuly();
                    break;
                default :
                    *p++=ch;
            }
        }
        while(pst.pop(&ch))
        {
            *p++=ch;
        }
    
        //Qua trinh tinh gia tri cua chuoi hau to
        int number1,number2,kq;
        int len_hauto=(int)strlen(chuoi_hauto);
        stack result(len_hauto);
        while (*p++);
        p--;    
        for (index=0;index<len_hauto;index++)
        {
            ch=chuoi_hauto[index];
            switch (ch)
            {
                case '0' :            
                case '1' :
                case '2' :            
                case '3' :
                case '4' :
                case '5' :            
                case '6' :            
                case '7' :
                case '8' :        
                case '9' :
                    
                    result.push((int)(ch-'0'));
                    break;
                    
                case '+' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1+number2);
                    break;
                    
                case '-' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1-number2);
                    break;
                    
                case '*' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1*number2);
                    break;    
    
                case '/' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1/number2);
                    break;            
                                
            }
        }
        
        result.pop(&kq); 
        cout <<"BIEU THUC TRUNG TO:\n"<<chuoi_trungto <<"\n" ;
        cout <<"BIEU THUC SAU KHI CHUYEN :\n" <<chuoi_hauto <<"\n" ;
        cout <<"GIA TRI CUA BIEU THUC HAU TO=" <<kq <<"\n";
        cout <<"END"<<"\n";
        return 0;
    }

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi whenmencry Xem bài viết
    Không mình bấm Crt+F5 mà nó như thế mình không chắc là thuật toán có đúng không nhưng mà mình phải chắc nó đúng tới 95 % nhưng mà nó chạy rồi out luôn không hiểu là như thế nào
    đây là code bạn thử xem nó có đúng không và sửa hộ mình cái
    Code:
    //CHUONG TRINH CHUYEN BIEU THUC TRUNG TO THANH HAU TO & TINH KET QUA BIEU THUC HAU TO BY KHANH
    # include <iostream.h>
    # include <conio.h>
    # include <string.h>
    
            // Bien toan cuc
            const int SIZE=100;
            char chuoi_trungto[SIZE]={'5','+','(','(','1','+','2',')','*','4',')','+','3'};
            char chuoi_hauto[SIZE]="";
            char *p=chuoi_hauto;
            //Lop stack
            class stack
            {
                    //Thuoc tinh
                    char stack_data[SIZE];
                    int stack_ptr;
                    int stack_size;
                    //Phuong thuc
                    public:
                        //Khoi tao co tham so
                        stack(int);
                        //Khoi tao khong tham so
                        stack();
                        
                        //Ham push du lieu char
                        int        push(char);
                        //Ham push du lieu int
                        int        push(int);
                        //Ham pop du lieu char
                        int        pop(char *);
                        //Ham pop du lieu int
                        int        pop(int *);
                        //Ham xuly
                        void xuly();
                        void xuly(char,int);
    
                        
                        
            };
                
            
            //Khoi tao
            stack::stack(int size)
            {
                    stack_ptr=-1;
                    stack_size=size;
                    
            }
    
    
    
            stack::stack()
            {
                    stack_ptr=-1;
                    stack_size=SIZE;
                    
    
            }
            //Ham push
            int stack::push (char data)
            {
                
                if (stack_ptr>=(stack_size-1))
                {
                    return 0;
                }
                else
                {
                    stack_data[++stack_ptr]=data;
                    return 1;
                }
            }
    
            int stack::push (int data)
            {
                
                if (stack_ptr>=(stack_size-1))
                {
                    return 0;
                }
                else
                {
                        stack_data[++stack_ptr]=data;
                        return 1;
                }
            }
            //Ham pop
            int stack::pop(char *data)
            {
                if (stack_ptr==-1)    
                {
                    return 0;
                }
                else
                {
                    *data=stack_data[stack_ptr--];
                    return 1;
                }
            }
    
            int stack::pop(int *data)
            {
                if (stack_ptr==-1)    
                {
                    return 0;
                }
                else
                {
                    *data=stack_data[stack_ptr--];
                    return 1;
                }
            }
            //Ham xu ly
            void stack::xuly()
            {
                char ch2;
                while (pop(&ch2))
                {
                    if (ch2=='(')
                        break;
                    else
                        *p++=ch2;
                
                }
            }
    
            void stack::xuly(char ch, int ut1)
            {
                int ut2;
                char ch2;
                while (pop(&ch2))
                {
                    if (ch2=='(')
                    {
                        push(ch2);
                        break;
                    }
                    else
                    {
                        if ((ch2=='+')||(ch2=='-'))
                            ut2=1;
                        else
                            ut2=2;
                        if (ut2<ut1)
                        {
                            push(ch2);
                            break;
                        }
                        else
                        {
                            *p++=ch2;
                            break;
                        }        
                    }
                }
                push(ch);    
            }
    
    
    //Ham chinh
    int main(int argc, char* argv[])
    {    
        char ch;
        int index;
        
        //Qua trinh chuyen trung to sang hau to
        
        int len_trungto=(int)strlen(chuoi_trungto);
        stack pst(len_trungto-1);    
        while (*p++);
        p--;    
        for (index=0;index<len_trungto;index++)
        {
            ch=chuoi_trungto[index];
            switch (ch)
            {
                case '+' :
                case '-' :
                    pst.xuly(ch,1);
                    break;
                case '*' :
                case '/' :
                    pst.xuly(ch,2);
                    break;
                case '(' :
                    pst.push(ch);
                    break;
                case ')' :
                    pst.xuly();
                    break;
                default :
                    *p++=ch;
            }
        }
        while(pst.pop(&ch))
        {
            *p++=ch;
        }
    
        //Qua trinh tinh gia tri cua chuoi hau to
        int number1,number2,kq;
        int len_hauto=(int)strlen(chuoi_hauto);
        stack result(len_hauto);
        while (*p++);
        p--;    
        for (index=0;index<len_hauto;index++)
        {
            ch=chuoi_hauto[index];
            switch (ch)
            {
                case '0' :            
                case '1' :
                case '2' :            
                case '3' :
                case '4' :
                case '5' :            
                case '6' :            
                case '7' :
                case '8' :        
                case '9' :
                    
                    result.push((int)(ch-'0'));
                    break;
                    
                case '+' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1+number2);
                    break;
                    
                case '-' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1-number2);
                    break;
                    
                case '*' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1*number2);
                    break;    
    
                case '/' :
                    result.pop(&number1);        
                    result.pop(&number2);                
                    result.push(number1/number2);
                    break;            
                                
            }
        }
        
        result.pop(&kq); 
        cout <<"BIEU THUC TRUNG TO:\n"<<chuoi_trungto <<"\n" ;
        cout <<"BIEU THUC SAU KHI CHUYEN :\n" <<chuoi_hauto <<"\n" ;
        cout <<"GIA TRI CUA BIEU THUC HAU TO=" <<kq <<"\n";
        cout <<"END"<<"\n";
        return 0;
    }
    không biết trung tố hậu tố là gì nhưng mà khi chạy thử thêm getch() vào cuối chương trình thì thấy bt, thêm 1 điều nữa là ấn ALT + F5 chứ ko phải là CTRL + F5
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

    Mặc định Lỗi trong lập trình C, lỗi gì mà kì lạ thật?

    Trích dẫn Nguyên bản được gửi bởi trungkien45 Xem bài viết
    Mình bị rồi. Lỗi này thường do thuật toán sai, dù có chạy nhập xong thì nó out luôn, dù ở cuối có câu lệnh xuất ra một dòng xin chao và getch(). Bạn thử kiểm tra lại thuật toán xem.
    @Đ.Khánh: Đừng có nói em chưa biết sữ dụng TBD đấy.
    Không hiểu bạn nói gì luôn ?!?!

  7. #7
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Anh ơi cho em hỏi là anh chạy trên chương trình gì được không ạ,em chạy thì nó cho mỗi cái dòng của một biểu thức trung tố và chuyển sang hậu tố và in ra kết quả của nó nhưng khi muốn nhập một biểu thức vào để đổi và tính toán thì nó out ra luôn không thể nhập được
    Đã được chỉnh sửa lần cuối bởi whenmencry : 05-04-2009 lúc 06:47 PM.

  8. #8
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    @Đ.Khánh: Xin lỗi bạn. mình từng bị cái lỗi thế này: Khi bấm Ctrl+F9 (dùng TC) mình nhập xong dữ liệu thì nó out luôn. Dù ở cuối cùng có code:
    Code:
    printf("\n\n xin chao");
    getch();
    và cuối cùng phát hiện trong code có chỗ bất hợp lí do giải thuật để lại.
    Đã được chỉnh sửa lần cuối bởi trungkien45 : 05-04-2009 lúc 10:09 PM.

  9. #9
    Ngày gia nhập
    03 2009
    Bài viết
    8

    Thế bạn có thể chỉ giúp mình sự không hợp lí của thuật toán này ở chỗ nào không

  10. #10
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    667

    @whenmencry: Xin lỗi bạn, Mình mới học C, mình cũng chưa biết trung tố hậu tố là gì để giúp bạn. Xin lỗi nha. Sao bạn không tìm trên mạng.

Các đề tài tương tự

  1. Làm Chữ chạy trên form C# như thẻ <marquee> trong HTML thế nào?
    Gửi bởi magnet241 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 05-04-2012, 11:55 AM
  2. In thẻ,hóa đơn từ các textbox,combobox,datetimepicker trong form C# như thế nào?
    Gửi bởi snoit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-04-2012, 03:13 PM
  3. Game Tạo Form trong suốt trong C# tựa game Thần Võ như thế nào?
    Gửi bởi tocvang_pro trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 21-09-2011, 04:21 PM
  4. Sử lí như thế nào khi nhập rất chậm trong trình xoạn thảo trong devC
    Gửi bởi toansvcn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 23-05-2011, 10:04 PM
  5. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM

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