30/09/2018, 20:41
TEMPLATE trong C++
em viết như vậy thầy bảo bài này chỉ đáng 1 điểm em cũng không hiểu tại sao mọi thứ vẫn bình thường mọi người cho em hỏi là có cách nào khác với cái đề bài này không ạ ??? xlmn em mới vào diễn đàn
Đề Bài : Xây dựng hàm template tính tổng của một dãy các đối tượng của lớp, sau đó áp dụng tính tổng một dãy số nguyên, một dãy phân số. Chú ý xây dựng lớp phân số có hàm chồng toán tử +.
#include<iostream>
#include<conio.h>
using namespace std;
class ps{
int t,m;
public :
ps(){ // khoi tao tham so can thiet cho bien h trong ham sum
t=0; // neu khong co ket qua se ra mau so =0
m=1;
}
void nhap();
void in();
ps operator + (ps a);
};
void ps::nhap()
{
cin>>t>>m;
}
ps ps::operator + (ps a) // chong toan tu cong cho lop ps
{
ps tg;
tg.t=t*a.m+a.t*m;
tg.m=m*a.m;
return tg;
}
void ps::in()
{
cout<<" KET QUA = "<<t<<"/"<<m;
}
template <class T> T sum(int n, T *a) // khung hinh ham sum chuyen vao ham bien nguyen n va 1 mang cac doi tuong a
{
T h; // tinh tong tung phan tu va luu vao h
for(int i=0;i<n;i++)
h=h+a[i];
return h;
}
int main()
{
char chon;
int n;
cout<<"
TINH TONG SO NGUYEN-nhap N PHAN SO-nhap P
";
chon=getch();
cout<<"nhap vao so phan tu
";
cin>>n;
if(chon=='p'||chon=='P')
{
ps *a;
a=new ps[n];
for(int i=0;i<n;i++)
{
cout<<"
Nhap vao tu va mau cua phan so thu "<<i+1<<endl; // nhap vao tung doi tuong va luu vao mang a
a[i].nhap();
}
ps d=sum(n,a); // ham tra ve ket qua luu vao d
d.in();
}
else {
int *a,h;
a=new int[n];
for(int i=0;i<n;i++)
{ cout<<"nhap vao phan tu nguyen thu "<<i+1<<":"; cin>>a[i]; }
h= sum(n,a);
cout<<"TONG DAY SO NGUYEN LA : "<<h;
}
}
Bài liên quan