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

[Pascal] Jak w Pascalu zapisać wczytaną liczbę całkowitą słownie?

Grzesiek1972 31 Maj 2004 08:42 3446 8
REKLAMA
  • #1 667945
    Grzesiek1972
    Poziom 11  
    Posty: 20
    Czy może ktoś pomóc mi w kwestii programowania w Pascalu?? Chodzi o słowny zapis wczytanej liczb(y) całkowitej


    Zamykam. - arnoldziq
  • REKLAMA
  • #2 667955
    gregoryi
    Poziom 15  
    Posty: 206
    Pomógł: 2
    Ocena: 5
    Witam.
    Możesz poprzez funkcję IF np.

    If (wczytana_cyfra == 5) to przedstawienie_cyfry := pięć

    i tak dalej, jeżeli nie będziesz używał liczebników porządkowych to jest wszystko ok. Jeżeli cyfra jest dwu lub więcej znakowa np 33. musisz rozbić ją na dwie 3 i 3. Jedna trójka to trzydzieści a druga to trzy.

    Powodzenia.
  • REKLAMA
  • #4 668162
    Grzesiek1972
    Poziom 11  
    Posty: 20
    Nie ma ograniczenia, mają to być liczby całkowite
  • #5 669394
    scotch
    Poziom 28  
    Posty: 986
    Pomógł: 78
    Ocena: 148
    Gory (bez obrazy) lecz z ifami to troszeczkę przesada .Wyobraź sobie program który dla liczby z np 50 zerami robi to poprzez if . Po pierwsze zauważmy że np 2 to"dwa" a 2000 to "dwa"="tysiące" . do tego dochodzą "dwadzieścia ,dwieście itp" oraz "miliony ,tryliony" lecz to też są np. "dwa miliony" Automatycznie liczba ifów nam spada . Pozostaje nam tylko zapakować to do listy lub dzewa (oczywiście dynamicznego ) dodanie procedury wyszukującej - a jest ich też troszeczkę + opakowanie programu i jazda
  • #6 669681
    Grzesiek1972
    Poziom 11  
    Posty: 20
    Zapętliłem się na dobre, nie wiem jak "dołożyć" do tablicy drugi wymiar czyli zapis słowny jedności do następnej tablicy dziesiątek itd. W załączeniu kawałek tego programu
  • REKLAMA
  • #7 669683
    Grzesiek1972
    Poziom 11  
    Posty: 20
    Program Konwertuj; {Program konwertuje wprowadzonĄ liczb© caˆkowitĄ na
    zapis sˆowny}
    uses crt;
    Var

    T1 : array [0..9] of string;
    T2 : array [0..9] of string;
    T3 : array [0..9] of string;
    T4 : array [0..9] of string;
    T5 : array [0..5] of string;

    Liczba : longint ; {Liczba wczytana do konwersji }
    Licznik : byte ; {Ile razy zostaˆa wykonana p©tla }
    Zmienna : longint ; {Warto˜† "liczby" po dzieleniu DIV }
    Koncowka: byte ; {Warto˜† "Zmiennej" po dzieleniu MOD}
    Wynik : byte ; {Dop˘ki bez tekstu to byte}


    begin
    clrscr;
    Write('Podaj liczb© caˆkowitĄ: ');
    Readln(liczba);

    If Liczba >0 then
    begin
    koncowka := liczba mod 10;
    liczba := liczba div 10;
    end;
    Write('liczba / koncowka= ',liczba,' / ', koncowka);

    readkey
    end.
  • #8 669757
    Falco76
    Poziom 25  
    Posty: 908
    Pomógł: 41
    Ocena: 148
    Nie trzeba drugiego wymiaru tablicy. Powpisuj w tablice odpowiedzniki słowne JEDNOŚCI, DZIESIĄTEK, SETEK, TYSIĘCY ...:

    'zdefiniowanie tablic zawierających wartości słowne odpowiadające
    'elementom wartości
    varSETKI = Array("", "sto ", "dwieście ", "trzysta ", "czterysta ", _
    "pięćset ", "sześćset ", "siedemset ", "osiemset ", "dziewięćset ")

    varDZIESIATKI = Array("", "dziesięć ", "dwadzieścia ", "trzydzieści ", _
    "czterdzieści ", "pięćdziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ", _
    "osiemdziesiąt ", "dziewięćdziesiąt ")

    varNASTKI = Array("", "jedenaście ", "dwanaście ", "trzynaście ", _
    "czternaście ", "piętnaście ", "szesnaście ", "siedemnaście ", _
    "osiemnaście ", "dziewiętnaście ")

    varJEDNOSTKI = Array("", "jeden ", "dwa ", "trzy ", "cztery ", _
    "pięć ", "sześć ", "siedem ", "osiem ", "dziewięć ")

    varTYSIACE = Array("", "tysiąc ", "tysiące ", "tysięcy ")

    U ciebie to będzie Var T1=....., Var T2=....... itd.
  • REKLAMA
  • #9 669765
    Grzesiek1972
    Poziom 11  
    Posty: 20
    dzięki wielkie za pomoc

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemu zapisu liczby całkowitej w Pascalu w formie słownej. Pierwsze podejście polegało na użyciu instrukcji IF do przypisania słownego odpowiednika pojedynczych cyfr, co jest niepraktyczne dla większych liczb. Zwrócono uwagę, że dla liczb wielocyfrowych należy rozbić je na poszczególne cyfry i odpowiednio przetworzyć dziesiątki, setki, tysiące itd. Zaproponowano strukturę danych w postaci tablic (jednowymiarowych) zawierających słowne odpowiedniki jednostek, dziesiątek, setek oraz nazw wielkości takich jak tysiące, miliony, tryliony. Wskazano, że zamiast wielu instrukcji IF lepszym rozwiązaniem jest wykorzystanie tablic lub dynamicznych struktur danych oraz procedur wyszukujących, co znacznie upraszcza kod i umożliwia obsługę liczb o dowolnej długości. Przykładowy fragment programu w Pascalu pokazuje deklarację tablic i podstawową logikę dzielenia liczby na cyfry. Autor otrzymał wskazówki dotyczące implementacji i potwierdził ich przydatność.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA