[go: up one dir, main page]

Menu

[897c37]: / mlib / lib / fraction.lpc  Maximize  Restore  History

Download this file

52 lines (42 with data), 1.4 kB

/*
 * lib/fraction.c
 * Copyright Shattered World mudlib
 *
 * Fraction-related functions.
 */

inherit "RO/Servers";

array Numbers = [
	"one", "two", "three", "four", "five", "six", "seven", "eight",
	"nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
	"fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
	"twenty", "thirty", "forty", "fifty", "sixty", "seventy",
	"eighty", "ninety", "hundred", "thousand", "million"
	];

array Replacers = [
	"first", "half", "third", "fourth", "fifth", "sixth", "seventh",
	"eighth", "ninth", "tenth", "eleventh", "twelfth", "thirteenth",
	"fourteenth", "fifteenth", "sixteenth", "seventeenth",
	"eighteenth", "nineteenth", "twentieth", "thirtieth",
	"fortieth", "fiftieth", "sixtieth", "seventieth", "eightieth",
	"ninetieth", "hundredth", "thousandth", "millionth"
	];

reset()
{
}

/* For a negative fraction only Num can be negative. */
string
fraction_to_english(int Num,int Den) 
{
int Last;
string StrDen, StrNum;
array ArrDen;
    if (Den < 2)
	return ENGLISH->int_to_english(Num, -1);
    StrNum = ENGLISH->int_to_english(Num, -1);
    StrDen = ENGLISH->int_to_english(Den, -1);

    ArrDen = explode(StrDen, " ");
    Last = sizeof(ArrDen) - 1;

    ArrDen[Last] = Replacers[index(Numbers, ArrDen[Last])];

    StrDen = implode(ArrDen, " ");
    return StrNum + "-" + (Num > 1 ? StrDen + "s": StrDen);
}