Примери - задачи со функциски шаблони

#include <iostream>

template <typename T>
T addOne(T x)
{
    return x + 1;
}

int main()
{
    std::cout << addOne(1) << '\n';
    std::cout << addOne(2.3) << '\n';

    return 0;
}

The compiler will effectively compile and execute this:

#include <iostream>

template <typename T>
T addOne(T x);

template<>
int addOne<int>(int x)
{
    return x + 1;
}

template<>
double addOne<double>(double x)
{
    return x + 1;
}

int main()
{
    std::cout << addOne(1) << '\n';   // calls addOne<int>(int)
    std::cout << addOne(2.3) << '\n'; // calls addOne<double>(double)

    return 0;
}

which will produce the result:

2
3.3
//Програма која користи функциски шаблон за одредување најмал елемент во низа.
#include <iostream>
#include <string>
using namespace std;
template <typename tipel, typename celbroj>
int najmal(tipel x[], celbroj a)
{
 tipel najm=x[0];
 int i;
 for(i=1;i<a;i++)
 {
 if(x[i]<najm) najm=x[i];
 }
 return najm;
}
int main()
{
 int a[100],i,n;
 cout<<"niza so elementi celi broevi"<<endl;
 cout<<"vnesi broj na elementi"<<endl;
 cin>>n;
 cout<<"vnesi gi elementite "<<endl;
for(i=0;i<n;i++)
 cin>>a[i];
 cout<<"najmal element e "<<najmal(a,n);
}

// Програма која користи функциски шаблон за подредување на низа по растечки редослед.

#include <iostream>
#include <string>
using namespace std;

template <typename tipel, typename celbroj>
void zamena(tipel x[], celbroj a, celbroj b)
{
tipel pom;
pom=x[a];
x[a]=x[b];
x[b]=pom;
}

template <typename tipel, typename celbroj>
void sortiranje(tipel x[], celbroj n)
{
celbroj i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
   if(x[i]>x[j]) zamena(x,i,j);
}
}
}

template <typename tipel, typename celbroj>
void pecati(tipel x[], celbroj n) {
celbroj i;
for(i=0;i<n;i++)
cout<<x[i]<<" ";
cout<<endl; }

int main() {
int i, a[100],n;
float b[100];
char c[100];
string d[100];
cout<<"niza so elementi celi broevi"<<endl;
cout<<"vnesi broj na elementi"<<endl;
cin>>n;
cout<<"vnesi gi elementite "<<endl;
for(i=0;i<n;i++)
cin>>a[i];
sortiranje(a,n);
cout<<"podredena nizata e "<<endl;
pecati(a,n);
cout<<"niza so elementi realni broevi"<<endl;
cout<<"vnesi broj na elementi"<<endl;
cin>>n;
cout<<"vnesi gi elementite "<<endl;
for(i=0;i<n;i++)
cin>>b[i];
sortiranje(b,n);
cout<<"podredena nizata e "<<endl;
pecati(b,n);
cout<<"niza so elementi znaci"<<endl;
cout<<"vnesi broj na elementi"<<endl;
cin>>n;
cout<<"vnesi gi elementite "<<endl;
for(i=0;i<n;i++)
cin>>c[i];
sortiranje(c,n);
cout<<"podredena nizata e "<<endl;
pecati(c,n);
cout<<"niza so elementi string"<<endl;
cout<<"vnesi broj na elementi"<<endl;
cin>>n;
cout<<"vnesi gi elementite "<<endl;
for(i=0;i<n;i++)
cin>>d[i];
sortiranje(d,n);
cout<<"podredena nizata e "<<endl;
pecati(d,n);
}


No comments: