Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sửa lỗi giúp em bài c++

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    4

    Mặc định Sửa lỗi giúp em bài c++

    Bài của em có yêu cầu là random phép toán +,-,*,/, và random 2 số a,b, nếu là / thì a%b=0, nếu là - thì a-b>=0! sau đó bắt mình nhập đáp án, nếu đúng thì đưa ra mấy câu khích lệ, sai thì bảo nhập lại,nhập sai 3 lần thì cout nhờ cô phụ đạo! nhưng em chạy thì stopped working hoài,lúc thì vưa f9 xong là stopped, còn lại thì đều khi cout cái khích lệ "Tot!" là stopped!,mặc dù em xem kỹ hàm đưa ra mấy câu khích lệ không có lỗi gì cả, mọi ng giúp em với
    Code:
    //11020248
    //06/03/2012
    //Tao ngau nhien cau hoi voi cac phep toan khac nhau
    #include <iostream>
    #include <ctime>
    using namespace std;
    void Ngaunhien(int& a,int&b);
    void Kqsai();
    void Kqdung();
    void Traloi(int a,int b,int& sai,char t,double dapan);
    void Lap();
    void Pheptoan(int& a,int& b,double& dapan,char& t);
    int main(){
        int a,b;
        Lap();
        cin.ignore(80,'\n');
        cin.get();
        return 0;
    }
    void Ngaunhien(int& a,int& b){
        srand(time(0));
        a=rand()%99+1;
        b=rand()%99+1;
    } 
    void Pheptoan(int& a,int& b,double& dapan,char& t){
        int j;
        srand(time(0));
        j=rand()%4+1; // cong la 1,tru la 2,nhan la 3,chia la 4
        switch(j){
            case 1:
                t='+';
                Ngaunhien(a,b);
                dapan=a+b;
                break;
            case 2:
                t='-';
                a=rand()%99+1;
                b=rand()%a+1;            
                dapan=a-b;
                break;
            case 3:
                t='*';
                Ngaunhien(a,b);
                dapan=a*b;
                break;
            case 4:
                t='/';
                do{
                    a=rand()%99+1;
                    b=rand()%(a/2)+1;
                }while((double)a/b!=0);
                dapan=(double) a/b;
                break;
        }
                
    }   
    void Kqdung(){
        int j;
        srand(time(0));
        j=rand()%4+1;;
        switch(j){
            
            case 3:
                cout<<"Tiep tuc giai dung nhe\n";
                break;
            case 2:
                cout<<"Dap so chuan day\n";
                break;
            case 1:
                cout<<"Dung day \n";
                break;
            case 4:
                cout<<"Tot!\n";
                break;
            }
    }
    void Kqsai(){
        int i;
        srand(time(0));
        i=rand()%4+1;
        switch(i){
            case 1:
                cout<<"Sai roi,moi ban tra loi lai\n";
                break;
            case 2:
                cout<<"Dap an khac co,moi ban tra loi lai\n";
                break;
            case 3:
                cout<<"Ban oi dung bo cuoc\n";
                break;
            default:
                cout<<"Tiep tuc co gang ban nhe\n";
                break;
            }
    }       
    void Traloi(int a,int b,int& sai,char t,double dapan){
        double traloi;
        cout<<a<<t<<b<<"= ";
        cin>>traloi;
        while(traloi!=dapan){
            sai++;
            Kqsai();
            cin>>traloi;
            if(sai==3)      //neu tra loi sai 3 lan thi dung/ sai+dung luon nho hon 70%
                break;        
        }
        Kqdung();
    } 
    void Lap(){
        int a,b,sai=0;
        char t;
        double dapan;
        for(int i=1;i<=10;i++){
            Pheptoan(a,b,dapan,t);
            Traloi(a,b,sai,t,dapan);
            if(sai==3){
            cout<<"Ban can nho co phu dao them";
            break;
            }
        }
    }

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    4

    Code:
    void Pheptoan(int& a,int& b,double& dapan,char& t){
        int j;
        srand(time(0));
        j=rand()%4+1
    nếu em thay j=4 thì luôn luôn stopped!

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    4

    Xin lỗi mọi ng nhé, em biết lỗi sai rồi ^^

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Ôi. Bạn viết hàm chán quá.
    Tính đóng và sự giao tiếp giữa các hàm quá chán.

    Viết lại chương trình cho nó logic:

    Viết lại hàm PhepToan thành như sau
    C++ Code:
    1. int PhepToan() // Cái này gọi là CauDo thì hay hơn
    2. {//Không có bất kỳ tham số nào.
    3.       Thực hiện sinh ngẫu nhiên;
    4.       Thực hiện tinh toán biểu thức;
    5.       In dòng biểu thức ra cho người ta biết câu đố ;
    6.       //Không cần phải giao tiếp với các tham số a,b,t làm gì. Vì cái này có biết cũng chẳng để làm gì.
    7.       //Bản chất là để xem người dùng có nhập vào số == với đáp án hay ko.
    8.       // Còn các toán hạng sinh ra không cần lưu trữ, chỉ cần in ra cho họ biết câu đố là gì.
    9.      return kết quả của phép toán vừa sinh ra;
    10.     // Kết quả là kiểu int bởi vì chỉ có phép chia là phép duy nhất biến 2 số int thành số thực.
    11.     // Nhưng giả thiết đề bài đã yêu cầu a%b==0 tức là phải là phép chia  hết. Mà chia hết thì luôn ra 1 số nguyên
    12. }
    Hàm TraLoi viết lại như sau
    C++ Code:
    1. int TraLoi(int dapan)
    2. {
    3.       Người dùng nhập vào câu trả lời;
    4.       So khớp câu trả lời với đáp án, sai thì động viên. đúng thì khen vân vân... rồi lặp lại gì gì đó;
    5.       return số lần trả lời sai; // 0 tức là đúng, 1-2-3 tức là 1-2-3 lần liên tiếp đều sai
    6. }

    Từ đó hàm Lap() viết lại như sau( ko biết là viết cái hàm này để làm gì, viết vào main luôn cho nó khỏe
    C++ Code:
    1. void Lap()
    2. {
    3.      for(int i=1;i<=10;i++){
    4.           int dapan=  PhepToan();
    5.           int traloisai = Traloi(dapan);
    6.           if(traloisai==3){
    7.              cout<<"Ban can nho co phu dao them";
    8.              break;
    9.           }
    10.     }
    11.      
    12. }
    Đã được chỉnh sửa lần cuối bởi clchicken : 09-03-2012 lúc 09:55 PM.
    Um Mani Padme Hum...!!

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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