Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 30 kết quả

Đề tài: Phần mềm hỗ trợ học Phân số

  1. #1
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Phần mềm hỗ trợ học Phân số

    Đây là đồ án mình đã làm lâu rồi, trong bộ môn Lập trình hướng đối tượng. Hôm nay ngồi xem lại thấy còn nhiều cái chưa hay và cũng muốn đưa ra để anh chị em cùng thảo luận phát triển thêm.
    Cơ bản phần mềm này gồm 2 chức năng:
    Thực hiện từng bước cách tính toán 2 phân số.
    Thực hiện từng bước cách tính 1 biểu thức phân số.
    Để tiện cho việc khởi đầu, mình xin đưa ra thư viện fraction (chỉ có prototype) mà mình đã làm để hỗ trợ cho phần mềm này, các bạn xem rồi bổ sung thêm các phương thức nhé và mở rộng thêm nhé.
    Ý định của mình là mong chúng ta hợp sức thử viết 1 phần mềm đơn giản xem thế nào, nếu có thể làm được thông qua forum này thì chuyện xây dựng 1 nhóm thiết kế phần mềm là ko xa lắm.
    Lớp fraction (cơ bản):
    Code:
    #ifndef fraction_h
    #define fraction_h
    #include <iostream>
    using namespace std;
    class fraction
    {
          private:
                  int ts,ms;
          public:
                  fraction(int t = 0,int m = 1){ts = t; ms = m;}; 
                  friend ostream& operator<<(ostream&,fraction&);
                  friend istream& operator>>(istream&,fraction&);
                  fraction operator~(); //reduce
                  fraction operator+(); //standard
                  fraction operator-(); //negative
                  fraction operator*(); //reciprocal
                  fraction operator+(fraction);
                  fraction operator-(fraction);
                  fraction operator*(fraction);
                  fraction operator/(fraction);            
    };
    #endif
    Thực sự phải cảm ơn anh huynguyen rất nhiều! (Posted by Dreaminess)

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    lần trước anh bảo không có hứng lập nhóm cơ mà, sao giờ đổi nhanh vậy , em nghĩ chúng ta nên làm phần mềm vẽ đồ thị hàm số 2D và 3D thì hơn (chúng ta trừ em).
    Em nhận xét cái trên, thiếu chuyển số thập phân sang phân số
    Ví dụ: 0.232 thành ... thuật giải theo em được biết là biến 0.232 =232/1000 rồi giản ước đi
    còn nữa, với số thập phân vô hạn không tuần hoàn 0.2345454545... tức là 0.23(45) đó, quên mất công thức rồi, cái này là cái công thức cấp số nhân tới vô hạn với công bội <1 hay sao ấy, quên mất rồi .
    Còn một điều nữa, để như cái 570ES em đang dùng, soft này phải chuyển được string :"1+1" thành biểu thức 1+1, không hề đơn giản đâu
    Đã được chỉnh sửa lần cuối bởi tienlbhoc : 14-10-2007 lúc 06:49 PM.
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Ý định của mình là mong chúng ta hợp sức thử viết 1 phần mềm đơn giản xem thế nào, nếu có thể làm được thông qua forum này thì chuyện xây dựng 1 nhóm thiết kế phần mềm là ko xa lắm.
    Đọc rõ những gì anh Huy nói nhé tienlbhoc. Chúng ta chỉ thử làm việc theo nhóm , coi như là bước chuẩn bị để nhảy xa hơn thôi mà.

    + Không hiểu anh H định viết trong đâu nhỉ MFC hay console ?
    + Em chưa rõ lắm chức năng các hàm này:
    fraction operator~(); //reduce
    fraction operator+(); //standard
    fraction operator-(); //negative
    fraction operator*(); //reciprocal
    Theo em là nên có 1 hàm rút gọn phân số. Tiếp nữa là các hàm hiển thị không chỉ là đưa kết quả ra màn hình mà phải đưa được hướng dẫn cách giải ra màn hình.
    vd:
    2/3 + 10/5 = (2*5 + 4*3)/3*5 = 22/15 :

  4. #4
    Ngày gia nhập
    07 2007
    Nơi ở
    Lang thang không nơi nương tựa
    Bài viết
    18

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Đọc rõ những gì anh Huy nói nhé tienlbhoc. Chúng ta chỉ thử làm việc theo nhóm , coi như là bước chuẩn bị để nhảy xa hơn thôi mà.

    + Không hiểu anh H định viết trong đâu nhỉ MFC hay console ?
    + Em chưa rõ lắm chức năng các hàm này:


    Theo em là nên có 1 hàm rút gọn phân số. Tiếp nữa là các hàm hiển thị không chỉ là đưa kết quả ra màn hình mà phải đưa được hướng dẫn cách giải ra màn hình.
    vd:
    2/3 + 10/5 = (2*5 + 4*3)/3*5 = 22/15 :
    Chắc chắn là class này phải viết trong console rồi .
    Còn việc in ra 2/3 + 10/5 = (2*5 + 4*3)/3*5 = 22/15 thì không khó mà in thế này nhìn lèm nhèm , không được đẹp .

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Không hiểu anh H định viết trong đâu nhỉ MFC hay console ?
    Anh định viết trên Windows Form (dùng MFC hoặc ko dùng cũng được).
    Em chưa rõ lắm chức năng các hàm này:
    4 chức năng: rút gọn, chuẩn hoá, lấy số đối và nghịch đảo, thay vì phải viết hàm thì anh dùng chồng toán tử cho tiện lợi.
    em nghĩ chúng ta nên làm phần mềm vẽ đồ thị hàm số 2D và 3D thì hơn (chúng ta trừ em)
    Đưa ra 1 ý tưởng mà chính mình ko làm được thì em nghĩ có ai làm chung với em ko?
    Em nhận xét cái trên, thiếu chuyển số thập phân sang phân số
    Ví dụ: 0.232 thành ... thuật giải theo em được biết là biến 0.232 =232/1000 rồi giản ước đi
    còn nữa, với số thập phân vô hạn không tuần hoàn 0.2345454545... tức là 0.23(45) đó, quên mất công thức rồi, cái này là cái công thức cấp số nhân tới vô hạn với công bội <1 hay sao ấy, quên mất rồi
    Chưa lo được cái gốc, đã tính đến chuyện ngồi ở trên ngọn cây rồi.
    soft này phải chuyển được string :"1+1" thành biểu thức 1+1, không hề đơn giản đâu
    Cái này ko khó, chỉ cần biết dùng thư viện string thì mọi việc đều giải quyết dễ dàng.

    Yêu cầu trong tuần này: Các bạn hãy viết chi tiết các phương thức sử dụng trong class này (theo như những gì mình đã gợi ý hoặc thêm các phương thức mà bạn cho là cần thiết), đừng quan tâm đến chuyện xuất nó ra thế nào. Các bạn hoàn thiện chức năng xử lý trước đã, chuyện in ra = cách nào thuộc về chức năng giao diện.
    Đừng vì có người post rồi nên mình ko post nhé, ai viết được thì cũng phải post lên nếu các bạn muốn tham gia vào hoạt động nhóm của forum.

  6. #6
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mặc định Phần mềm hỗ trợ học Phân số

    OK, để em làm thử hai chức năng cơ bản mà anh huynguyen đã đưa ra, nhưng em không viết được bằng C đâu, chỉ đóng góp cách làm thôi.

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Em có thể viết = J#, C#, C++, VB
    Nếu các bạn dùng bộ dotNET thì chuyện ngôn ngữ ko còn là vấn đề.

  8. #8
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Mặc định buoc 1

    Chương trình viết bằng pascal thực hiện:
    - nhập 2 phân số và chuẩn hoá chúng ( rút gọn, đưa dấu âm lên tử)
    - tính tổng, hiệu, tích, thương, nghịch đảo của chúng và in ra màn hình dạng phân số đã chuẩn hoá.

    Code:
    {Chu y: Moi ham deu tao ra mot bien dong moi lam ket qua tra ve}
    {dat tham so xoa bang true de xoa tham so gui vao }
    uses crt;
    type phanso= record
                       tu, mau: longint;
                 end;
         pphanso=^phanso;
    function toigian(p1: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
        a, b, t, uoc: longint;
      begin
    
        {Thuat toan OClit tim uoc so chung nho nhat}
        a:= abs(p1^.tu);
        b:= abs(p1^.mau);
        repeat
          if a< b then
            begin
              t:= a; a:= b; b:= t;
            end;
            a:= a-b;
        until a=0;
        uoc:= b;
        new(p);
        p^.tu:= p1^.tu div uoc;
        p^.mau:= p1^.mau div uoc;
        {Toi gian ve dau, dat dau tru tren tu so}
        if p^.mau<0 then
          begin
            p^.tu:= -p^.tu;
            p^.mau:= -p^.mau;
          end;
        toigian:= p;
        if xoa then begin dispose(p1); end;
      end;
    function cong(p1, p2: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
      begin
        new(p);
        if p1^.mau= p2^.mau then
          begin
            p^.tu:= p1^.tu + p2^.tu;
            p^.mau:= p1^.mau;
          end
        else
          begin
            p^.tu:= p1^.tu* p2^.mau+p2^.tu*p1^.mau;
            p^.mau:= p1^.mau* p2^.mau;
          end;
        cong:= toigian(p, false);
        dispose(p);
        if xoa then begin dispose(p1); dispose(p2); end;
      end;
    function tru(p1, p2: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
      begin
        new(p);
        if p1^.mau= p2^.mau then
          begin
            p^.tu:= p1^.tu - p2^.tu;
            p^.mau:= p1^.mau;
          end
        else
          begin
            p^.tu:= p1^.tu* p2^.mau - p2^.tu*p1^.mau;
            p^.mau:= p1^.mau * p2^.mau;
          end;
        tru:= toigian(p, false);
        dispose(p);
        if xoa then begin dispose(p1); dispose(p2); end;
      end;
    
    function nhan(p1, p2: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
      begin
        new(p);
        p^.tu:= p1^.tu* p2^.tu;
        p^.mau:= p1^.mau * p2^.mau;
        nhan:= toigian(p, false);
        dispose(p);
        if xoa then begin dispose(p1); dispose(p2); end;
      end;
    function nghichdao(p1: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
      begin
        new(p);
        p^.tu:= p1^.mau;
        p^.mau:= p1^.tu;
        nghichdao:= p;
        if xoa then begin dispose(p1); end;
      end;
    function chia(p1, p2: pphanso; xoa: boolean): pphanso;
    var p: pphanso;
      begin
        p:= nhan(p1, nghichdao(p2, false), false);
        chia:= p;
        if xoa then begin dispose(p1); dispose(p2); end;
      end;
    var p1, p2,p, pmark: pphanso;
        ans: char;
    begin
      Mark(pmark);
      repeat
      clrscr;
      new(p1); new(p2);
      write('Nhap tu so va mau so cho phan so 1 (2 3 nghia la 2/3): '); readln(p1^.tu, p1^.mau);
      write('Nhap tu so va mau so cho phan so 2 (2 3 nghia la 2/3): '); readln(p2^.tu, p2^.mau);
      p1:= toigian(p1,false); p2:= toigian(p2,false);
    
      writeln('Thuc hien phep tinh cong phan so 1 voi phan so 2: ');
      p:= cong(p1, p2, false);
      writeln(p1^.tu,' / ', p1^.mau, ' + ', p2^.tu,' / ', p2^.mau,'    =   ', p^.tu, ' / ', p^.mau );
    
      writeln('Thuc hien phep tinh tru phan so 1 voi phan so 2: ');
      p:= tru(p1, p2, false);
      writeln(p1^.tu,' / ', p1^.mau, ' - ', p2^.tu,' / ', p2^.mau,'    =   ', p^.tu, ' / ', p^.mau );
    
      writeln('Thuc hien phep tinh nhan phan so 1 voi phan so 2: ');
      p:= nhan(p1, p2, false);
      writeln(p1^.tu,' / ', p1^.mau, ' * ', p2^.tu,' / ', p2^.mau,'    =   ', p^.tu, ' / ', p^.mau );
    
      writeln('Thuc hien phep tinh nghich dao phan so 1 : ');
      p:= nghichdao(p1, false);
      writeln(p1^.tu,' / ', p1^.mau, ' ^ (-1)','    =   ', p^.tu, ' / ', p^.mau );
    
      writeln('Thuc hien phep tinh nhan phan so 1 voi phan so 2: ');
      p:= chia(p1, p2, false);
      writeln('(',p1^.tu,' / ', p1^.mau,')', ' / ', '(',p2^.tu,' / ', p2^.mau,')','    =   ', p^.tu, ' / ', p^.mau );
    
      write('Ban co muon thuc hien phep tinh khac khong (c/k): '); ans:= readkey;
      until upcase(ans)= 'K';
    
      release(pmark);
    end.
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi hailoc12 : 16-10-2007 lúc 01:24 PM.

  9. #9
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ko cần phải đính kèm file đâu hailoc, em post code lên để mọi người xem là được rồi. Dùng Pascal thì sao OOP được đây :(

  10. #10
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    bước phát triển tiếp theo sẽ là tính được biểu thức chứa phân số

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

  1. Những điều cần để xây dựng 1 phần mềm onl ?
    Gửi bởi wintervt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 30-12-2011, 09:33 PM
  2. Công cụ lập trình C phần mềm C-Free 5 full. Bạn nào có thể cho mình được không
    Gửi bởi git_kid trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 3
    Bài viết cuối: 25-08-2010, 11:19 PM
  3. Những yếu tố ảnh hưởng tới tính tiến hóa của phần mềm
    Gửi bởi piclove trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 17-03-2010, 12:23 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