Problem z uruchomieniem "gotowca"

0

Witam.
Wklejając kod do konsoli z tej strony:
Zapis słowny liczby
Po naciśnięciu "Run" wyświetla mi się puste okno.Dopiero zaczynam proszę o odpowiedź.

0

Problemem tego początkującego jest nadanie wątkowi bzdurnego tytułu. Tu każdy ma problem :]

REGULAMIN: Temat wątku powinien w sposób sensowny i w miarę wyczerpujący opisywać Twój problem. Tak, aby potem wyszukiwarki nie miały kłopotu ze znalezieniem szukanego tekstu. Wątki opatrzone jednowyrazowym tematem, lub zdaniem nie opisującym zupełnie problemu, będą usuwane.

PRZECZYTAJ: Jak tytułować wątki na forum?

Jeden temat "anonimowy" wylądował już w koszu...

  1. Wymyśl i podaj jaki ma być ten sensowny temat wątku
  2. Problemy początkującego do działu newbie z tagiem 'delphi'
0

Funkcja pod tym adresem jest niekompletna, bo nie tłumaczy liczb poniżej 1000. Poza tym najpewniej nie zatrzymujesz konsoli przez Readln więc Ci ona znika. A w przypadku tej funkcji należy podstawić jej wynik do zmiennej i dopiero ją wyświetlić, bo inaczej faktycznie nic nie mamy na ekranie. Podejrzewam, że to przez kombinacje z Trimem, ale nie chciało mi się debugować. Dodatkowo dododałem prostą funkcję OEMWrite aby konwertowało prawidłowo polskie znaki diakrytyczne (potrzebna do tego jest funkcja AnsiToOEM z modułu Windows, który został dodany do sekcji uses). I następnym razem lepiej tytułuj swój wątek oraz poczytaj kompendium na stronie 4p, to nie będziesz miał problemów z podstawami.

program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

function OEMWrite(AnsiText : string) : string;
var
  S, D : PChar;
begin
  Result := '';
  if AnsiText <> '' then
  begin
    S := PChar(AnsiText);
    GetMem(D, Length(S));
    AnsiToOEM(S, D);
    Result := D;
  end;
end;

function LiczbaSlownie(Liczba : Int64) : string;

  function Slow(t : string) : string;
  const
    {Nazwy grupy jedności}
    J : array['0'..'9'] of string[20] =
      ('', ' jeden', ' dwa', ' trzy', ' cztery', ' pięć', ' sześć', ' siedem', ' osiem', ' dziewięć');

    {Nazwy liczb z zakresu 10..19. Wyjątki w języku polskim}
    N : array[10..19] of string[20] =
      (' dziesięć', ' jedenaście', ' dwanaście', ' trzynaście', ' czternaście', ' piętnaście', ' szesnaście', ' siedemnaście', ' osiemnaście', ' dziewiętnaście');
    {Nazwy grupy dziesiątek}
    D : array['0'..'9'] of string[20] =
      ('', '', ' dwadzieścia', ' trzydzieści', ' czterdzieści', ' pięćdziesiąt', ' sześćdziesiąt', ' siedemdziesiąt', ' osiemdziesiąt', ' dziewięćdziesiąt');
    {Nazwy grupy setek}
    S : array['0'..'9'] of string[20] =
      ('', ' sto', ' dwieście', ' trzysta', ' czterysta', ' pięćset', ' sześćset', ' siedemset', ' osiemset', ' dziewięćset');
  begin
    Result := '';
    case t[2] of
      '1' : Result := S[t[1]] + N[StrToInt(t[2] + t[3])];
      '0', '2'..'9' : Result := S[t[1]] + D[t[2]] + J[t[3]];
    end;
  end;

const
  {Nazwy grup}
  G : array[0..7, 1..3] of string[20] =
    (('', '', ''),
    (' tysiąc', ' tysiące', ' tysięcy'),
    (' milion', ' miliony', ' milionów'),
    (' miliard', ' miliardy', ' miliardów'),
    (' bilion', ' biliony', ' bilionów'),
    (' biliard', ' biliardy', ' biliardów'),
    (' trylion', ' tryliony', ' trylionów'),
    (' tryliard', ' tryliardy', ' tryliardów'));

var
  sl, t1, t : string;
  i, k, dl : Byte;
begin
  t := IntToStr(Liczba);
  dl := Length(t);
  for i := 0 to (dl - 1) div 3 do
  begin
    t1 := Copy(t, Length(t) - 2, 3);
    Delete(t, Length(t) - 2, 3);

    {Wyrównanie do 3 cyfr}
    for k := 1 to 3 - Length(t1) do
      t1 := '0' + t1;

    {Jeżeli wszystkie 3 to 0 to nie ma po co dodawać nazwy grupy}
    if t1 = '000' then
      Continue;

    {Przypadek liczby pojedynczej}
    if (t1 = '001') then
      sl := Slow(t1) + G[i, 1] + sl
    else
      {Liczby kończące się na 2, 3 lub 4 oprócz 12, 13 i 14. Ach ten język polski}
      if (t1[3] in ['2'..'4']) and (t1[2] <> '1') then
        sl := Slow(t1) + G[i, 2] + sl
      else
        sl := Slow(t1) + G[i, 3] + sl;
  end;
  Result := Trim(sl);
end;

var
  S : string;
begin
  S := OEMWrite(LiczbaSlownie(58));
  Writeln(S);
  Readln;
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1