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

Đề tài: Lập trình tính toán giữa các phân số trên C++. Giúp mình sửa lỗi?

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

    Smile Lập trình tính toán giữa các phân số trên C++. Giúp mình sửa lỗi?

    Mình code một bài về tính toán và rút gón phân số. Đây là code cùa mình:

    PHP Code:
    // Chuong trinh: Tinh toan giua cac phan so s = a + b
    // Lap trinh theo huong doi tuong C++

    #include<iostream.h>
    #include<stdlib.h>
    #include <string.h>
    class phanso
    {
        private:
          
    int tu,mau;
        public:
          
    void nhap();
          
    void in();
          
    void rutgon();
          
    int uscln(int a,int b);
          
    int kttu();
          
    int ktmau();
          
    friend  phanso operator+(phanso xphanso y);
          
    friend  phanso operator-(phanso xphanso y);
          
    friend  phanso operator*(phanso xphanso y);
          
    friend  phanso operator/(phanso xphanso y);
    };
    int main()
    {
        
    phanso a,b,c;
        
    a.nhap();
            
    b.nhap();
         
    //c = a*b;
         
    a-b
         
    c.rutgon();
        
    c.in();
    }
    void phanso::nhap()
    {
        
    char ps[50];
        
    int    stop 0;
        while(
    stop == 0)
        {
        
    char ts[25]="",ms[25]="";    
        
    cout<<"Moi ban nhap gia tri cua phan so: ";
        
    cin>>ps;
        
    cin.ignore();
        
    int i=0;
        while(
    ps[i]!='/'&& strlen(ps))
          {
            
    ts[i]=ps[i];
             
    i+=1;
            }
        
    int j=0;
        while( 
    strlen(ps))
            {
            
    i+=1;
            
    ms[j]=ps[i];
            
    j+=1;
          } 
        for (
    0strlen(ts); i++)
        if (
    ts[i] != '-' && (ts[i] < '0' || ts[i] > '9'))    // kiem tra cac ky tu cua xau chua tu so co phai la chu so ko
        
    {
          
    stop 0;
          
    cout<<"Ban can nhap lai phan so :"<<endl;
          break;
        }
        else 
    stop 1;
        
    tu  atoi(ts);
        for (
    0strlen(ts); i++)
        if (
    ms[i] != '-' && (ms[i] < '0' || ms[i] > '9'))    // kiem tra cac ky tu cua xau chua tu so co phai la chu so ko
        
    {
          
    stop 0;
          
    cout<<"Ban can nhap lai phan so :"<<endl;
          break;
        }  
        else 
    stop 1;
        
    mau atoi(ms);
        }
    }
    void phanso::in()
    {
        
    cout<<"Ket qua bang: "<<tu<<"/"<<mau;    
    }
    void phanso::rutgon()
    {
        
    int tg;
        
    tg=uscln(tu,mau);
        
    tu/=tg;
        
    mau/=tg;
    }
    int phanso::uscln(int a,int b)
    {
       
    a=abs(a); 
       
    b=abs(b);
       while(
    a!=b)
       if(
    a>ba=a-b
       else 
    b=b-a;
       return 
    a;
    }
    phanso operator+(phanso xphanso y)
    {
        
    phanso z;
        
    z.tu  x.tu*y.mau y.tu*x.mau;
        
    z.mau x.mau*y.mau;
        return 
    z;
    }
    phanso operator-(phanso xphanso y)
    {
         
    phanso z;
        
    z.tu  x.tu*y.mau y.tu*x.mau;
        
    z.mau x.mau*y.mau;
        return 
    z;
    }
    phanso operator/(phanso xphanso y)
    {
         
    phanso z;
        
    z.tu  x.tu*y.mau;
        
    z.mau x.mau*y.tu;
        return 
    z;
    }
    phanso operator*(phanso xphanso y)
    {
        
    phanso z;
        
    z.tu  x.tu*y.tu;
        
    z.mau x.mau*y.mau;
        return 
    z;

    Mình test đi test lại bài mình mà vẫn ko hiểu vì sao khi nhập giá trị :
    ví dụ:
    a = 4/5 và b = 4/5 => c = 0 ? Tức là cứ nhập bất cứ giá trị nào của a và b làm cho biểu thức c = a + b = 0. Thì chương trình dừng lại và ko chạy ? Hix ai biết chỉ dùm mình với !

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    my home ^^
    Bài viết
    61

    Mình cũg ko rành về cách vik của bạn nên đành post đoạn code của mình để bạn tham khảo vậy.
    Code:
    #include<iostream>
    #include<iomanip>
    #include<math.h>
    #include<conio.h>
    
    using namespace std;
    
    struct PS
    {
    	int a,b;
    };
    void Nhap(PS &p)
    {
    	while(1)
    	{
    		cout<<"_Nhap tu so : ";
    		cin>>p.a;
    		cout<<"_Nhap mau so : ";
    		cin>>p.b;
    		if(p.b!=0)
    			break;
    		else
    			cout<<"\nNhap mau so khac 0!!!!!!! ";
    		cout<<endl<<endl;
    	}
    
    }
    
    void Xuat(PS p)
    {
    	if(p.b==1)
    		cout<<p.a;
    	else
    		cout<<p.a<<" / "<<p.b;
    }
    
    int UCLN(int a, int b)
    {
    	 a = abs(a) ;
    	 b = abs(b) ;
    	int r=1;
    	while(r)
    	{
    		r=a%b;
    		a=b;
    		b=r;
    	}
    	return a;
    }
    
    PS RutGon(PS p)
    {
    	PS q;
    	q.a=p.a/UCLN(p.a,p.b);
    	q.b=p.b/UCLN(p.a,p.b);
    	if((q.b < 0 && q.a< 0) || (q.b < 0 && q.a >0))
    	{
    		q.a = q.a * (-1) ;
    		q.b = q.b*(-1) ;
    	}
    	return q;
    }
    
    PS Tong(PS p, PS q)
    {
    	PS z;
    	z.a=p.a*q.b+q.a*p.b;
    	z.b=p.b*q.b;
    	return(RutGon(z));
    }
    
    PS Hieu(PS p, PS q)
    {
    	PS z;
    	z.a=p.a*q.b-q.a*p.b;
    	z.b=p.b*q.b;
    	return(RutGon(z));
    }
    
    PS Tich(PS p, PS q)
    {
    	PS z;
    	z.a=p.a*q.a;
    	z.b=p.b*q.b;
    	return(RutGon(z));
    }
    
    PS Thuong(PS p, PS q)
    {
    	PS z;
    	z.a=p.a*q.b;
    	z.b=p.b*q.a;
    	return(RutGon(z));
    }
    M|R.S!!!!!!!!!!!

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    15

    Bạn ơi - cách của bạn là nhập tử riêng, mẫu riêng. Còn cách của mình là nhập xâu ký tự :
    Ví dụ nhập thẳng vào 2/3 => tử =2 và mẫu = 3.
    Mọi người test hộ mình cái lỗi trên cái. Thanks

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    cùng một lớp sao lại dùng friend nhỉ :-?
    None!

  5. #5
    Ngày gia nhập
    08 2008
    Nơi ở
    homeless
    Bài viết
    15

    Thấy nó lặp vô tận ngay chổ tìm USCLN,với a=0,b=b-a thì b sẽ không đổi.

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

    Mặc định Lập trình tính toán giữa các phân số trên C++. Giúp mình sửa lỗi?

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết
    Cùng một lớp sao lại dùng friend nhỉ :-?
    Hix Mình thấy dùng hàm friend dễ dùng hơn ??
    Trích dẫn Nguyên bản được gửi bởi trunkthai Xem bài viết
    Thấy nó lặp vô tận ngay chổ tìm USCLN,với a=0,b=b-a thì b sẽ không đổi.
    Thanh bạn trunkthai nhá !
    Tiện cho mình hỏi, tại sao bài của mình Tử số khi nhập, chỉ nhập được số có một chữ số thôi nhỉ hix (0-9). Nhập hai chứ số nó bắt nhập lại, còn với Mẫu số thì nhập thoải mái ??

  7. #7
    Ngày gia nhập
    08 2008
    Nơi ở
    homeless
    Bài viết
    15

    PHP Code:
        for (0strlen(ts); i++)
        if (
    ms[i] != '-' && (ms[i] < '0' || ms[i] > '9'))    // kiem tra cac ky tu cua xau chua tu so co phai la chu so ko
        
    {
          
    stop 0;
          
    cout<<"Ban can nhap lai phan so :"<<endl;
          break;
        }  
        else 
    stop 1;
        
    mau atoi(ms); 
    PHP Code:
     for(0;strlen(ms); i++) 

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

  1. Bài tập C các phép tính trên phân số viết bằng C trên Linux. Mọi người sửa giúp mình với?
    Gửi bởi hxt57 trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 05-10-2011, 06:05 PM
  2. Đoạn code về linked trên C bị lỗi khi build trên Dev C++. Xem giúp mình
    Gửi bởi birthis trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 06-05-2010, 01:17 PM
  3. return trên C. Trả về giá trị kiểu cấu trúc trên C. Xin chỉ giúp?
    Gửi bởi hoangedward trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-01-2010, 09:37 PM
  4. Close console trên C# | Giúp mình về Console Application trên C# với?
    Gửi bởi letheson trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 15-05-2009, 12:28 AM
  5. interval timer trên C# | Lấy mẫu vẽ đồ thị trên C#. Giúp mình với?
    Gửi bởi mrvui trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 09-05-2009, 10:16 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