THÔNG TIN CÔNG NGHỆ - GIẢI TRÍ - HỌC TẬP - TIN HỌC!
Diễn đàn Nhóm sinh viên CNTT chào mừng Bạn!
Nếu u chưa có tài khoản xin hãy đăng nhập
Nếu đã có tài khoản rồi thì hãy đăng nhập để cùng trao đổi thông tin, chia sẽ kinh nghiệm,.. học tập Tin học nhé!
Cám ơn các bạn nhiều!
Ban Quản Trị!

THÔNG TIN CÔNG NGHỆ - GIẢI TRÍ - HỌC TẬP - TIN HỌC!

NHÓM SINH VIÊN CNTT - CHÀO MỪNG BẠN ĐÃ QUAY TRỞ LẠI!
 
IndexIndex    Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Đăng Nhập
Tên truy cập:
Mật khẩu:
Đăng nhập tự động mỗi khi truy cập: 
:: Quên mật khẩu
Latest topics
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Top posting users this month

Share | 
 

 class phân số

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
nguyendinhly
Trung sĩ


Bài gửi : 36
Age : 28
Đến từ : Nghệ An
Tổng điêm: : 95
Được cảm ơn: : 0
Tham gia: : 28/02/2009

Bài gửiTiêu đề: class phân số   Sun 19 Apr 2009 - 18:36

Code:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
class phanso        //khai bao lop phan so
{
  int tuso;        //Tu so
  int mauso;      //Mau so
  public:
  void NhapPS();
  void KhoitaoPS(int t,int m);  //Ham khoi tao gia tri cho phan so
  int KiemtraPS();  //Ham liem tra tinh hop le cua phan so
  void RutgonPS();//Ham rut gon phan so
  void XuatPS();//Ham in phan so ra man hinh
  int UCLN(int a,int b);
};  //Ket thuc dinh nghia lop
void phanso::NhapPS()
{
  cout<<"Nhap vao tu so:";
  cin>>tuso;
  cout<<"\nNhap vao mau so:";
  cin>>mauso;
}
  void phanso::KhoitaoPS(int t,int m)
{
  tuso=t;
  mauso=m;
}
int phanso::KiemtraPS()
{
  return (mauso==0?1:0);
}
int phanso::UCLN(int a,int b)
{
  while(a!=b)
  {
    if(a>b)
      a-=b;
    else
      b-=a;
  };
  return a;

}
void phanso::RutgonPS()
{
  int t=UCLN(tuso,mauso);
  tuso/=t;
  mauso/=t;
}
void phanso::XuatPS()
{
  if(mauso==1)
    cout<< tuso
 else cout << tuso<<"/"<<mauso;
}
Về Đầu Trang Go down
Xem lý lịch thành viên http://nguyendinhly.tk
nguyendinhly
Trung sĩ


Bài gửi : 36
Age : 28
Đến từ : Nghệ An
Tổng điêm: : 95
Được cảm ơn: : 0
Tham gia: : 28/02/2009

Bài gửiTiêu đề: Re: class phân số   Tue 21 Apr 2009 - 11:35

thọ ơi mi giải thích dòng lệnh này giúp tau với tau ko hiểu

int phanso::KiemtraPS()
{
return (mauso==0?1:0); (đoạn này ko hiểu)
}
int phanso::UCLN(int a,int b)
{
while(a!=b)(ở đây ko hiểu trở xuống)
{
if(a>b)
a-=b;
else
b-=a;
};
return a;
Về Đầu Trang Go down
Xem lý lịch thành viên http://nguyendinhly.tk
nguyenvantho
Tổng Thống


Bài gửi : 376
Age : 28
Đến từ : DHSP HUE
Tổng điêm: : 452
Được cảm ơn: : 29
Tham gia: : 14/01/2009

Bài gửiTiêu đề: Re: class phân số   Tue 21 Apr 2009 - 15:53

nguyendinhly đã viết:
thọ ơi mi giải thích dòng lệnh này giúp tau với tau ko hiểu


int phanso::UCLN(int a,int b)
{
while(a!=b)(ở đây ko hiểu trở xuống)
{
if(a>b)
a-=b;
else
b-=a;
};
return a;
Code:

int UCLN đây là thuật toán Euclit nói nôm na là thế này muốn tìm ước chung lớn nhất của 2 sô thì làm như sau:

Kiểm tra a và b nếu:
    a=b thì không làm gì cả khi đó UCLN là một trong 2 số a hoặc b ví dụ a=8, b=8 thì UCLN là 8( vì a=b mà lấy cái nào cũng được cả)
    còn a khác b thì: nếu a > b thì lấy a gán = a-b ( ví dụ a=8,  b=4, lúc đó a>b thì a = a -b nghĩa là lúc đó lấy a-b rồi gán cho a,a-b= 8-4=4gán cho a thì a=4  ), ngược lại b>a thì b=b-a tương tự như thế, cứ làm như thế cho đến khi a=b thì thôi.
 ví dụ a=8, b=4 thì lúc đó lần lặp đầu tiên kiểm tra a khác b, kiểm tra tiếp câu lệnh if thì a> b => a=a-b = 8-4 =4 và b=4 lúc đó a=b rồi nên UCLN là 4.

Đó là thuật toán còn trong C++ khó hiểu là ở chổ  a-=b(b-=a) câu lệnh này tương đương với a=a-b( tương tự b=b-a); Hai biểu thức này là như nhau dùng cái nào cũng được a-=b <=> a=a-b ( nhưng pascal thì bắt buộc là dùng a=a-b)

_________________
Làm trai gõ phím bình thiên hạ
Anh hùng click chuột định giang sơn
Về Đầu Trang Go down
Xem lý lịch thành viên
nguyenvantho
Tổng Thống


Bài gửi : 376
Age : 28
Đến từ : DHSP HUE
Tổng điêm: : 452
Được cảm ơn: : 29
Tham gia: : 14/01/2009

Bài gửiTiêu đề: Re: class phân số   Tue 21 Apr 2009 - 16:06

nguyendinhly đã viết:
thọ ơi mi giải thích dòng lệnh này giúp tau với tau ko hiểu

int phanso::KiemtraPS()
{
return (mauso==0?1:0); (đoạn này ko hiểu)
}

còn cái này return (mauso==0?1:0) hôm trước mình hỏi Lý bây giờ lý hỏi mình hay thiệt nhưng để mình trả lời:

return (mauso==0?1:0) nếu mẫu số =0 thì trả về 0 còn ngược lại nếu mẫu số khác 0 thì trả về 1

_________________
Làm trai gõ phím bình thiên hạ
Anh hùng click chuột định giang sơn
Về Đầu Trang Go down
Xem lý lịch thành viên
nguyendinhly
Trung sĩ


Bài gửi : 36
Age : 28
Đến từ : Nghệ An
Tổng điêm: : 95
Được cảm ơn: : 0
Tham gia: : 28/02/2009

Bài gửiTiêu đề: Re: class phân số   Wed 22 Apr 2009 - 6:08

thanks thọ,nhưng mà có chỗ vẫn chưa hiểu
return (mauso==0?1:0);
tại sao ở đây lại return?
ở đây cũng không hiểu luôn .nó khó hiểu quá
void phanso::RutgonPS()
{
int t=UCLN(tuso,mauso);
tuso/=t;(đặc biệt ở đây)
mauso/=t;
}
void phanso::XuatPS()
{
if(mauso==1)(hiểu thì hiểu được nhưng mà ko hình dung nó ra sao nói chung là chưa hiểu kĩ)
cout<< tuso
else cout << tuso<<"/"<<mauso;
}

nhờ giải thích nhé,hôm nào rảnh đi uống cafe hhhhhhhaaaaaaa
Về Đầu Trang Go down
Xem lý lịch thành viên http://nguyendinhly.tk
nguyenvantho
Tổng Thống


Bài gửi : 376
Age : 28
Đến từ : DHSP HUE
Tổng điêm: : 452
Được cảm ơn: : 29
Tham gia: : 14/01/2009

Bài gửiTiêu đề: Re: class phân số   Wed 22 Apr 2009 - 8:18

nguyendinhly đã viết:
thanks thọ,nhưng mà có chỗ vẫn chưa hiểu
return (mauso==0?1:0);
tại sao ở đây lại return?
ở đây cũng không hiểu luôn .nó khó hiểu quá
[/color]

return là trả về đó! Cuối cùng hàm tính đi tính lại rồi cũng trả về một giá trị nào đó nói chung hàm là trả về giá trị đơn nào đó! Ví dụ như đi uống cafe là phải trả tiền đó hehe có ai quịt được mô?

còn cái này mình giải thích rồi tuso/=t; nó giống như a-=b; ( ở đây / cũng giống - vậy đó tuso=tuso/t đó, học đừng có máy móc quá nhé!



Trích dẫn :
if(mauso==1)(hiểu thì hiểu được nhưng mà ko hình dung nó ra sao nói chung là chưa hiểu kĩ)
cout<< tuso
else cout << tuso<<"/"<<mauso;

Đoạn này nếu mẫu số =1 thì chỉ ghi ra màn hình là tử số thôi (else) ngựơc lại thì phải ghi ra màn hình cả tử số lẫn mẫu số!


Trích dẫn :
hôm nào rảnh đi uống cafe
còn cái này có ai hiểu không hẻ

_________________
Làm trai gõ phím bình thiên hạ
Anh hùng click chuột định giang sơn
Về Đầu Trang Go down
Xem lý lịch thành viên
knock2810
Thiếu úy
Thiếu úy


Bài gửi : 43
Tổng điêm: : 79
Được cảm ơn: : 2
Tham gia: : 12/02/2009

Bài gửiTiêu đề: Re: class phân số   Wed 27 May 2009 - 4:48

co ai coi dum cai , chi con 1 loi thoi
Code:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
class Phanso
{
    int tu,mau;
public:
    Phanso(){};
    Phanso(int tu1,int mau1)
    {
        tu=tu1;mau=mau1;
    };
    void nhap()
    {
        cout<<"\n ban hau nhap tu: ";cin>>tu;
        cout<<"\n ban hau nhap mau: ";cin>>mau;
    };
    int ucln(int x,int y)
    {
        for(int i=y;i>=0;i--)
            if (((x%i)==0)&&((y%i)==0)) break;
        return i;
    };
    Phanso rutGon()
    {   
        int i=ucln(tu,mau);
        tu=tu/i;
        mau=mau/i;
        return (*this);
    };
    void quydong(Phanso &ps1, Phanso &ps2)
    {
        int uc=ucln(ps1.mau,ps2.mau);
        int bc=ps1.mau*ps2.mau/uc;
        ps1.tu=ps1.tu*(bc/ps1.mau);
        ps2.tu=ps2.tu*(bc/ps2.mau);
        ps1.mau=ps2.mau=bc;
    };
    friend Phanso operator +(Phanso ps1, Phanso ps2)
    {
        Phanso ps3;
        quydong(ps2,ps1);
        ps3.tu=ps2.tu+ps1.tu;
        ps3.mau=ps2.mau+ps1.mau;
        return(ps3);
    };
    void display()
    {
        cout<<tu<<"/"<<mau;
    };
};
void main()
{
    Phanso ps1,ps2,ps3;
    cout<<"\n nhap gia tri cua phan so thu nhat: ";ps1.nhap();
    cout<<"\n nhap gia tri cua phan so thu hai:  "; ps2.nhap();
//    cout<<" gia tri ps2 rut gon :  "<<ps2.rutGon();
    cout<<" \n cong 2 phan so nay, ket qua la:  ";
    ps3=ps1+ps2;
    ps3.display();
    getch();
}
Về Đầu Trang Go down
Xem lý lịch thành viên
nhatdaica
Binh nhì
Binh nhì


Bài gửi : 5
Đến từ : Địa ngục_bạn của thần chết!!!
Tổng điêm: : 11
Được cảm ơn: : 1
Tham gia: : 25/05/2009

Bài gửiTiêu đề: Re: class phân số   Wed 27 May 2009 - 21:23

Cái ni tui biết sơ sơ!
thứ nhất:
hàm :
Code:
  int ucln(int x,int y)
    {
        for(int i=y;i>=0;i--)
            if (((x%i)==0)&&((y%i)==0)) break;
        return i;
    };

Nên khai báo và viết là hàm thành phần bên ngoài lớp,nó sẽ không thông báo là hàm inline dài quá. Với lại khi viết hàm thành phần bên trong lớp thì không có dấu ";". ở đây tui sửa nhưng hàm "quy đồng" đang bị sai,bác knock2818(cá nóc) coi sửa lại he.
sửa:


Code:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
class Phanso
{
    int tu,mau;
public:
    Phanso(){}
    Phanso(int tu1,int mau1)
    {
        tu=tu1;mau=mau1;
    }
    void nhap()
    {
        cout<<"\n ban hau nhap tu: ";cin>>tu;
        cout<<"\n ban hau nhap mau: ";cin>>mau;
    }

    Phanso rutGon()
    { 
        int i=ucln(tu,mau);
        tu=tu/i;
        mau=mau/i;
        return (*this);
    }
    Phanso  quydong(Phanso &ps1, Phanso &ps2)
    {
   int uc=ucln(ps1.mau,ps2.mau);
   int bc=ps1.mau*ps2.mau/uc;
   ps1.tu=ps1.tu*(bc/ps1.mau);
   ps2.tu=ps2.tu*(bc/ps2.mau);
   ps1.mau=ps2.mau=bc;
      return(ps1,ps2);
    }
    friend Phanso operator +(Phanso ps1, Phanso ps2)
    {
   Phanso ps3;
   //quydong(ps2,ps1);
   ps3.tu=ps2.tu+ps1.tu;
   ps3.mau=ps2.mau+ps1.mau;
   return(ps3);
    }
    void display()
    {
   cout<<tu<<"/"<<mau;
    }
  int ucln(int x,int y);
};
Phanso:: ucln(int x,int y)
 {
   for(int i=y;i>=0;i--)
       if (((x%i)==0)&&((y%i)==0)) break;
   return i;
 };

void main()
{
    Phanso ps1,ps2,ps3;
    cout<<"\n nhap gia tri cua phan so thu nhat: ";ps1.nhap();
    cout<<"\n nhap gia tri cua phan so thu hai:  "; ps2.nhap();
//    cout<<" gia tri ps2 rut gon :  "<<ps2.rutGon();
    cout<<" \n cong 2 phan so nay, ket qua la:  ";
    ps3=ps1+ps2;
    ps3.display();
    getch();
}
Về Đầu Trang Go down
Xem lý lịch thành viên
knock2810
Thiếu úy
Thiếu úy


Bài gửi : 43
Tổng điêm: : 79
Được cảm ơn: : 2
Tham gia: : 12/02/2009

Bài gửiTiêu đề: Re: class phân số   Wed 27 May 2009 - 22:25

thank, nhưng ý tôi hỏi là ở đoạn "quydong" tê
Về Đầu Trang Go down
Xem lý lịch thành viên
nhatdaica
Binh nhì
Binh nhì


Bài gửi : 5
Đến từ : Địa ngục_bạn của thần chết!!!
Tổng điêm: : 11
Được cảm ơn: : 1
Tham gia: : 25/05/2009

Bài gửiTiêu đề: Re: class phân số   Thu 28 May 2009 - 11:50

Đoạn:
Code:
[color=green]void quydong(Phanso &ps1, Phanso &ps2)
    {
        int uc=ucln(ps1.mau,ps2.mau);
        int bc=ps1.mau*ps2.mau/uc;
        ps1.tu=ps1.tu*(bc/ps1.mau);
        ps2.tu=ps2.tu*(bc/ps2.mau);
        ps1.mau=ps2.mau=bc;
    };[/color]

Thường dùng " hàm " trả về "Phanso".(trả về 2 phanso,hoặc 1 ps đã quy đồng rồi). nếu dùng hàm thành phần không trả về(hàm void) thì chương trình chính khi gọi hàm phải là tênđốitượng.tênhàm. Để khi mô sửa lại được chú post lại cho!
Về Đầu Trang Go down
Xem lý lịch thành viên
nhatdaica
Binh nhì
Binh nhì


Bài gửi : 5
Đến từ : Địa ngục_bạn của thần chết!!!
Tổng điêm: : 11
Được cảm ơn: : 1
Tham gia: : 25/05/2009

Bài gửiTiêu đề: Re: class phân số   Thu 28 May 2009 - 12:03

Chú có bài ni coi tạm thử coi:


Code:

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

class PHANSO
{
  int tu,mau,dau;
  public:

  PHANSO()
  {}
  PHANSO(int i,int j,int k)
  {
    tu= i; mau= j; dau= k;
  }

  void nhapphanso()
  {
    cout<<"\n nhap vao tu so: ";
    cin>>tu;
    cout<<"\n nhap vao mau so: ";
    cin>>mau;
    cout<<"\n nhap vao dau cua phan so (0 am,1 duong): ";
    cin>>dau;
  }

  void inphanso()
  {  if(dau == 0)
    cout<<"\n phan so: -"<<tu<<"/"<<mau;
      if(dau == 1)
    cout<<"\n phan so: "<<tu<<"/"<<mau;
  }

  friend PHANSO operator +(PHANSO p,PHANSO s)
    {
      PHANSO tam;
      if(p.dau == 0)
    p.tu= -p.tu;
    if(s.dau == 0)
     s.tu= -s.tu;
      tam.tu= p.tu*s.mau + p.mau*s.tu;
      tam.mau= p.mau*s.mau;
      if(tam.tu < 0)
   { tam.dau= 0;
     tam.tu= -tam.tu;
   }
      else tam.dau= 1;
    return(tam);
    }

  friend PHANSO operator -(PHANSO p,PHANSO s)
  {
      PHANSO tam;
      if(p.dau == 0)
    p.tu= -p.tu;
    if(s.dau == 0)
     s.tu= -s.tu;
      tam.tu= p.tu*s.mau - p.mau*s.tu;
      tam.mau= p.mau*s.mau;
      if(tam.tu < 0)
   { tam.dau= 0;
     tam.tu= -tam.tu;
   }
      else tam.dau= 1;
    return(tam);
  }

  friend PHANSO operator *(PHANSO p,PHANSO s)
      {
      PHANSO tam;
      tam.tu= p.tu*s.tu;
      tam.mau= p.mau*s.mau;
      tam.dau= p.dau*s.dau;
      return(tam);
      }

  friend PHANSO operator /(PHANSO p,PHANSO s)
      {
      PHANSO tam;
      tam.tu= p.tu*s.mau;
      tam.mau= p.mau*s.tu;
      tam.dau= p.dau*s.dau;
      return(tam);
      }

  PHANSO operator =(PHANSO s)
      {
      tu= s.tu;
      mau= s.mau;
      dau= s.dau;
      return(*this);
      }

  friend PHANSO operator ++(PHANSO s)
      {
      PHANSO tam,T;
      T.tu= 1;
      T.mau= 1;
      T.dau= 1;
      tam= s+T;
      return(tam);
      }

  friend PHANSO operator --(PHANSO s)
      {
      PHANSO tam,T;
      T.tu= 1;
      T.mau= 1;
      T.dau= 1;
      tam= s-T;
      return(tam);
      }
  void rutgonphanso();
  };

  void  PHANSO:: rutgonphanso()
    {  int ucln;
      int T= tu; int M= mau;
   if(T !=0 && M!= 0)
    {
     while (T != M)
     if(T > M) T= T-M;
     else M= M- T;
    ucln= T;
    tu= tu/ucln;
    mau= mau/ucln;
    };
    }


  void main()
  { clrscr();
  PHANSO PS1,PS2,PS3;
  cout<<"\n nhap phan so 1: ";
  PS1.nhapphanso();
  cout<<"\n nhap phan so 2: ";
  PS2.nhapphanso();
  PS1.inphanso();
  PS2.inphanso();
  PS3= PS1+PS2;
  PS3.rutgonphanso();
  cout<<"\n tong hai phan so la: ";
  PS3.inphanso();
  PS3= PS1-PS2;
  PS3.rutgonphanso();
  cout<<"\n hieu hai phan so la: ";
  PS3.inphanso();
  PS3= PS1*PS2;
  PS3.rutgonphanso();
  cout<<"\n tich hai phan so la: ";
  PS3.inphanso();
  PS3= PS1/PS2;
  PS3.rutgonphanso();
  cout<<"\n thuong hai phan so la: ";
  PS3.inphanso();
  cout<<"\n ++phan so1 la: ";
  PS3= ++PS1;
  PS3.rutgonphanso();
  PS3.inphanso();
  cout<<"\n --phan so 2 la: ";
  PS3= --PS2;
  PS3.rutgonphanso();
  PS3.inphanso();
  getch();
  }
Về Đầu Trang Go down
Xem lý lịch thành viên
Thanhcong
Binh nhì
Binh nhì


Bài gửi : 1
Tổng điêm: : 1
Được cảm ơn: : 0
Tham gia: : 15/05/2012

Bài gửiTiêu đề: Re: class phân số   Wed 23 May 2012 - 22:53

cậu ơi sao tớ làm như vậy sao không ra nhỉ.... Sad
Về Đầu Trang Go down
Xem lý lịch thành viên
Admin
Binh nhì
Binh nhì


Bài gửi : 52
Age : 28
Tổng điêm: : 60
Được cảm ơn: : 1
Tham gia: : 13/01/2009

Bài gửiTiêu đề: Re: class phân số   Sat 26 May 2012 - 16:24

Thanhcong đã viết:
cậu ơi sao tớ làm như vậy sao không ra nhỉ.... Sad

Lỗi ở đoạn nào thì bạn copy ra nhé. mọi người mới giúp bạn được!
thanks

_________________
Very Happy
Về Đầu Trang Go down
Xem lý lịch thành viên
Sponsored content




Bài gửiTiêu đề: Re: class phân số   Today at 16:57

Về Đầu Trang Go down
 
class phân số
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
THÔNG TIN CÔNG NGHỆ - GIẢI TRÍ - HỌC TẬP - TIN HỌC! :: HỌC TẬP _ TÀI LIỆU HỌC TẬP :: LẬP TRÌNH PASCAL, C/C++ :: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++-
Chuyển đến