Last active
August 29, 2015 14:19
-
-
Save easai/5fbbe361b9cdeb667c1c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
template <class T, size_t SizeA, size_t SizeB> | |
T he(T (&a)[SizeA], T (&b)[SizeB], T ab[]) | |
{ | |
if(SizeA!=SizeB) | |
return 0; | |
for(int i=0;i<SizeA;i++) | |
{ | |
ab[i]=a[i]+b[i]; | |
} | |
return 1; | |
} | |
template <class T, size_t SizeA, size_t SizeB> | |
T nenji(T (&a)[SizeA], T (&b)[SizeB]) | |
{ | |
if(SizeA!=SizeB) | |
return -1; | |
double ab=0; | |
for(int i=0;i<SizeA;i++) | |
{ | |
ab+=a[i]*b[i]; | |
} | |
return ab; | |
} | |
template <class T, size_t SizeA, size_t SizeB> | |
T ck(T (&a)[SizeA], T (&b)[SizeB], int k) | |
{ | |
T ab=0; | |
for(int i=0;i<SizeA;i++) | |
{ | |
for(int j=0;j<SizeB;j++) | |
{ | |
if(i+j==k) | |
ab+=a[i]*b[j]; | |
} | |
} | |
return ab; | |
} | |
template <class T, size_t SizeA, size_t SizeB> | |
int juanji(T (&a)[SizeA], T (&b)[SizeB], T ab[]) | |
{ | |
int n=SizeA+SizeB-1; | |
for(int i=0;i<n;i++) | |
{ | |
ab[i]=ck(a,b,i); | |
} | |
return 1; | |
} | |
template <class T, size_t Size> | |
void dump(T (&a)[Size]) | |
{ | |
cout << "{"; | |
for(int i=0;i<Size;i++) | |
{ | |
cout << a[i]; | |
if(i<Size-1) | |
cout << ", "; | |
} | |
cout << "}" << endl; | |
} | |
int main() | |
{ | |
double a[]={1,2,4,3}; | |
double b[]={4,2,8,0}; | |
dump(a); | |
dump(b); | |
cout << "he = "; | |
double c[sizeof(a)/sizeof(a[0])]; | |
he(a,b,c); | |
dump(c); | |
cout << "nenji = " << nenji(a,b) << endl; | |
cout << "juanji = "; | |
double ab[sizeof(a)/sizeof(a[0])+sizeof(b)/sizeof(b[0])-1]; | |
juanji(a,b,ab); | |
dump(ab); | |
cout << endl; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment