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
0