Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: [BT]Tính toán trên phân số

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

    Red face [BT]Tính toán trên phân số

    Các anh giúp em giải bài c này nhé:
    Nhập vào 2 phân số. Tính phân số tối giản của phép tính cộng ,trừ,nhân,chia 2 phân số. em bị sai cái hàm tối giản phân số nên phép trừ tính ra bị sai.Xin các anh sửa hộ,đây là bài của em làm.

    Code:
    #include <stdio.h>
    #include <conio.h>
    
    typedef struct
    {
    	int tu;
    	int mau;
    }ps;
     void xuat(ps x,ps y);
    void nhap(ps &x,ps &y);
    ps congps(ps x,ps y);
    ps trups(ps x,ps y);
    ps nhanps(ps x,ps y);
    ps tgps(ps x);
    
    void main()
    {
    clrscr();
       ps x,y;
    
       nhap(x,y);
       xuat(x,y);
       printf ("\n tgps cong: %d/%d + %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(congps(x,y)));
    
       printf ("\n tgps tru:  %d/%d - %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(trups(x,y)));
    
       printf ("\n tgps nhan: %d/%d * %d/%d = %d/%d",x.tu,x.mau,y.tu,y.mau,tgps(nhanps(x,y)));
    
     getch();
    }
    void nhap(ps &x,ps &y)
    {
    	printf ("\n nhap tuva mau ps1: ");
    	scanf ("%d%d",&x.tu,&x.mau);
    	printf ("\n nhap tu va mau ps2: ");
    	scanf ("%d%d",&y.tu,&y.mau);
    }
    void xuat(ps x,ps y)
    {
    	printf ("\n ps1= %d/%d",x.tu,x.mau);
    	printf ("\n ps2= %d/%d",y.tu,y.mau);
    }
    ps congps(ps x,ps y)
    {
    	ps kq;
    	kq.tu=x.tu*y.mau+y.tu*x.mau;
    	kq.mau=x.mau*y.mau;
    	return kq;
    }
    ps trups(ps x,ps y)
    {
    	ps kq;
    	kq.tu=x.tu*y.mau-y.tu*x.mau;
    	kq.mau=x.mau*y.mau;
    
    	return kq;
    }
    ps nhanps(ps x,ps y)
    {
    	ps kq;
    	kq.tu=x.tu*y.tu;
    	kq.mau=x.mau*y.mau;
    	return kq;
    }
    ps tgps(ps x)
    {
    	ps y;
    	y=x;
    	while (x.tu!=x.mau)
    	{
    		if(x.tu>x.mau)
    		x.tu = x.tu-x.mau;
    		else
    		x.mau= x.mau-x.tu;
    	}
    
    	y.tu=y.tu/x.tu;
    	y.mau=y.mau/x.tu;
    
          return y;
    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    03 2007
    Bài viết
    179

    Bạn cứ tính bình thường sau khi ra kết quả thì gán KQ=rutgon(KQ);
    //hàm rutgon()
    int USCLN(int a,int b)
    {
    while (a!=0&& b!=0)
    if(a>b) a=a-b;
    else b=b-a;
    if(a==0) return b;
    else return a;
    }
    phanso rut_gon(phanso a)
    {
    phanso c;
    c.tu=a.tu/USCLN(a.tu,a.mau);
    c.mau=a.mau/USCLN(a.tu,a.mau);
    return c;
    }

  3. #3
    Ngày gia nhập
    03 2007
    Bài viết
    179

    Bạn nên chú ý điều kiên nhập, vì bạn để nhập đó người ta nhâp mẫu =0 thì sao.
    ///phải xét người ta người ta có nhập số int nữa không đó, bạn tự viết đi nhé
    Code:
    void nhap_phanso(phanso &a)
    {
    	printf("\nNhap tu so: ");
    	scanf("%d",&a.tu);
    	do
    	{
    	printf("\nNhap mau so: ");
    	scanf("%d",&a.mau);
    	if(a.mau==0)
    		{
    		textcolor(4);
    		cprintf("\nNhap lai mau so vi khong hop le:\n");
    		}
    	}
    	while(a.mau==0);
    }

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

    cám ơn bạn đã giúp
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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