logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak działa program zamieniający liczbę na słowa w Turbo Pascalu?

lipek86 02 Gru 2006 16:41 1712 1
REKLAMA
  • #1 3286531
    lipek86
    Poziom 21  
    Posty: 509
    Pomógł: 36
    Ocena: 26
    Mam taki program:

    
    Program KL4;
    
    Uses
      Crt;
    
    Procedure LiczbaSlownie(n: LongInt);
    Begin
      If n > 9 Then LiczbaSlownie(n Div 10);
      Case n Mod 10 Of
        0: Write('*zer');
        1: Write('*jed');
        2: Write('*dwa');
        3: Write('*trz');
        4: Write('*czt');
        5: Write('*pie');
        6: Write('*sze');
        7: Write('*sie');
        8: Write('*osi');
        9: Write('*dzi');
      End
    End;
    
    Var
      x : LongInt;
    
    Begin
      ClrScr;
      Write ('X= ');
      ReadLn(x);
      WriteLn ('Wynik');
      LiczbaSlownie(x);
      Write('*');
      ReadKey
    End.
    


    Wynikiem działania programu, po wpisaniu np. 1234 jest:
    
    Wynik:
    *jed*dwa*trz*czt*
    


    Czy ktoś mógłby krok po kroku wytłumaczyć działanie tego programu?
  • REKLAMA
  • Pomocny post
    #2 3287042
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam

    Program działa na zasadzie rekurencji.

    Procedura LiczbaSlownie wywoływana jest tyle razy ile cyfr ma liczba.

    Dla liczby np. 123 będzie to nastepująco

    1. wywołana jest procedure w programie głównym z parametrem 123.
    2. Jeśli liczba jest wieksza od 9 to wywolywana jest ta sama funkcja ale już z parametrem 123 div 10 czyli 12.
    a) Jeśli liczba jest wieksza od 9 to wywolywana jest ta sama funkcja ale już z parametrem 12 div 10 czyli 1.
    - liczba juz nie jest wieksza od 9 wiec wyswietlamy odpowiedni napis dzieki konstrukcji case (1 mod 10=1 i wyswietlamy *jed) i wychodzimy z funkcj
    b) funkcja sie skonczyla wiec wyswietlamy odpowiedni napis dzieki konstrukcji case (12 mod 10=2 i wyswietlamy *dwa) i wychodzimy z funkcj
    3. funkcja sie skonczyla wiec wyswietlamy odpowiedni napis dzieki konstrukcji case (123 mod 10=3 i wyswietlamy *trz) i wychodzimy z funkcj

    Jesli nie nie zrozumiales to poczytaj sobie dokladnie o rekurencji.
REKLAMA