[ borlland @ 14.06.2008. 09:53 ] @
Interesuje me gdje sam zabrljo, negdje jesam to je ocito ...

Napraviti program po formuli:

Code:

      min(x,y),            y>=0
     
Z= 
      max(x*x,y+y),    y<0


Upotrijebiti dvije funkcije:

float min(float,float);
float max(float,float);

Code:

#include <iostream>
using namespace std;
float min(float, float);
float max(float,float);
int main()
{
    int x,y,z;
    cout << "Unesi x i y: ";
    cin >> x >> y ;
   
    cout << "Z= " << min(x,y) << endl;
    cout << "Z= " << max(x,y) << endl;
   
    system("PAUSE");
    return 0;
}
float min(float x, float y)
{
    if(y>=0)
    {
       if(x<y)
          return x;
       else
           return y;
    }
}
float max(float x, float y)
{
    if(y<0)
    {
       if(x*x>y*y)
         return x*x;
       else
         return y*y;
    }
}
[ StefanJer91 @ 14.06.2008. 10:29 ] @
Ja sam uocio za sad 2 problema:
Prvi problem je do napisanih funkcija, npr za f-ju min, sta da radis ako je y manje od 0? funkcija mora da vrati neku vrednost. Isto vazi i za f-ju max. Drugi je vezan samo za max fju tj. ako si hteo da kazes max(x*x,y*y) umesto max(x*x,y+y) onda je f-ja ok, u suprotnom umesto sto pises y*y treba da bude y+y.
[ borlland @ 14.06.2008. 11:12 ] @
Da, ono je greska bila treba (x*x,y*y)
Citat:

Prvi problem je do napisanih funkcija, npr za f-ju min, sta da radis ako je y manje od 0? funkcija mora da vrati neku vrednost.


U tom slucaju bi trebalo staviti jos jedan else i ispisati da treba biti veci ili jednak od 0 a kod f. max treba biti menje od 0. ???????
[ Eurora3D Team @ 14.06.2008. 13:21 ] @
Ovde u funkciji max po meni je logicnije da se vrati broj a ne njegov kvadrat. A i sta ako funkciji treba da bude prosledjen kvadrat brojeva umesto da se racuna u njoj (posto je u ovoj formuli tako). Inace , ovaj tekst zadatka (ustvari ove formule i objasnjenje sta treba da se radi) je dosta lose napisano i po meni to je najveci razlog da se ovo isprogramira pogresno , a inace je vrlo jednostavno. Isto, kad funkcija koja nije void tipa ne vraca vrednost u svakom segmentu onda to pravi upozorenja na nekim kompajlerima (MS VC++ npr.) tako da je dobra navika da se uvek vraca vrednost (ovde u ovim fn kod u if uslovu teoretski ne mora nikad da se izvrsi).
Mogao bi jasnije da formulises sta treba da se napravi ...
Poz
[ borlland @ 14.06.2008. 13:59 ] @
Pa jest malo nedefinisan, zadatak glasi: Napisati program koji se za razlicite vrijednosti X i Y izracunava Z po formuli, tj. po formuli sa vrha. Ja sam uradio kako sam mislio da treba.

Za funkciju "min" uslov je da y bude >=0, e sad ako za X unesemo da je 2 a za y 4 posto je funkcija min, treba da izbaci Z=2,

Za funkciju "max" uslov je da y bude <0, npr. X= -5 i Y= -8 trebalo bi da kvadrira vrijednosti za X.
-------------------------
-------------------------

Sacu vam postaviti rijesenje istog zadatka iz knjige ali bez funkcija, pa mozda vam bude malo jasnije:
Code:

#include <iostream>
using namespacestd;
void main()
{
     double x,y,z;
     cout << "Unjeti X i Y: ";
     cin >> x >> y;
     if(y >= 0)
          if(x < y)
             z=x;
          else
             z=y;
     else
         if(x*x > y*y)
                z=x*x;
         else
                z=y*y;
     
      cout << "Rezultat je: " << z << endl;
     
     system("PAUSE");
}


A meni treba da rijesim sa dvije funkcije float min(float, float) i float max(float,float).

Hvala vam ljudi
[ Eurora3D Team @ 14.06.2008. 20:38 ] @
Ako je ovo resenje iz knjige onda ti je najpametnije da uradis ovako kako si vec uradio (uz onih par ispravki) i stavi na kraju svake fn return nesto (ako je Y < 0 stavi return 1 npr. a u drugoj return -1 da bi se razlikovao rezultat od greske). I mogao bi da pre izpisa proveris dali je Y pozitivno ili negativno i da pozoves samo odgovarajucu funkciju i ispises samo njen rezultat. Inace je program ok ako su dali ovo resenje za to pitanje.
Pozdrav
[ borlland @ 14.06.2008. 22:10 ] @
Ok, hvala ti :)
[ borlland @ 15.06.2008. 14:42 ] @
...
[ borlland @ 15.06.2008. 17:20 ] @
Samo me zanima dal sam dobro uradio zadatak pomocu referenci.

Citat:

Napisati program koji ce izracunati domet kosog hica pomocu formule: a*a*sin(2*b)/9.81
Upotrijebiti funkciju: void domet(double, double, double &)


Code:

#include <iostream>
#include <math.h>
using namespace std;
void Domet (double brzina, double ugao, double &udaljenost)
{
     udaljenost = brzina*brzina*sin(2*ugao)/9.81;
}
int main()
{
    double a,b,c;
    cout << "Unesi brzinu hica: ";
    cin >> a;
    cout << "Unesi ugao pod kojim je ispaljen hitac: ";
    cin >> b;
    Domet(a,b,c);
    cout << "domet kosog hica je: " << c << endl;
    
    system("pause");
    return 0;
}
[ Eurora3D Team @ 15.06.2008. 22:18 ] @
Dobro si napisao program ... (a za ovu formulu i rezultate nisam siguran )
[ borlland @ 15.06.2008. 23:24 ] @
Eee super :) a sta cemo mu sad kad je takav kakav je, sebi je :) hvala ti care jos jednom, zivio ti nama