[ Trantor @ 07.12.2007. 20:42 ] @
Zašto dole navedeni kod ne radi kako treba? Naime sve radi dobro dok ne ubacim vrednost za x preko 1.5 kada bi trebalo da se aktivira treća eksponencijalna funkcija a umesto nje se aktivira logaritamska funkcija. Hvala unapred.

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
float x, y;
cout << "Unesite parametar funkcije (x):" << endl;
cin >> x;

if (x<=0.5)
{
y=sqrt (fabs(pow(x,2)+3*x+2));
cout << "Za x=" << x <<" funkcija y=koren|x*x+3*x+2|=" << y << endl;
system("PAUSE");
return 0;
}

if (0.5<x<=1.5)
{
y=log(x+1);
cout << "Za x=" << x <<" funkcija y=ln(x*x+5)=" << y << endl;
system("PAUSE");
return 0;
}

if (x>1.5)
{
y=exp(3*x+1);
cout << "Vrednost funkcije je: " << y <<endl;
system("PAUSE");
return 0;
}


}
[ X Files @ 07.12.2007. 20:49 ] @
Citat:

if (0.5<x<=1.5)

if (x<=1.5)
[ butcher87 @ 07.12.2007. 23:07 ] @
Izvoli...

Code:

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
float x, y;
cout << "Unesite parametar funkcije (x):" << endl;
cin >> x;

if (x<=0.5)
{
y=sqrt (fabs(pow(x,2)+3*x+2));
cout << "Za x=" << x <<" funkcija y=koren|x*x+3*x+2|=" << y << endl;
system("PAUSE");
return 0;
}

if (x>0.5 && x<=1.5) //<<<<<<<<<<<<<<<<<<<<<<
{
y=log(x+1);
cout << "Za x=" << x <<" funkcija y=ln(x*x+5)=" << y << endl;
system("PAUSE");
return 0;
}

if (x>1.5)
{
y=exp(3*x+1); 
cout << "Vrednost funkcije je: " << y <<endl; 
system("PAUSE");

}
return 0;

}
[ Trantor @ 08.12.2007. 10:58 ] @
Hvala vam puno. Sad radi kako treba. Samo još nešto. Zašto čak i kad sam ispravio kod programa opet nije radio kako treba sve dok ga nisam ponovo napisao iz početka? Ovo mi se ne dešava prvi put da ispravim kod i da ne radi dok ga lepo ponovo ne napišem sve iz početka. Da li je problem možda u kompajleru? Ja korisim Bloodshed v4.9.9.2. I još nešto "butcher87" zašto si u zadnjoj "if" funkciji izbacio "return 0" izvan tela funkcije? Milsim sve radi OK ali radi i kad je telu funkcije kao što sam je ja stavio. Hvala još jednom.
[ perun_ @ 08.12.2007. 14:57 ] @
int main() znaci da main vraca int. Ukoliko ovo return 0; stoji u poslednjem if-u, main vraca nulu samo za x>1.5. Sta vraca za ostale vrednosti x-a? Main se transformise iz int-a u void, mozda?
[ X Files @ 08.12.2007. 15:07 ] @
Cela ta if struktura je lose projektovana.

Dakle, treba nesto kao:
Code:

if ( x <= 0.5 )
{
   // nesto
}
else if ( x > 1.5 )
{
   // nesto drugo
}
else
{
   // ostalo
}

[ Trantor @ 08.01.2008. 17:56 ] @
X Files:

Hvala za predlog ovo što si ti napisao jeste daleko bolja i elegantnija struktura. :)