24.2.3.24011510. Napisati funkciju koja računa vrijednost funkcije f(x, n) definirane sljedećim izrazom, pri čemu su x i n realni argumenti:

U slučaju da funkcija nije definirana, ona treba da baci izuzetak. To se može desiti u tri slučaja: ako n nije prirodan broj ili nula (tada suma nema smisla), zatim ukoliko se pod korijenom pojavinegativan broj, i konačno, ukoliko nazivnik dobije vrijednost nula. Za svaki od ova tri slučaja treba baciti različite tipove izuzetaka. Funkciju treba testirati u glavnom programu koji u beskonačnoj petlji traži da se sa tastature unose vrijednosti argumenata x i n, a koji potom ispisuje vrijednost funkcije ili odgovarajuću poruku o greški (na osnovu bačenog izuzetka). Pri testiranju obavezno pronaći takve vrijednosti argumenata za koje će se desiti svaki od tri moguća izuzetka (nađene vrijednosti pribilježiti u svesku).

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
double suma(double x,int n){
if(n<=0)throw n;
double s(0),a;
for(int i=0;i<n+1;i++){
    a=x*(x+i)-i*i*pow(-1.,i);
    if(a<0)throw true;
    if(a==0)throw "nije def...";
    s+=(pow(x,i)/sqrt(a));
}
return s;
}
int main(){
try{
    double x;
    int n;
    cin>>x>>n;
    cout<<"\ntrazen suma je:"<<suma(x,n);
    }
catch(int){
    cout<<"suma nema smisla!";}
catch(bool){
    cout<<"greska!nedefinisan korijen."; }
catch(const char c[]){
    cout<<c;}

getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index