Probleme Pascal Recursivitate


  1. #1
    0-day Member virusneak reprezinta o cantitate neglijabila
    Data de inscriere
    16-11-2009
    Sex
    M
    Mesaje
    4
    Putere Reputatie
    0
    Reputatie
    10
    Puncte CF
    0.0

    Worried Probleme Pascal Recursivitate

    Am un program pe care nu-l pot face. Ma ajuta si pe mine cineva?

    Se considera declaratia:
    type Vector=array [1..20] of integer;

    Elaborati un program cu subprograme recursive care: Afiseaza componentele vectorului pe ecran, calculeaza suma componentelor, inverseaza componentele vectorului, calculeaza suma componentelor pozitive, verifica daca cel putin o componenta a vectorului este negativa, calculeaza produsul componentelor negative, verifica daka cel putin o componenta a vectorului este egala cu un numar dat.


  2. #2
    Helper mvctin's Avatar mvctin este placut de toti mvctin este placut de toti mvctin este placut de toti
    Data de inscriere
    17-03-2009
    Locaţie
    Craiova
    Varsta
    49
    Sex
    M
    Mesaje
    188
    Mesaje bazar
    166
    Putere Reputatie
    31
    Reputatie
    290
    Puncte CF
    8.5
    Usergroups:

    nu e dificil

    recursivitatea necesita ca in functie la sfirsitul partii utile sa reapelezi functia cu parametrii schimbati

    de exemplu pt afisarea recursiva :
    function rprint(x:vector;y:integer;z:integer):integer;
    var k:integer;
    begin
    if y>=z then {ca sa se opreasca cind y=0}
    begin
    write(x[y]);
    write(' ');
    k:=y-1;
    rprint:=rprint(x,k,z);
    end;
    end;
    si o apelezi cu rprint(x,20,1);
    UNIX is user friendly.
    It's just selective about who its friends are.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

  3. #3
    0-day Member virusneak reprezinta o cantitate neglijabila
    Data de inscriere
    16-11-2009
    Sex
    M
    Mesaje
    4
    Putere Reputatie
    0
    Reputatie
    10
    Puncte CF
    0.0

    Worried :)

    ms mult.. dar cu afisharea mam clarifikat. dar totushi nu pot krea tot programul. nushtiu cum sa fac celelalte subprograme

  4. #4
    Helper mvctin's Avatar mvctin este placut de toti mvctin este placut de toti mvctin este placut de toti
    Data de inscriere
    17-03-2009
    Locaţie
    Craiova
    Varsta
    49
    Sex
    M
    Mesaje
    188
    Mesaje bazar
    166
    Putere Reputatie
    31
    Reputatie
    290
    Puncte CF
    8.5
    Usergroups:

    Thumbs up ;)

    Programarea nu e usoara si nici nu se invata cit ai bate din palme.

    Azi sunt darnic si iti mai donez o functie

    function recsum(x:vector;y:integer;z:integer):integer;
    var k,l:integer; {calculeaza suma recursiv}
    begin
    k:=y-1;
    if y>z then
    begin
    l:=0;
    if k=1 then l:=0
    else l:=(recsum(x,k,z));
    recsum:=x[y]+l;
    end;
    end;

    se apeleaza evident cu recsum(x,20,1)
    UNIX is user friendly.
    It's just selective about who its friends are.

  5. #5
    0-day Member virusneak reprezinta o cantitate neglijabila
    Data de inscriere
    16-11-2009
    Sex
    M
    Mesaje
    4
    Putere Reputatie
    0
    Reputatie
    10
    Puncte CF
    0.0

    :) tnx

    dar totushi poti sa ma ajutsi cu "inverseaza componentele vectorului" te rog mult

  6. #6
    Helper mvctin's Avatar mvctin este placut de toti mvctin este placut de toti mvctin este placut de toti
    Data de inscriere
    17-03-2009
    Locaţie
    Craiova
    Varsta
    49
    Sex
    M
    Mesaje
    188
    Mesaje bazar
    166
    Putere Reputatie
    31
    Reputatie
    290
    Puncte CF
    8.5
    Usergroups:

    Cool inverseaza componentele array-ului

    inversarea asta pare a fi schimbarea ordinii elementelor
    intai elementele erau 1 2 3 4 .. 20 dupa
    care sunt puse in ordinea inversa 20 19 ... 4 3 2 1
    se poate face si prin recursivitate in mai multe moduri

    varianta 1
    se foloseste o singura variabila de control care creste/scade si la fiecare etapa se calculeaza in variabila locala unde trebuie inversate valorile direct in array-ul apelat ca variabila globala procedurii (nu-i nevoie de functie). Variabila de control avanseaza doar pina la jumatatea intervalului.

    varianta 2
    se folosesc 2 variabile de control una care creste si una care scade si cind cele 2 variabile de control sunt egale se opreste substituirea.
    Ca si in cazul precedent trebuie folosit array-ul ca variabila globala si se modifica direct in el. Se foloseste tot procedura deoarece nu trebuie returnata valoare.

    alte variante folosesc mai multe array-uri si una din primele 2 variante.
    UNIX is user friendly.
    It's just selective about who its friends are.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

Google+

Cautati logo-ul CraiovaForum?

Iata cateva variante: