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.
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
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.
AcceptLearn more