24.11.2.24011120. Napisati generičku funkciju “Izdvajanje“ sa četiri parametara: “A”, “N”, ”Prvi” i ”Drugi”. ”A” je niz elemenata proizvoljnog tipa, za koji ćemo pretpostaviti da sadrži barem dva različita elementa, a ”N” je broj elemenata u tom nizu. Funkcija treba da pronađe prva dva elementa po veličini, i da smjesti pronađene vrijednosti u parametre ”Prvi” i ”Drugi”. Na primjer, neka je dat sljedeći niz
int Niz[10] = {6, 7, 4, 1, 6, 5, 3, 8, 5, 9};
Tada poziv funkcije
Izdvajanje(Niz, 10, P, Q);
treba da u promjenljive ”P” i ”Q” (naravno, uz pretpostavku da su propisno deklarisane) smjesti redom vrijednosti 1 i 3, jer su dvije najmanje vrijednosti po veličini u ovom nizu upravo brojevi 1 i 3. Napisati i kratki testni program u kojem ćete demonstrirati napisanu funkciju.

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
using namespace std;
template<typename tip>

template<typename tip1,typename tip2>
tip izdvajanje(tip A[],int N,tip &prvi,tip &drugi){
prvi=A[0];
for(int i=1;i<N;i++)
    if(A[i]<prvi)prvi=A[i];
drugi=A[0];
for(int i=1;i<N;i++)
    if(A[i]>drugi)drugi=A[i];
for(int i=0;i<N;i++)
    if(A[i]>prvi&&A[i]<drugi)drugi=A[i];
}
int main(){
int n;
cin>>n;
const int c(n);
int niz[c];
for(int i=0;i<c;i++)cin>>niz[i];
int br1,br2;
izdvajanje(niz,c,br1,br2);
cout<<endl<<br1<<endl<<br2;
getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index