View Full Version : [ Solved ]Class đơn thức,đa thức.ai biết chỉ đệ cái
newcommer
20-10-2008, 07:44 PM
#include<iostream.h>
class donthuc
{
private:
int heso;
int somu;
public:
donthuc()
{
heso=0;
somu=0;
}
friend istream &operator>>(istream &is,donthuc &x);
friend ostream &operator <<(ostream &os,donthuc &x);
friend dathuc();
};
class dathuc
{
private:
int n;
donthuc *p;
public:
dathuc()
{
p=new donthuc [n];
}
friend istream &operator >>(istream &is,dathuc &x);
friend ostream &operator <<(ostream &os,dathuc &x);
};
void main(){}
istream &operator>>(istream &is,donthuc &x)
{
cout<<"nhap vao heso";
is>>x.heso;
cout<<"nhap vao mu";
is>>x.somu;
return is;
}
ostream &operator <<(ostream &os,donthuc &x)
{
os<<x.heso<<"/"<<x.somu;
return os;
}
ostream &operator <<(ostream &os,dathuc &x)
{
for(int i=0;i<x.n;i++)
{
os<<x.p[i];
}
return os;
}
istream &operator >>(ostream &is,dathuc &x)
{
cout<<"nhap vao so phan tu";
is>>x.n;
x.p=new donthuc [x.n];
for(int i=0;i<x.n;i++)
{
is>>x.p[i];
}
return is;
}
ai giỏi xin giúp đệ cái.hàm nhập này khó chịu quá.không biết sai chỗ nào
QuangHoang
20-10-2008, 08:39 PM
Cơ bản bạn còn chưa ổn mà bạn làm hướng đối tượng làm gì vội chứ, chưa cần biết nhập xuất sai đúng chỗ nào, hàm main bạn để thế kia thì nó chạy được mới là lạ. Ít nhât là bạn vứt nó xuống cuối chứ.
rua_con
21-10-2008, 03:56 PM
ai nói cậu là để hàm main ở đó thì không chạy dươc chứ chỉ can khai báo dưới lớp là nó chạy gùi(không tin thì code thử dii(:-)h )
rua_con
21-10-2008, 03:58 PM
còn bạn newcommer bạn nhìn sach viêt ra thì phải bài của ban không có khó đâu bạn cố nhìn kĩ lại đi lỗi cỏ bản nhìu lám
rox_rook
21-10-2008, 03:58 PM
- Chạy được thì sao ? Style code kiểu đó ai mà viết ! Tui chưa thấy ai code để main giữa class declaration và class definition cả. Hơn nữa void main() và iostream.h không phải C++.
@newcommer : Code sai chỗ nào ? Compiler gì ? Compiler báo lỗi gì ? Đọc nội qui trước khi post bài chưa cậu ?
meoconlongvang
21-10-2008, 04:14 PM
- Chạy được thì sao ? Style code kiểu đó ai mà viết ! Tui chưa thấy ai code để main giữa class declaration và class definition cả.
Úi chết, mèo code lúc nào cũng nhét hàm main vô giữa khai báo và cài đặt cả. Nguy quá, về phải sửa lại xì tai thôi. Sorry vì đã spam :D.
newcommer
22-10-2008, 09:56 PM
em học thầy em.ông băt phải làm theo programing style của ổng.ổng nói kỉ thuật ko = phong cách.
dragon111989
03-11-2008, 11:39 PM
Tui cũng đồng ý với newcommer. Style của bạn không sai. Mà các bạn khác cũng không sai.
Nhưng nếu đúng Style chuẩn của lập trình viên, bạn nên chia đoạn code kia thành 3 file: donthuc.h, donthuc.cpp, và main.cpp
Thầy của bạn đưa ra style như vậy có lẽ bạn chỉ mới học lập trình. Bạn nên nghe lời thầy, thầy không sai đâu.
Style của bạn chuẩn hơn các bạn khác, (nhưng vẫn chưa chuẩn lắm), sau này bạn còn sẽ thấy code của mình tuy chạy đúng nhưng vẫn còn nhiều vấn đề sai xót (Style không đúng, tên hàm, biến đặt không đúng quy cách, cài đặt gây khó hiểu, hay hiểu nhầm).
Ví dụ 1 cái nè:
for(int i = -1; i++ < 1025; putchar("\n #"[(i%32<31)+((i/32&i)==i%32)]));
Đây là 1 lỗi bị đánh giá sai trầm trọng. Code gây khó hiểu.
Ở lập trình càng thống nhất càng tốt, tránh các phong các riêng.
Chúc bạn học tốt.
dragon111989
03-11-2008, 11:44 PM
Bạn viết code không phải cho bạn đọc ngay lúc này, mà còn cho người khác đọc, và cả cho bạn đọc lại nữa.
Nếu viết code không đúng quy cách, bạn sẽ bị thất bại khi viết chương trình có cả hàng ngàn đoạn code, khi cấu trúc chương trình đã phức tạp.
cuibap
05-11-2008, 10:32 AM
mình có đoạn code này ban tham khảo thử xem:
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
class dathuc
{
int bac,*heso;
public:
void nhap();
{
cout<<"\nNhap bac cua da thuc:\n";
cin>>bac;
cout<<"\nNhap he so cua da thuc:\n";
heso=new int[bac+1];
for(int i=0;i<=bac;i++)
cin>>heso[i];
}
void xuat()
{
cout<<"\nF(x)=";
for(int i=0,k=bac;i<bac;++i,--k)
{
if(heso[i]!=0)
cout<<heso[i]<<"X^";
if(k!=0)
cout<<k;
if((heso[i+1]>0)&&(i+1)<bac)
cout<<"+";
}
if(heso[bac]>0)
cout<<"+"<<heso[bac];
else
if(heso[bac]<0)
cout<<heso[bac]; //heso[bac]=0 thì không in ra ;
cout<<"\n";
getch();
}
dathuc operator +(dathuc ob1)
{
dathuc ob=(bac>ob1.bac)?*this:ob1;
int j=(bac>ob1.bac)?(bac-ob1.bac):(ob1.bac-bac);
if(bac>ob1.bac)
for(int i=ob1.bac;i>=0;--i)
ob.heso[i+j]+=ob1.heso[i];
else
for(int i=bac;i>=0;--i)
ob.heso[i+j]+=heso[i];
return ob;
}
};
void main()
{
dathuc ob,ob1,ob2;
ob1.nhap();
ob1.xuat();
ob2.nhap();
ob2.xuat();
ob=ob1+ob2;
ob.xuat();
}
bài tập này thầy giáo mình ra mình làm có chạy thử rồi.
vBulletin® v3.8.4, Copyright ©2000-2010, Jelsoft Enterprises Ltd. Administrer by Kevin Hoang