24.2.3.24011350. Napisati generičku (šablonsku) funkciju “UnosBroja“ sa tri parametra. Funkcija treba da omogući pouzdano unošenje brojeva u program, uz potpunu kontrolu grešaka pri unosu. Prvi parametar predstavlja tekst koji se ispisuje korisniku kao obavijest da treba unijeti broj, drugi parametar predstavlja tekst koji se ispisuje korisniku kao upozorenje u slučaju da unos nije ispravan, dok treći parametar predstavlja promjenljivu u koju će se smjestiti uneseni broj. Na primjer, funkcija se može pozvati na sljedeći način:
UnosBroja("Unesi prvi broj: ", "Neispravan unos!\n", PrviBroj);
Funkcija treba da traži unos od korisnika sve dok unos ne bude ispravan. Napisanu funkciju demonstrirati u testnom programu koji od korisnika traži da unese tri koeficijenta kvadratne jednačine (pozivom napisane funkcije), a zatim računa i ispisuje njena rješenja.

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
#include <string>
#include <cmath>

using namespace std;
template <typename tip>
void unosbroja(const string &a,const string &b,tip &x){
cout<<a;
while(!(cin>>x)){
    cout<<b<<endl<<a;
    cin.clear();
    cin.ignore(100,'\n');
    }
}
int main(){
double prvibr,drugibr,trecibr,d;
while(1){unosbroja("unesi koef. uz najstariji clan razl. od o: ","eror!",prvibr);
    if(prvibr==0)unosbroja("unesi koef. uz najstariji clan razl od o: ","eror!",prvibr);
        else break;
}
unosbroja("unesi koef. uz lin. clan: ","eror!",drugibr);
unosbroja("unesi slob. koef.: ","eror!",trecibr);
d=drugibr*drugibr-4*prvibr*trecibr;
cout<<"x1="<<(-drugibr+sqrt(d))/(2*prvibr)
    <<" ,\nx2="<<(-drugibr-sqrt(d))/(2*prvibr);
getch();
return 0;
}

Izvođenje programa:

Riješeni zadaci 2    Index