Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Pascal->Delphi] Permutacje w Pascalu chcę przełożyć na Delphi

elly1337 16 Nov 2011 02:17 1720 8
  • #1
    elly1337
    Level 15  
    Witam, mam taki kod w Pascalu, który robi permutacje:
    P(n,r) = n! / (n-r)!


    Code: pascal
    Log in, to see the code


    Chciałbym tym operować w Delphi 7, które trochę ogarniam.



    Chciałbym, by N (czyli zmienna S) czytane było z Edit1, a R (czyli zmienna S2) w Edit2. Permutacje mają być zapisywane do Listbox'a, a wszystko ma zacząć działać po kliknięciu na Button. Oto co udało mi się do tej pory napisać:


    Code: delphi
    Log in, to see the code


    Dalej niestety sobie nie mogę poradzić. Proszę o pomoc :/


    // EDIT: Zmieniłem Listbox'a na Memo, niby działa, ale pętla się nie zatrzymuje
  • #2
    cepilek
    Level 26  
    Co to są "premutacje"? Jakoś nie mogę skojarzyć.
  • #3
    elly1337
    Level 15  
    Dobrze, poprawiłem. Myślałem, że po polsku to "premutacja", a nie "permutacja", z racji że na wielu stronach jest napisane z błędem.
  • #4
    marcinj12
    Level 40  
    Nie zagłębiając się w szczegóły na pierwszy rzut oka widać, że pętla while... sprawdza dwa warunki dla zmiennych S i S2, które wewnątrz pętli nie mają okazji się zmienić, bo nigdzie do nich nic nie przypisujesz. Dlatego pętla chodzi w nieskończoność. Zabrakło Ci odpowiednika ReadLn(S); i ReadLn(S2);
  • #5
    elly1337
    Level 15  
    A określenie zmiennej S w Edit1.Text nie może zastępować ReadLn(S)?
  • #6
    marcinj12
    Level 40  
    elly1337 wrote:
    A określenie Edit1.Text := S; nie robi za ReadLn(S)?

    Wręcz przeciwnie: do kontrolki Edit1 przypisujesz wartość zmiennej S.
    Powinno być: S := Edit1.Text ; jednak obawiam się, że umieszczenie tego w pętli nie da Ci możliwości na wpisanie tam czegokolwiek, bo zablokuje się GUI. W ogóle moim zdaniem jak robisz to w formie graficznej, tego warunku w ogóle nie powinno tam być, na konsoli było to robione żeby program się nie kończył po jednym przebiegu.
  • #7
    elly1337
    Level 15  
    Ehh, to jak mam sobie z tym poradzić :(
  • Helpful post
    #8
    arnoldziq
    Moderator of Programming
    1. Zrób nową formę.
    2. Wstaw na formę 3 Edit-y. (Edit1, Edit2, Edit3)
    3. Wstaw na formę 1 Memo. (Memo1)
    4. Wstawiasz jeden przycisk. (Button1)
    5. Zmodyfikuj swoją procedurę liczącą w ten sposób :
    Code: delphi
    Log in, to see the code

    6. Pod przyciskiem wpisujesz kod który :
    - Pobiera dane do obliczeń :
    Code: delphi
    Log in, to see the code

    - Wywołuje funkcję z odpowiednimi parametrami.
    Code: delphi
    Log in, to see the code


    Nie wiem, czy ta twoja procedura P działa poprawnie, ale tak to powinno wyglądać w Delphi.
  • #9
    elly1337
    Level 15  
    Działa idealnie. :D