PDA

View Full Version : Code tỉnh tổng phân số trên C++. Kết quả in ra không đúng?



vietanh_90
25-11-2010, 11:33 AM
//kiêu câu trúc
#include <iostream>
#include<stdio.h>
#include <math.h>
#include<conio.h>
using namespace std;


struct phanso
{
int tu, mau;
} a,b;

void nhap(phanso x)
{
cout<<"nhap vao mot phan so: "<<endl;
cout<<"Tu: ";cin>> x.tu;cout <<endl;
cout<<"Mau: ";cin >> x.mau;cout <<endl;
}
void output(phanso x) // In ket qua va phan so ra man hinh
{
cout << x.tu << "/" << x.mau << endl;
}
phanso tong(phanso x,phanso y)
{
phanso c;
cout<<"tong hai phan so la: ";
c.tu = a.tu*b.mau + a.mau*b.tu;
c.mau = a.mau*b.mau;

return c;
}

int main()
{
nhap(a);
nhap(b);
output(tong(a,b));
getch();
return 0;

}



Bạn nào sửa giúp mình đoạn code trên với.
Mình tìm mãi mà ko thấy lỗi, kết quả là 0/0.):)T

hieutieutu
25-11-2010, 01:23 PM
Cách sửa là:
void nhap(phanso &x) truyền tham biến không truyền tham trị (:P)
cho bạn code hồi trước mình viết nè!



#include "iostream.h"

struct PhanSo
{
int iTuSo;
int iMauSo;
};
typedef struct PhanSo PHANSO;

void Nhap(PHANSO&);
void Xuat(PHANSO);
PHANSO operator +(const PHANSO &, const PHANSO &);
PHANSO operator -(const PHANSO &, const PHANSO &);
PHANSO operator *(const PHANSO &, const PHANSO &);
PHANSO operator /(const PHANSO &, const PHANSO &);
bool operator >(const PHANSO &, const PHANSO &);
bool operator <(const PHANSO &, const PHANSO &);
bool operator ==(const PHANSO &, const PHANSO &);

void main()
{
PHANSO x, y, z;
cout<<"Nhap vao Phan so thu nhat:\n";
Nhap(x);
cout<<"Nhap vao Phan so thu hai:\n";
Nhap(y);
z = x + y;
cout<<"\nTong cua Hai phan so: ";
Xuat(z);
z = x - y;
cout<<"\nHieu cua Hai phan so: ";
Xuat(z);
z = x * y;
cout<<"\nTich cua Hai phan so: ";
Xuat(z);
z = x / y;
cout<<"\nThuong cua Hai phan so: ";
Xuat(z);

if (x > y)
cout<<"\nPhan so thu 1 lon hon Phan so thu 2";
if (x < y)
cout<<"\nPhan so thu 1 nho hon Phan so thu 2";
if (x == y)
cout<<"\nPhan so thu 1 bang Phan so thu 2";

}

void Nhap(PHANSO &a)
{
cout<<"Nhap Tu So: ";
cin>>a.iTuSo;
cout<<"Nhap Mau So: ";
cin>>a.iMauSo;
}
void Xuat(PHANSO a)
{
cout<<"\nTu So:"<<a.iTuSo;
cout<<"\nMau So:"<<a.iMauSo;
}

PHANSO operator +(const PHANSO &a, const PHANSO &b)
{
PHANSO c;

c.iTuSo = a.iTuSo * b.iMauSo + b.iTuSo * a.iMauSo;
c.iMauSo = a.iMauSo * b.iMauSo;

return c;
}

PHANSO operator -(const PHANSO &a, const PHANSO &b)
{
PHANSO c;
c.iTuSo = a.iTuSo * b.iMauSo - b.iTuSo * a.iMauSo;
c.iMauSo = a.iMauSo * b.iMauSo;
return c;
}

PHANSO operator *(const PHANSO &a, const PHANSO &b)
{
PHANSO c;
c.iTuSo = a.iTuSo * b.iTuSo;
c.iMauSo = a.iMauSo * b.iMauSo;
return c;
}

PHANSO operator /(const PHANSO &a, const PHANSO &b)
{
PHANSO c;
c.iTuSo = a.iTuSo * b.iMauSo;
c.iMauSo = a.iMauSo * b.iTuSo;
return c;
}

bool operator >(const PHANSO &a, const PHANSO &b)
{
long lMauSoQuyDong = (long)a.iMauSo * b.iMauSo;
long lTuSoQuyDongA = (long)a.iTuSo * b.iMauSo;
long lTuSoQuyDongB = (long)b.iTuSo * a.iMauSo;

if (lMauSoQuyDong > 0)
return lTuSoQuyDongA > lTuSoQuyDongB;

return lTuSoQuyDongA < lTuSoQuyDongB;
}

bool operator <(const PHANSO &a, const PHANSO &b)
{
long lMauSoQuyDong = (long)a.iMauSo * b.iMauSo;
long lTuSoQuyDongA = (long)a.iTuSo * b.iMauSo;
long lTuSoQuyDongB = (long)b.iTuSo * a.iMauSo;
if (lMauSoQuyDong > 0)
return lTuSoQuyDongA < lTuSoQuyDongB;
return lTuSoQuyDongA > lTuSoQuyDongB;
}

bool operator ==(const PHANSO &a, const PHANSO &b)
{
long lTuSoQuyDongA = (long)a.iTuSo * b.iMauSo;
long lTuSoQuyDongB = (long)b.iTuSo * a.iMauSo;
return lTuSoQuyDongA == lTuSoQuyDongB;
}

vietanh_90
25-11-2010, 03:15 PM
Thanks bạn nhiều nhé, mình mới học C++ nên còn gà lắm, sai những lỗi rất là cơ bản.):)T

tuanc++
26-11-2010, 08:52 AM
#include<iostream.h>
void main()
{
int a[2],b[2],tong[2],tich[2];
cout<<"nhap a.tu=";cin>>a[0];
cout<<"mau=";cin>>a[1];
cout<<" nhap b. tu=";cin>>b[0];
cout<<"mau=";cin>>b[1];
tong[0]=a[0]*b[1]+a[1]*b[0];
tong[1]=a[1]*b[1];
tich[0]=a[0]*b[0];
tich[1]=a[1]*b[1];
cout<<"tong="<<tong[0]<<"/"<<tong[1];
cout<<"tich="<<tich[0]<<"/"<<tich[1];
}

vietanh_90
26-11-2010, 03:14 PM
uh.cách của bạn là dùng mảng để lưu phân số, cũng hay nhưng mình đang học về dữ liệu kiểu cấu trúc nên phải dùng struct...
Thanks bạn đã chia sẻ nhé.0:)