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

Đề tài: Bài tập C| Phân số | Tính toán trên phân số?

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

    Mặc định Bài tập C| Phân số | Tính toán trên phân số?

    nó chỉ chạy đc tổng 2 phân số thôi,ai sửa hộ t với,thanks
    Code:
    /*nhap hai phan so,viet cac ham tim ucln,bcnn,tim tong,hieu,tich,thuong cua 2 pso do
      in kq dang toi gian*/
    
    #include<stdio.h>
    #include<conio.h>
    void tgian(int m, int n);
    void tgian(int m, int n)
    {
    	int u,v;
    	u=m;
    	v=n;
    	while (u!=v)
    	{
    		if (u>v)
    		 u=u-v;
    		else
    		 v=v-u;
    	}
    	m=m/u;
    	n=n/u;
    }
    
    void main()
    {
    	int	a,b,c,d,p1,p2,p3,p4,q,q1;
    	printf("nhap tu so va mau so cua pso 1= ");
    	scanf("%d%d",&a,&b);
    	printf("nhap tu so va mau so cua pso 2= ");
    	scanf("%d%d",&c,&d);
    	tgian(a,b);
    	tgian(c,d);
    	p1=a*d+b*c;
    	p2=a*d-b*c;
    	p3=a*c;
    	p4=a*d;
    
    	q=b*d;q1=b*c;
    
    	tgian(p1,q);
    	printf("kqua: tong 2 phan so la= %d/%d\n",p1,q);
    	tgian(p2,q);
    	printf("kqua: hieu 2 phan so la= %d/%d\n",p2,q);
    	tgian(p3,q);
    	printf("kqua: tich 2 phan so la= %d/%d\n",p3,q);
    	tgian(p4,q);
    	printf("kqua: thuong 2 phan so la= %d/%d\n",p4,q1);
    	getch();
    }
    hàm thật là rắc rối,hjxhjx
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 09-03-2009 lúc 07:59 PM.

  2. #2
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Sửa bài lâu lắm, mình cho bạn cái code mà trước đây mình đã từng làm này:
    PHP Code:
    #include <stdio.h>
    #include <conio.h>
    int ucln(int aint b)
    {
        return 
    b==0aucln(b,a%b);
    }

    typedef struct {
        
    int tm;
    PHANSO;

    PHANSO toi_gian(PHANSO a)
    {
        
    PHANSO c;
        
    c.a.ucln(a.ta.m);
        
    c.a.ucln(a.ta.m);
        return 
    c;
    }

    PHANSO cong(PHANSO aPHANSO b)
    {
        
    PHANSO c;
        
    c.a.b.a.b.t;
        
    c.a.b.m;
        
    toi_gian(c);
        return 
    c;
    }

    PHANSO tru(PHANSO aPHANSO b)
    {
        
    PHANSO c;
        
    c.a.b.a.b.t;
        
    c.a.b.m;
        
    toi_gian(c);
        return 
    c;
    }

    PHANSO nhan(PHANSO aPHANSO b)
    {
        
    PHANSO c;
        
    c.a.b.t;
        
    c.a.b.m;
        
    toi_gian(c);
        return 
    c;
    }

    PHANSO chia(PHANSO aPHANSO b)
    {
        
    PHANSO c;
        
    c.a.b.m;
        
    c.a.b.t;
        
    toi_gian(c);
        return 
    c;
    }

    void print(PHANSO a)
    {
        if(
    a.t==0printf("0");
        else 
    printf("%d/%d"a.ta.m);
    }

    main()
    {
        
    PHANSO abc;
        do{
        
    printf("\nNhap phan so a : ");
        
    scanf("%d%d", &a.t, &a.m);
        }while(
    a.m==0);
        do{
        
    printf("\nNhap phan so b : ");
        
    scanf("%d%d", &b.t, &b.m);
        }while(
    b.t==0||b.m==0);
        
    printf("\nPhan so a toi gian : ");
        
    toi_gian(a);
        print(
    a);
        
    printf("\nphan so b toi gian : ");
        
    toi_gian(b);
        print(
    b);
        
    printf("\nTong cua hai phan so : ");
        
    cong(ab);
        print(
    c);
        
    printf("\nHieu cua hai phan so : ");
        
    tru(ab);
        print(
    c);
        
    printf("\nTich cua hai phan so : ");
        
    nhan(ab);
        print(
    c);
        
    printf("\nThuong cua hai phan so : ");
        
    chia(ab);
        print(
    c);
        
    getch();


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

    Trích dẫn Nguyên bản được gửi bởi con_gai_xu_nghe Xem bài viết
    nó chỉ chạy đc tổng 2 phân số thôi,ai sửa hộ t với,thanks
    Code:
    /*nhap hai phan so,viet cac ham tim ucln,bcnn,tim tong,hieu,tich,thuong cua 2 pso do
      in kq dang toi gian*/
    
    #include<stdio.h>
    #include<conio.h>
    void tgian(int m, int n);
    void tgian(int m, int n)
    {
    	int u,v;
    	u=m;
    	v=n;
    	while (u!=v)
    	{
    		if (u>v)
    		 u=u-v;
    		else
    		 v=v-u;
    	}
    	m=m/u;
    	n=n/u;
    }
    
    void main()
    {
    	int	a,b,c,d,p1,p2,p3,p4,q,q1;
    	printf("nhap tu so va mau so cua pso 1= ");
    	scanf("%d%d",&a,&b);
    	printf("nhap tu so va mau so cua pso 2= ");
    	scanf("%d%d",&c,&d);
    	tgian(a,b);
    	tgian(c,d);
    	p1=a*d+b*c;
    	p2=a*d-b*c;
    	p3=a*c;
    	p4=a*d;
    
    	q=b*d;q1=b*c;
    
    	tgian(p1,q);
    	printf("kqua: tong 2 phan so la= %d/%d\n",p1,q);
    	tgian(p2,q);
    	printf("kqua: hieu 2 phan so la= %d/%d\n",p2,q);
    	tgian(p3,q);
    	printf("kqua: tich 2 phan so la= %d/%d\n",p3,q);
    	tgian(p4,q);
    	printf("kqua: thuong 2 phan so la= %d/%d\n",p4,q1);
    	getch();
    }
    phân tích những chỗ sai nè :

    1. void tgian(int m, int n); << cái này của bạn ko có ý nghĩa gì cả vì : chạy xong thì m và n vẫn thế . đây là tham số chứ ko phải tham biến
    (thêm điều nữa code này hình như chạy sai nên khi run mới treo máy )

    2. ý tưởng sai: giả sử code đúng theo ý tưởng bạn thì :

    PHP Code:
    //    tgian(p1,q);
        
    printf("kqua: tong 2 phan so la= %d/%d\n",p1,q); 
    giả sử đúng như ý bạn thì qua cái tối giản p1 và q đi thì q đã thay đổi rồi, ko còn giá trị ban đầu nữa

    vậy sau bước này q ko còn là b*d vậy thì làm sao lại có kết luận là
    PHP Code:
    printf("kqua: hieu 2 phan so la= %d/%d\n",p2,q
    bạn hiểu chứ lúc này q ko còn là b*d nữa thì làm sao hiệu 2 số là p2/q được.....

    ý tưởng sai
    code sai

    tái bút : nếu ko chắc chắn về cách của mình thì cứ làm theo cách đơn giản nhất, ví dụ như cái cách tìm ucln để tối giản vậy, nếu ko biết thì cứ làm thế này, tuy hơi noob nhưng chắc chắn đúng :

    PHP Code:
    void tgian(int &mint &n)
    {
        
    int i,u;
        for (
    i=1;i<=m;i++)
            if (
    m%i==0&&n%i==0u=i;
        
    m=m/u;
        
    n=n/u;


    tuy nhiên chú thích rõ ràng là ý tưởng của bạn có chỗ sai rồi



    có thể sửa như thế này ko sai nè :


    PHP Code:
    /*nhap hai phan so,viet cac ham tim ucln,bcnn,tim tong,hieu,tich,thuong cua 2 pso do
      in kq dang toi gian*/

    #include<stdio.h>
    #include<conio.h>
    #include <math.h>




    void tgian(int mint n)
    {
        
    int i,u=1;
        for (
    i=1;i<=m;i++)
            if (
    m%i==0&&n%i==0u=i;
        
    m=m/u;
        
    n=n/u;
        
    printf("%d/%d",m,n);
    }


    void main()
    {
        
    clrscr();
        
    int    a,b,c,d,p1,p2,p3,p4,q,q1;
        
    printf("nhap tu so va mau so cua pso 1= ");
        
    scanf("%d%d",&a,&b);
        
    printf("nhap tu so va mau so cua pso 2= ");
        
    scanf("%d%d",&c,&d);
        
    p1=a*d+b*c;
        
    p2=abs(a*d-b*c);
        
    p3=a*c;
        
    p4=a*d;

        
    q=b*d;q1=b*c;

        
    printf("kqua: tong 2 phan so la= ");
        
    tgian(p1,q);

        
    printf("\nkqua: hieu 2 phan so la=");
        
    tgian(p2,q);


        
    printf("\nkqua: tich 2 phan so la= ");
        
    tgian(p3,q);



        
    printf("\nkqua: thuong 2 phan so la= ");
        
    tgian(p4,q);


        
    getch();


    chúc bạn thành công.....
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

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

    bài của trubavuong hay thật. Mặc dù 1 số chỗ chưa hiểu lắm vì chưa học tới
    Code:
    typedef struct {
        int t, m;
    } PHANSO;
    đoạn này như là khai báo 1 bản ghi như trong pascal phải không ?. Xin hỏi làm thế nào để post bài lên có màu dễ đọc như vậy ???

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    đoạn này như là khai báo 1 bản ghi như trong pascal phải không ?. Xin hỏi làm thế nào để post bài lên có màu dễ đọc như vậy ???
    struct cũng giống như là record trong pascal thôi. Chắc chưa học tới rồi, nhưng cứ học dần đi, cứ đi theo chương trình không phải là hay đâu.
    còn để highlight code đọc tại đây

  6. #6
    Ngày gia nhập
    02 2009
    Bài viết
    2

    Mặc định Bài tập C| Phân số | Tính toán trên phân số?

    thanks a lot!

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

  1. Lập trình C++ lỗi khi viết trên dev c, còn trên cfree chạy bình thường
    Gửi bởi truongvantri trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 26-10-2013, 03:34 PM
  2. Trả lời: 30
    Bài viết cuối: 15-02-2012, 07:03 PM
  3. Lập trình Socket trên C++ có thể giao tiếp chương trình Java trên Server được ko các
    Gửi bởi jacobkruse trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 18-11-2010, 11:10 PM
  4. Source code build trên Ubuntu có chạy được Trên Linux Kernel không ?
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 0
    Bài viết cuối: 03-11-2010, 09:22 AM
  5. Lưu dữ liệu để trống trên một cell của datagirdview trên csdl Access như thế nào?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 27-05-2009, 04:21 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