Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Number Names

program NumberNames; // COPY INTO LAZARUS TO RUN

uses sysutils;

var
  number: string;
  pos, digitCounter: integer;
  digitNames: array [0..19] of string = ('', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen');
  tens: array [0..9] of string = ('', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety');
  thousands: array [0..2] of string = ('', ' thousand ', ' million ');
  numberName: array [1..99] of string;

begin
  writeln('Enter a number between 1 and 1 million');
  readln(number);
  while length(number) mod 3 <> 0 do
    number := concat('0', number);
  pos := length(number);
  digitCounter := 1;
  while pos > 0 do
    begin
      if digitCounter mod 3 = 1 then
        numberName[pos] := digitNames[strtoint(number[pos])]
      else if digitCounter mod 3 = 2 then
        begin
          if number[pos] = '1' then
            numberName[pos + 1] := digitNames[strtoint(concat(number[pos], number[pos + 1]))]
          else
            begin
              numberName[pos] := tens[strtoint(number[pos])];
              if (numberName[pos] <> '') and (numberName[pos + 1] <> '') then
                numberName[pos] := concat(numberName[pos], ' ');
            end;
        end
      else
        begin
          numberName[pos] := digitNames[strtoint(number[pos])];
          if numberName[pos] <> '' then
            numberName[pos] := concat(numberName[pos], ' hundred ');
          if (numberName[pos] <> '') or (numberName[pos + 1] <> '') or (numberName[pos + 2] <> '') then
            numberName[pos + 2] := concat(numberName[pos + 2], thousands[(digitCounter div 3) - 1]);
        end;
      pos -= 1;
      digitCounter += 1;
    end;
  for pos := 1 to length(number) do
    write(numberName[pos]);
  readln;
end.

Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.