stie careva pascal? help me pls


  1. #1
    Oldtimer zero07's Avatar zero07 reprezinta o cantitate neglijabila
    Data de inscriere
    21-11-2005
    Locaţie
    Craiova
    Varsta
    36
    Sex
    M
    Mesaje
    1,439
    Mesaje bazar
    104
    Putere Reputatie
    0
    Reputatie
    7
    Puncte CF
    6.0

    stie careva pascal? help me pls

    am nevoie urgent sa rezolv problema urmatoare in pascal, daca stie cineva il rog sa ma ajute.

    Problema rezelvata:
    Sa se creeze arborele „genealogic” personal pe parcursul a 3 sau 4 generatii punandu-se in nodul radacina prenumele propriu, iar ca descendent al fiecarui nod numele parintilor. Se va obtine un, „arbore genealogic” asemanator cu cel clasic, desii notiunile de stramos si urmas au fost inversate. Se considera ca orice persoana are cel mult doi descendenti.
    Cerinte:
    a) Se da un nume de persoana, sa se verifice daca exista;
    b) Pentru un nume de persoana, sa se afiseze toti descendentii acestuia;
    c) Pentru un nume de persoana, sa se afiseze descendentii directi ai acestuia;
    d) Pentru un nume de persoana, sa se afiseze daca mai are sau nu descendenti;


    as avea nevoie cel mai mult de afisarea arborelui pe nivele, exact ca un arbore genealogic.

    dau de baut la urmatorul meeting daca ma ajuta careva

    rog moderatorii sa nu treaca acest thread la offtopic pt 24 de ore, va multumesc

  2. #2
    Trance Addicted! Reaver's Avatar Reaver este o raza de lumina in ochii tuturor Reaver este o raza de lumina in ochii tuturor Reaver este o raza de lumina in ochii tuturor Reaver este o raza de lumina in ochii tuturor Reaver este o raza de lumina in ochii tuturor Reaver este o raza de lumina in ochii tuturor
    Data de inscriere
    29-09-2005
    Locaţie
    Far, far away!
    Varsta
    43
    Sex
    M
    Mesaje
    1,994
    Mesaje bazar
    226
    Putere Reputatie
    47
    Reputatie
    598
    Puncte CF
    41.0
    Usergroups:
    Damn, Pascal sucks. Daca cereai C sau Java il aveai.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

  3. #3
    Oldtimer zero07's Avatar zero07 reprezinta o cantitate neglijabila
    Data de inscriere
    21-11-2005
    Locaţie
    Craiova
    Varsta
    36
    Sex
    M
    Mesaje
    1,439
    Mesaje bazar
    104
    Putere Reputatie
    0
    Reputatie
    7
    Puncte CF
    6.0
    sau macar algoritmul daca nu stiti pascal ca il fac eu dupa.

  4. #4
    Maniac Scorpio's Avatar Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati Scorpio este cu certitudine unul din liderii acestei comunitati
    Data de inscriere
    04-10-2005
    Locaţie
    Craiova
    Varsta
    38
    Sex
    M
    Mesaje
    4,548
    Mesaje bazar
    629
    Putere Reputatie
    60
    Reputatie
    3386
    Puncte CF
    10.5
    Usergroups:
    Offf .... Pascal .. cine draq mai foloseste aja ceva ....

    Fi atent la afisare ...

    se poate face in 3 feluri : inordine, postordine , preordine ...

    ete un exemplu

    procedure srd (pnod p );
    {
    while (p <> NULL ) do {
    srd ( p->next);
    write (" ";p->info);
    srd ( p-> next);
    }
    }

    adik .. .ce se intampla ...

    srd - stanga , radacina , dreapta

    1. parcurgi in inordine subarborele stang ..
    2. Afisezi informatia din radacina ( in cazut tau un String ( crek nici n'are Pascalu' tipu asta ) ...
    3. parcurgi in inordine subarborele drept ..

    si park in Pascal e nill nu NULL ...
    Last edited by Scorpio; 22-05-2006 at 21:26. Motiv: Automerged Doublepost
    -- No OnE LiVeS FoReVeR !!!

  5. #5
    Oldtimer zero07's Avatar zero07 reprezinta o cantitate neglijabila
    Data de inscriere
    21-11-2005
    Locaţie
    Craiova
    Varsta
    36
    Sex
    M
    Mesaje
    1,439
    Mesaje bazar
    104
    Putere Reputatie
    0
    Reputatie
    7
    Puncte CF
    6.0
    Citat Mesaj iniţiat de Scorpio[Evil_Klan]
    Offf .... Pascal .. cine draq mai foloseste aja ceva ....

    Fi atent la afisare ...

    se poate face in 3 feluri : inordine, postordine , preordine ...

    ete un exemplu

    procedure srd (pnod p );
    {
    while (p <> NULL ) do {
    srd ( p->next);
    write (" ";p->info);
    srd ( p-> next);
    }
    }

    adik .. .ce se intampla ...

    srd - stanga , radacina , dreapta

    1. parcurgi in inordine subarborele stang ..
    2. Afisezi informatia din radacina ( in cazut tau un String ( crek nici n'are Pascalu' tipu asta ) ...
    3. parcurgi in inordine subarborele drept ..

    si park in Pascal e nill nu NULL ...

    astea o stiu dar nus cum sal fac sa afiseze exact ca un arbore, el mi le afiseaza pe toate pe aceeasi linie nu ca un arbore pe linii diferite.

  6. #6
    Member Idunna's Avatar Idunna are ceva special... Idunna are ceva special...
    Data de inscriere
    04-12-2005
    Varsta
    36
    Sex
    M
    Mesaje
    161
    Mesaje bazar
    361
    Putere Reputatie
    38
    Reputatie
    157
    Puncte CF
    14.0

    sper sa-ti fie de folos

    uite o problema cu un arbore genealogic...sper sa-ti fie de folos cu ceva..daca nu, asta este.. macar am incercat

    Arbore genealogic
    Se considera un arbore genealogic care cuprinde descendenţii unei persoane. Fiind date numele a dou? persoane din familie , sa se afişeze cel mai apropiat stramoş comun al celor doua persoane.



    Program arbore_genealogic;
    uses crt;
    type reper=^nod;
    nod=record
    nume:string;
    gen:byte;
    st,dr,tata:reper
    end;
    var rad,p,q,pp:reper;
    nume:string;
    g1,g2:byte;

    procedure creare(var p:reper;tata:reper;g:byte);
    var nume:string;
    begin
    readln(nume);
    if nume='' then p:=nil
    else
    begin
    new(p);p^.nume:=nume;p^.tata:=tata;
    p^.gen:=g;
    write('Primul fiu al lui ',nume,':');
    creare(p^.st,p,g+1);
    write('Fratele lui ',nume,':') ;
    creare(p^.dr,tata,g)
    end
    end;

    function gasit(p:reper):boolean;
    var g:boolean;
    begin
    if p<>nil then
    if p^.nume=nume then
    begin
    gasit:=true;pp:=p
    end
    else
    begin
    g:=gasit(p^.st);
    if g then begin gasit:=g;exit end;
    gasit:=gasit(p^.dr)
    end
    else gasit:=false
    end;


    Begin
    clrscr;
    write('Stramosul: ');
    creare(rad,nil,0);
    repeat
    write('Persoana 1: ');
    readln(nume);
    until gasit(rad);
    p:=pp;
    repeat
    write('Persoana 2: ');
    readln(nume)
    until gasit(rad);
    q:=pp;
    g1:=p^.gen; {g1=generatia pers. 1}
    g1:=q^.gen; {g2=generatia pers. 2}
    if g1<g2 then
    repeat q:=q^.tata; dec(g2) until g1=g2
    else
    if g1>g2 then
    repeat p:=p^.tata; dec(g1) until g1=g2;
    while p<>q do
    begin
    p:=p^.tata; q:=q^.tata end;
    writeln('Stramosul comun cel mai apropiat este: ',p^.nume);
    readln
    end.


    poate maine iti spun si de afisare...acum sunt cam obosita...ma mai documentez si daca reusesc ceva iti spun...oricum Pascal e oribil!!!!!!!!!!!!!! si miercuri dau atestatul la info

    ia stai asa... poti sa parcurgi in latime sau in adancime ca pe un graf si afisezi cum vrei: write, writeln..afisezi arborele radacina si apoi vecinii sai...


    uite, iti mai scriu un program care deseneaza un arbore...poate mai iei o idee, doua


    Desenarea unui arbore:

    program arb;
    uses crt,graph;
    type arbore=^varf;
    varf=record
    st,dr:arbore
    end;
    var k,gd,gm,i,n:integer;
    a:arbore;
    c:char;
    s:array[ 0..20] of integer;

    function earb(n1,n2:integer):boolean;
    var i:integer;
    begin
    earb:=false;
    if(n2=n1+2) and (s[n1]=1) and (s[n1+1]=2) and (s[n2]=2)
    then earb:=true
    else if (n2>n1+2) then
    if (s[n1]=1) and (s[n2]=2) and earb(n1+1,n2-1)
    then earb:=true
    else if(s[n1]=1) and (s[n1+1]=2) and earb(n1+2,n2)
    then earb:=true
    else for i:=n1+3 to n2-3 do
    if (s[n1]=1) and earb(n1+1,i) and earb(i+1,n2)
    then begin
    earb:=true;
    exit
    end
    end;


    procedure afisare(a:arbore;x,y:integer);
    begin
    if a<>nil then
    begin
    if a^.st<>nil then
    begin
    line(x,y,x-30,y+30);
    afisare(a^.st,x-30,y+30)
    end;
    if a^.dr<>nil then
    begin line(x,y,x+30,y+30);
    afisare(a^.dr,x+30,y+30)
    end
    end
    end;

    function constr(n1,n2:integer):arbore;
    var i:integer;
    a:arbore;
    begin
    if (n2=n1+2) and (s[n1]=1) and (s[n1+1]=2) and(s[n2]=2)
    then begin
    new(a);a^.st:=nil;
    a^.dr:=nil;constr:=a
    end
    else if (n2>n1+2)
    then if (s[n1]=1) and (s[n2]=2) and earb(n1+1,n2-1)
    then begin
    new(a); a^.dr:=nil;
    a^.st:=constr(n1+1,n2-1);
    constr:=a
    end
    else if (s[n1]=1) and (s[n1+1]=2) and earb(n1+2,n2)
    then begin
    new(a);a^.st:=nil;
    a^.dr:=constr(n1+2,n2);
    constr:=a
    end
    else for i:=n1+3 to n2-3 do
    if (s[n1]=1) and earb(n1+1,i) and earb(i+1,n2)
    then begin
    new(a);
    a^.st:=constr(n1+1,i);
    a^.dr:=constr(i+1,n2);
    constr:=a;exit
    end
    end;

    procedure stergere(var a:arbore);
    begin
    if a<>nil then
    if (a^.st=nil) and (a^.dr=nil)
    then
    begin dispose(a);a:=nil end
    else
    begin
    stergere(a^.st);
    stergere(a^.dr);
    stergere(a)
    end
    end;




    begin
    clrscr;
    writeln('numarul de varfuri :');readln(n);
    detectgraph(gd,gm);
    initgraph(gd,gm,'c:\bp\bgi');
    for i:=0 to 2*n do s[i]:=0;
    s[2*n+1]:=2;k:=0;
    while k>=0 do
    if k=2*n then
    begin
    if earb(1,2*n+1) then
    begin
    a:=constr(1,2*n+1);
    afisare(a,300,0);
    repeat until keypressed;
    c:=readkey;
    cleardevice;
    stergere(a)
    end;
    dec(k)
    end
    else if s[k+1]<2
    then
    begin
    inc(s[k+1]);
    inc(k)
    end
    else
    begin
    s[k+1]:=0;
    dec(k)
    end;
    closegraph;
    readln
    end.
    Last edited by Idunna; 22-05-2006 at 23:43.

    Frumusetea trezeste sufletul la viata!
    Y!Messenger: otilia3nigma
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

Google+

Cautati logo-ul CraiovaForum?

Iata cateva variante: