Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Funkcija kao parametar funkcije

[es] :: C/C++ programiranje :: C/C++ za početnike :: Funkcija kao parametar funkcije

[ Pregleda: 2939 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

absBeg
BiH

Član broj: 97773
Poruke: 201
80.71.148.*



Profil

icon Funkcija kao parametar funkcije29.01.2007. u 17:45 - pre 209 meseci
Dva sata kopam po staroj dokumentaciji, ali se nikako ne mogu sjetiti kako se funkcija poziva kao parametar druge funkcije.
Evo zadatka:
Pomocu malenih funkc saberi, oduzmi i pomnozi izvrsiti racunske operacije nad a i b, ali tako da se poziva funkc izracunaj koja kao parametre uzima a,b i pokazivac na funkc koja treba da se pozove. ja sam dosao dovde i zapeo. prijavljuje greske o nepoznatoj funkciji-pointeru, o zagradama koej okruzuju pointer i o tome da je funkcija return vrijednost

Code:

#include <iostream>
using namespace std;

int izracunaj(int a,int b,(*pFunk)(int x,int y)){
    return pFunk(a,b);
}
int saberi(int a,int b){
    return a+b;
}
int oduzmi(int a,int b){
    return a-b;
}
int pomnozi(int a,int b){
    return a*b;
}

int main()
{
    int a,b;
    char operacija;
    cout << "Unesite dva broja!\n";
    cin >> a >> b;
    cout << "Unesite racunsku operaciju: ";
    cin >> operacija;
    int rezultat;
    if (operacija=='+')
        rezultat=izracunaj(a,b,&saberi(a,b));
    if (operacija=='-')
        rezultat=izracunaj(a,b,&oduzmi(a,b));
    if (operacija=='*')
        rezultat=izracunaj(a,b,&pomnozi(a,b))
    cout << "Rezultat je "<<rezultat<<endl;
    
    return 0;
}

"I don't read books, but I have friends who do."
George W. Bush
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Funkcija kao parametar funkcije29.01.2007. u 19:08 - pre 209 meseci
Onako, odokativno /netestirano/:
Umesto:
Citat:

int izracunaj(int a,int b,(*pFunk)(int x,int y)){
return pFunk(a,b);
}

... mozda bi trebalo:
Code:

typedef int (*pFunk)(int x,int y);
int izracunaj(int a,int b, int (*pF)(int, int)){
    return pF(a,b);

Dalje, umesto:
Citat:

if (operacija=='+')
rezultat=izracunaj(a,b,&saberi(a,b));
if (operacija=='-')
rezultat=izracunaj(a,b,&oduzmi(a,b));
if (operacija=='*')
rezultat=izracunaj(a,b,&pomnozi(a,b));

Pokusaj:
Code:

if (operacija=='+')
    rezultat=izracunaj(a,b,/*(pFunk)*/saberi);
if (operacija=='-')
    rezultat=izracunaj(a,b,/*(pFunk)*/oduzmi);
if (operacija=='*')
    rezultat=izracunaj(a,b,/*(pFunk)*/pomnozi);

Ovo moras sam da pokusas, ja sam odavno sa Borlandom, pa sam izgubio svaki smisao i osecaj
za prenosivost i standarde.


[Ovu poruku je menjao X Files dana 29.01.2007. u 20:23 GMT+1]
 
Odgovor na temu

absBeg
BiH

Član broj: 97773
Poruke: 201
*.com
Via: [es] mailing liste



Profil

icon Re: Funkcija kao parametar funkcije29.01.2007. u 21:20 - pre 209 meseci
>
hm...moze li ikako bez typedef? sto je najgore, pointer na funkciju
treba da radi kao (*pointer) (tip,tip), ali ne znam sto ga funkcija ne
prihvaca. VS ga podvlaci kao neku nepostojecu varijablu, tj. kao da se
parametar mora prethodno deklarirati. cudno skroz.
"I don't read books, but I have friends who do."
George W. Bush
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
89.190.198.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Funkcija kao parametar funkcije29.01.2007. u 21:48 - pre 209 meseci
Sada radi?
Ipak se ++uje.
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 07:01 - pre 209 meseci
Citat:

hm...moze li ikako bez typedef?

Može. Evo sad sam pogledao. To typedef mi je ionako ostalo kao slepo crevo
(dok sam gledako kako da se to kulturno odradi) - nije uopšte potrebno.

Ceo primer je lepo postavio Mali Misa. Radi cak i na Borlandu ;)
 
Odgovor na temu

absBeg
BiH

Član broj: 97773
Poruke: 201
*.com
Via: [es] mailing liste



Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 13:25 - pre 209 meseci
>
@MaliMisha

Hvala, radi super. Znaci grijesio sam jer sam pogresno slao adresu
funkcije. medjutim, sta si ti ovdje uradio - jesi li pukim navodjenjem
imena funkcije (bez zagrada) u stvari proslijedio adresu pointeru? davno
sam ovo ucio, pa se vise ne sjecam da se funkc moze proslijediti samo
preko njenog imena.
"I don't read books, but I have friends who do."
George W. Bush
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 13:29 - pre 209 meseci
Greška je bila i ovo:
Code:

int izracunaj(int a,int b,(*pFunk)(int x,int y)){ // <--- Nisi naveo povratni TIP: int (*pFunk)
return pFunk(a,b);
}


 
Odgovor na temu

absBeg
BiH

Član broj: 97773
Poruke: 201
80.71.148.*



Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 14:50 - pre 209 meseci
Citat:
X Files: Greška je bila i ovo:
Code:

int izracunaj(int a,int b,(*pFunk)(int x,int y)){ // <--- Nisi naveo povratni TIP: int (*pFunk)
return pFunk(a,b);
}


hm, zar treba povratni tip kad se funkcija koristi kao parametar?
"I don't read books, but I have friends who do."
George W. Bush
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 15:09 - pre 209 meseci
Citat:

hm, zar treba povratni tip kad se funkcija koristi kao parametar?

Pazi, imaš int a - integer, int b - integer, (*pFunk)(int x,int y) - nema, nisi naveo?!
 
Odgovor na temu

absBeg
BiH

Član broj: 97773
Poruke: 201
80.71.148.*



Profil

icon Re: Funkcija kao parametar funkcije30.01.2007. u 15:45 - pre 209 meseci
Citat:
X Files: Pazi, imaš int a - integer, int b - integer, (*pFunk)(int x,int y) - nema, nisi naveo?!


ma evo skontao sam kakve gluposti i ja pitam
"I don't read books, but I have friends who do."
George W. Bush
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Funkcija kao parametar funkcije

[ Pregleda: 2939 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.