24.11.2.24011130. Napisati generičku funkciju “Odstrani” sa četiri parametra ”A”, ”N”, ”Prag” i ”M”. Prvi parametar je niz elemenata za koje se podrazumijeva da je definirana operacija poređenja (tako da se mogu porediti po veličini), a drugi parametar je broj elemenata u tom nizu. Funkcija treba da odstrani sve elemente iz zadanog niza čija je vrijednost manja od vrijednosti parametra ”Prag”, i da smjesti u parametar ”M” broj elemenata niza nakon obavljenog odstranjivanja. Na primjer, neka je dat slijedeći niz:
float Niz[10] = {3.5, -7.11, 2, 1.3, -5, -6.12, 4, 5, -6.3, 0};
Nakon poziva funkcije
Odstrani(Niz, 10, 0, NoviBroj);
elementi niza “Niz” treba da postanu 3.5, 2, 1.3, 4, 5 i 0 (odstranjeni su elementi manji od nule), a promjenljiva ”NoviBroj” (uz pretpostavku da je propisno deklarisana) treba da primi vrijednost 6. Funkcija “Odstrani” ne treba da koristi nikakav pomoćni niz osim samog parametra ”Niz”. Napisati i kratki testni program u kojem ćete demonstrirati napisanu funkciju na nizu brojeva koji se unose sa tastature (vrijednost parametra “Prag” se također unosi).

Opis rješenja:

Listing programa:

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

template<typename tip>


void odstrani(tip A[],int n,tip prag,int &br){
br=0;
for(int i=0;i<n;i++)
    while(A[i]<prag && n>0){
    for(int j=i;j<n-1;j++)A[j]=A[j+1];
    n--;
    br++;
    }
}
int main(){
int N,M;
cin>>N;
const int c(N);
float a[c];
for(int i=0;i<c;i++)cin>>a[i];
float granica;
cin>>granica;
odstrani(a,c,granica,M);
for(int i=0;i<c-M;i++)cout<<a[i]<<" ";
getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index