The compiler will effectively compile and execute this:
which will produce the result:
2 3.3
Напиши функциски шаблон
zameni кој ги менува вредностите на две променливи (Swap). Функцијата треба да работи за било кој тип (int, double, char, string).
Помош: Користи референци (T &a, T &b).#include <iostream>
#include <string>
using namespace std;
template <typename T>
void zameni(T &a, T &b) {
T privremena = a;
a = b;
b = privremena;
}
int main() {
int x = 10, y = 20;
zameni(x, y);
cout << "x = " << x << ", y = " << y << endl; // x = 20, y = 10
string str1 = "Здраво", str2 = "Свет";
zameni(str1, str2);
cout << str1 << " " << str2 << endl; // Свет Здраво
return 0;
}
Напиши систем од функции кој го наоѓа максимум од два елементи:
Креирај функциски шаблон maksimumpozitiv кој враќа поголем од два броја.
Преоптовари ја истата функција со конкретна верзија за string, каде наместо лексикографска споредба, функцијата ќе го врати оној string кој е подолг (има повеќе букви).
Оваа задача е одлична за учениците конечно да сфатат кога се користи шаблон, а кога мора да се преоптовари со посебна верзија
#include <iostream>
#include <string>
using namespace std;
// 1. Општ шаблон со if-else за сите стандардни типови
template <typename T>
T maksimumpozitiv(T a, T b) {
if (a > b) {
return a;
} else {
return b;
}
}Што ќе се случи ако за string искористиме обичен шаблон со a > b наместо преоптоварена функција со a.length()
Обичниот шаблон ќе ги споредува зборовите по азбучен ред ('Б' > 'А'), додека со преоптоварувањето ја менуваме логиката за да ги споредуваме по должина!
// 2. Преоптоварена верзија специјално за string со if-else
string maksimumpozitiv(string a, string b) {
if (a.length() >= b.length()) {
return a;
} else {
return b;
}
}
int main() {
cout << "Поголем број: " << maksimumpozitiv(12, 45) << endl; // 45
string s1 = "Петар";
string s2 = "Александар";
cout << "Подолг збор: " << maksimumpozitiv(s1, s2) << endl; // Александар
return 0;
}
// Програма која користи функциски шаблон за одредување најмал елемент во низа.
#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);
}
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:
Post a Comment