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

Rekurzija rekurzija rekurzija :S

[es] :: C/C++ programiranje :: C/C++ za početnike :: Rekurzija rekurzija rekurzija :S

[ Pregleda: 3107 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

KoKuZ
Novi Travnik

Član broj: 140089
Poruke: 127
87.250.113.*



Profil

icon Rekurzija rekurzija rekurzija :S14.09.2007. u 20:22 - pre 202 meseci
zadatak sa ispita nemogu da skontam kako da proslijedim niz brojeva u rekurziju!!!

Napraviti program koji korisniku omogucava da odredi koliko brojeva zeli unijeti.Nakon unosa a koristeci rekurzivnu funkciju program treba da izracuna sumu svih unesenih brojeva koji imaju paran index (pojam index se odnosi na lokaciju u nizu).
napomene:
Brojevi se unose u main funkciji;
Rekurzivna funkcija treba da vrati sumu unesenih brojeva;
Izbjegavajte koristenje globalnih varijabli i predavanja parametara po referenci;

to je jedan od zadataka slicno tome je da se proslijedi niz s tim da rekurzija vrati sumu parnih ili neparnih brojeva..

Ako neko moze da mi uradi zadatke i da mi malo pojasni to prosljedivanje bio bi zahvalan jer ispit imam za 5 dana..

Unaprijed hvala!!!
Software is like sex: it's better when it's free!!
 
Odgovor na temu

KoKuZ
Novi Travnik

Član broj: 140089
Poruke: 127
87.250.113.*



Profil

icon Re: Rekurzija rekurzija rekurzija :S16.09.2007. u 19:38 - pre 202 meseci
molim vas moze li neko da mi rijesi ispit mi je za 3 dana da samo pogledam sintaksu toga da mogu vjezbat to

hvala!!!!
Software is like sex: it's better when it's free!!
 
Odgovor na temu

tosheen_su

Član broj: 142768
Poruke: 6
*.tippnet.co.yu.



Profil

icon Re: Rekurzija rekurzija rekurzija :S17.09.2007. u 10:07 - pre 202 meseci
e kad vec ocekujes neku pomoc onda bi mogao i ti malo da se potrudis oko zadatka da se vidi tvoja zelja or whatever (inace postoji pravilo u vezi toga) ali ono da znas ubuduce.

ja sam ti zadatak uradio preko vektora(navikao sam da ih koristim )umesto obicnog niza ali sustina je ista.
ono shto mi jedino nije bilo jasno je sta ce ti ovde rekurzija (da funkcija poziva samu sebe kada samo treba da vrati zbir brojeva parnog indexa), tako da ja nisam koristio nikakvu rekurziji, pa ako to nije ono shto je tebi tacno trebalo reci pa cemo ispraviti.


Code:

#include <iostream>
#include <vector>
using namespace std;
int zbir(vector<int> xxx)

    int zbir=0;
    for (int j=0;j!=xxx.size();j++)
    {
        if (j%2==0)
            zbir=zbir+xxx[j];
    }
return zbir;


}


int main ()


{
    vector <int> niz;
    int n,m;
    cout<<"koliko brojeva zelite da uneste ? "<<endl;
    cin>>n;
    for (int i=0;i!=n;i++)
    {
        cin>>m;
        niz.push_back(m);
    }

    cout<<zbir(niz)<<endl;


    return 0;
}




pozdrav


 
Odgovor na temu

KoKuZ
Novi Travnik

Član broj: 140089
Poruke: 127
87.250.113.*



Profil

icon Re: Rekurzija rekurzija rekurzija :S18.09.2007. u 19:57 - pre 202 meseci
hmm hvala na tom kolega ali mi treba striktno rekurzija jer mi to trazi na ispitu.. ima dosta drugih nacina da se to uradi ali meni se na ispitu trazi rekurzivno..

hvala, pozdrav!!
Software is like sex: it's better when it's free!!
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Rekurzija rekurzija rekurzija :S19.09.2007. u 00:18 - pre 202 meseci
Evo jedne ideje:

Code:

// x je niz celih brojeva, duzine n

int suma(int * x, int n){
    if(n == 0) return 0; 
    return (n%2 ? x[n-1] : 0) + suma(x, n-1);
}

/* 
    ideja je da se ukupna suma uveca za vrednost poslednjeg clana u nizu iskljucivo ako je on
    na parnoj poziciji [ a ako je na neparnoj, suma se "uveca" za 0 pa nema nikakve stete :) ]
    ako je n-1 parno, onda je n neparno, pa je vrednost izraza n%2 jednaka 1...
*/


Naravno, može se napraviti i efikasnija f-ja, ali je njena mana što se mora pozivati sa pažljivo sračunatim drugim argumentom, jer će f-ja bez ikakve provere uvek pretpostavljati da je poslednji član niza na parnoj poziciji...


Code:


int zbir(int * x, int n){
    if(n <= 0) return 0; 
    return x[n-1] + zbir(x, n-2);
}



pri čemu se mora pozivati na način ekvivalentan sledećem:

Code:

// n je duzina niza x
zbir(x, n%2 ? n : n-1 );

Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Rekurzija rekurzija rekurzija :S

[ Pregleda: 3107 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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