problema ... ajutor


  1. #1
    Newcomer andyxxl reprezinta o cantitate neglijabila
    Data de inscriere
    17-10-2008
    Varsta
    30
    Sex
    M
    Mesaje
    31
    Mesaje bazar
    59
    Putere Reputatie
    32
    Reputatie
    10
    Puncte CF
    0.0

    problema ... ajutor

    Doi prieteni , Valentin si Valentina, au fiecare cate n abtibilduri cu inimioare.Fiecare abtibild are forma patrata si este impartit in patru patratele identice care contin inimioare,cel putin una si cel mult 9 in fiecare patratel.Cei doi prieteni isi propun ca pe felicitarea ce o vor darui impreuna invatatoarei lor , sa lipeasca abtibilduri cu multe inimioare.Locul de pe felicitare unde se pot lipi abtibildurile nu este de forma patrata si nu incap decat doua jumatatide abtibild lipite una langa alta. Astfel ,Valentina alege un singur abtibild din cele n care-i apartin,il taie in jumatate (fie pe orizontala fie pe verticala)iar apoi ,iar apoi din cele doua jumatati obtinute , alege una singura pentru a o lipi pe felicitare.
    Dupa taiereape orizontala a unui abtibild jumatatea obtinuta se poate roti oricum si apoi se aseaza pe felicitare . In acelas timp , Valentin procedeaza la fel.Dupa lipirea pe felicitare a abtibildurilor taiate (cel al Valentinei primul si cel al lui valentin al doilea , sau invers)se pot observa 4 patratele alaturate in care sunt inimioare. Ei scriu sub fiecare patratel numarul inimioarelor desenate pe acestea si astfel se obtine un numar m ,de patru cifre (citit de la stanga la dreapta)
    Ajutatii pe cei doi prieteni sa aleaga cate un abtibild , modul in care il va taia fiecare ,si pozitia in care il va lipi pe felicitare, astfel incat , dupa scrierea sub fiecare patratel a numarului de inimioare corespunzatoare , sa se obtina cel mai mare numar m , de patru cifre , posibil.

    -------------
    imi trebuie in pseudocod .... multumesc anticipat

  2. #2
    Member alex707's Avatar alex707 reprezinta o cantitate neglijabila
    Data de inscriere
    28-09-2006
    Varsta
    43
    Sex
    M
    Mesaje
    183
    Mesaje bazar
    63
    Putere Reputatie
    0
    Reputatie
    8
    Puncte CF
    30.0
    Citat Mesaj iniţiat de andyxxl Vezi mesajele
    Doi prieteni , Valentin si Valentina, au fiecare cate n abtibilduri cu inimioare.Fiecare abtibild are forma patrata si este impartit in patru patratele identice care contin inimioare,cel putin una si cel mult 9 in fiecare patratel.Cei doi prieteni isi propun ca pe felicitarea ce o vor darui impreuna invatatoarei lor , sa lipeasca abtibilduri cu multe inimioare.Locul de pe felicitare unde se pot lipi abtibildurile nu este de forma patrata si nu incap decat doua jumatatide abtibild lipite una langa alta. Astfel ,Valentina alege un singur abtibild din cele n care-i apartin,il taie in jumatate (fie pe orizontala fie pe verticala)iar apoi ,iar apoi din cele doua jumatati obtinute , alege una singura pentru a o lipi pe felicitare.
    Dupa taiereape orizontala a unui abtibild jumatatea obtinuta se poate roti oricum si apoi se aseaza pe felicitare . In acelas timp , Valentin procedeaza la fel.Dupa lipirea pe felicitare a abtibildurilor taiate (cel al Valentinei primul si cel al lui valentin al doilea , sau invers)se pot observa 4 patratele alaturate in care sunt inimioare. Ei scriu sub fiecare patratel numarul inimioarelor desenate pe acestea si astfel se obtine un numar m ,de patru cifre (citit de la stanga la dreapta)
    Ajutatii pe cei doi prieteni sa aleaga cate un abtibild , modul in care il va taia fiecare ,si pozitia in care il va lipi pe felicitare, astfel incat , dupa scrierea sub fiecare patratel a numarului de inimioare corespunzatoare , sa se obtina cel mai mare numar m , de patru cifre , posibil.

    -------------
    imi trebuie in pseudocod .... multumesc anticipat
    Am considerat casutele timbrelor numerotate asa
    --------
    | 1 | 2 |
    --------
    | 4 | 3 |
    --------
    adica perechile de indecsi nu pot fi 1-3 sau 2-4 ... unde e explicat mai jos la conditie.

    Cam asa vad eu problema:

    input numarul n de timbre
    initialize TimbreValentin
    initialize timbrulcorect(TC),suma-intre-casutele-alaturate-corecte(S), Indexul casutei CMM(OK)(IICM), Indexul casutei UCMM(OK)(IIUCM)
    for timbru=1 to n

    initialize celmaimare (CMM), urmatorulcelmaimare (UCMM)
    initialize indexulceluimaimare(ICM), indexulurmatoruluiceluimaimare(IUCM)
    for contor = 1 to 4

    initialize timbrul n casuta[contor] (1...4)
    if CMM <= casuta[contor]

    CMM=casuta[contor]
    ICM=contor
    else if uCM <= CMM and casuta[contor]=>UCMM

    UCMM=casuta[contor]
    IUCM=contor
    endif
    endfor
    if ICM-IUCM=2 or ICM-IUCM=-2 //nu pot fi casutele 1-3 sau 2-4 ... trebuie casute alaturate

    initialize contor2(1...4)
    initialize I1=0, I2=0
    for contor2=1 to contor2

    if ICM!=contor2 and IUCM!=contor2

    if I1=0

    I1=contor2
    else

    I2=contor2
    endif
    endif
    endfor
    if casuta[I1]>casuta[I2]

    UCMM=casuta[I1]
    IUCM=I1
    else

    UCMM=casuta[I2]
    IUCM=I2
    endif
    endif
    if TC=0

    S=CMM+UCM
    TC=n
    IICM=ICM
    IIUCM=IUCM
    else if S<CMM+UCMM

    TC=n
    IICM=ICM
    IIUCM=IUCM
    endif
    endfor
    rezultatul corect la TimbrulValentin -- Timbrul TC casutele IICM si IIUCM
    repeta pentru TimbrulValentina
    rezultatul corect la TimbruValentina -- Timbrul TC1 casutele IICM1 si IIUCM1
    if TC[IICM]>TC1[IICM1]

    m(rezultat final)=TC[IICM]*1000+TC[IIUCM]*100+TC1[IICM1]*10+TC1[IIUCM1]
    else if TC[IICM]=TC1[IICM1]

    if TC[IIUCM]>TC1[IIUCM1]

    m(rezultat final)=TC[IICM]*1000+TC[IIUCM]*100+TC1[IICM1]*10+TC1[IIUCM1]
    else

    m(rezultat final)=TC1[IICM1]*1000+TC1[IIUCM1]*100+TC[IICM]*10+TC[IIUCM]
    endif
    else

    m(rezultat final)=TC1[IICM1]*1000+TC1[IIUCM1]*100+TC[IICM]*10+TC[IIUCM]
    endif
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

  3. #3
    Newcomer andyxxl reprezinta o cantitate neglijabila
    Data de inscriere
    17-10-2008
    Varsta
    30
    Sex
    M
    Mesaje
    31
    Mesaje bazar
    59
    Putere Reputatie
    32
    Reputatie
    10
    Puncte CF
    0.0
    multumesc foarte mult de ajutor

  4. #4
    Member alex707's Avatar alex707 reprezinta o cantitate neglijabila
    Data de inscriere
    28-09-2006
    Varsta
    43
    Sex
    M
    Mesaje
    183
    Mesaje bazar
    63
    Putere Reputatie
    0
    Reputatie
    8
    Puncte CF
    30.0
    Citat Mesaj iniţiat de andyxxl Vezi mesajele
    multumesc foarte mult de ajutor
    O corectie la conditiile de la ultimul if si la ramurile lui

    in loc de:
    rezultatul corect la TimbruValentina -- Timbrul TC1 casutele IICM1 si IIUCM1
    if TC[IICM]>TC1[IICM1]

    trebuia

    if S(al TC[IICM])>S(al TC1[IICM1]) - si la urmatoarele tot S.

    dar oricum cred ca ai inteles ca era vorba despre suma casutelor de la timbrul corect calculat anterior. Pseudocodul ar trebui sa-l refaci pe sintaxa care iti trebuie tie ... cum l-am scris eu e acceptabil dar sunt multe feluri de sintaxe de pseudocod daca cauti pe net ... depinde care ai facut tu.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

Google+

Cautati logo-ul CraiovaForum?

Iata cateva variante: