Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
82
Task/Number-names/Pascal/number-names.pas
Normal file
82
Task/Number-names/Pascal/number-names.pas
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
program NumberNames(output);
|
||||
|
||||
const
|
||||
smallies: array[1..19] of string =
|
||||
('one', 'two', 'three', 'four', 'five', 'six',
|
||||
'seven', 'eight', 'nine', 'ten', 'eleven',
|
||||
'twelve', 'thirteen', 'fourteen', 'fifteen',
|
||||
'sixteen', 'seventeen', 'eighteen', 'nineteen');
|
||||
tens: array[2..9] of string =
|
||||
('twenty', 'thirty', 'forty', 'fifty',
|
||||
'sixty', 'seventy', 'eighty', 'ninety');
|
||||
|
||||
function domaxies(number: int64): string;
|
||||
const
|
||||
maxies: array[0..5] of string =
|
||||
(' thousand', ' million', ' billion',
|
||||
' trillion', ' quadrillion', ' quintillion');
|
||||
begin
|
||||
domaxies := '';
|
||||
if number >= 0 then
|
||||
domaxies := maxies[number];
|
||||
end;
|
||||
|
||||
function doHundreds( number: int64): string;
|
||||
begin
|
||||
doHundreds := '';
|
||||
if number > 99 then
|
||||
begin
|
||||
doHundreds := smallies[number div 100];
|
||||
doHundreds := doHundreds + ' hundred';
|
||||
number := number mod 100;
|
||||
if number > 0 then
|
||||
doHundreds := doHundreds + ' and ';
|
||||
end;
|
||||
if number >= 20 then
|
||||
begin
|
||||
doHundreds := doHundreds + tens[number div 10];
|
||||
number := number mod 10;
|
||||
if number > 0 then
|
||||
doHundreds := doHundreds + '-';
|
||||
end;
|
||||
if (0 < number) and (number < 20) then
|
||||
doHundreds := doHundreds + smallies[number];
|
||||
end;
|
||||
|
||||
function spell(number: int64): string;
|
||||
var
|
||||
scaleFactor: int64 = 1000000000000000000;
|
||||
maxieStart, h: int64;
|
||||
begin
|
||||
spell := '';
|
||||
maxieStart := 5;
|
||||
if number < 20 then
|
||||
spell := smallies[number];
|
||||
while scaleFactor > 0 do
|
||||
begin
|
||||
if number > scaleFactor then
|
||||
begin
|
||||
h := number div scaleFactor;
|
||||
spell := spell + doHundreds(h) + domaxies(maxieStart);
|
||||
number := number mod scaleFactor;
|
||||
if number > 0 then
|
||||
spell := spell + ', ';
|
||||
end;
|
||||
scaleFactor := scaleFactor div 1000;
|
||||
dec(maxieStart);
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
writeln(99, ': ', spell(99));
|
||||
writeln(234, ': ', spell(234));
|
||||
writeln(7342, ': ', spell(7342));
|
||||
writeln(32784, ': ', spell(32784));
|
||||
writeln(234345, ': ', spell(234345));
|
||||
writeln(2343451, ': ', spell(2343451));
|
||||
writeln(23434534, ': ', spell(23434534));
|
||||
writeln(234345456, ': ', spell(234345456));
|
||||
writeln(2343454569, ': ', spell(2343454569));
|
||||
writeln(2343454564356, ': ', spell(2343454564356));
|
||||
writeln(2345286538456328, ': ', spell(2345286538456328));
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue