Пример предназначен для дополнения чисел существительными, типа "n чего-то". C++:
#include <windows.h>
#include <stdio.h>
#include <clocale>int number (int tn)
{
char t1 [16], t2 [2];
memset (t2, 0, 2);
sprintf (t1, "%d", tn); t2 [0]=t1 [strlen (t1)-1]; tn=atoi (t2); if (strlen (t1)>1 && t1 [strlen (t1)-2]=='1' && tn>0 && tn<10)
return 2; else if (tn==1) return 0; else if (tn>1 && tn<5) return 1; else return 2;}
int main (int argc, char *argv[])
{
setlocale (LC_ALL, ""); char numN [3] [16]={"единица", "единицы", "единиц"};
for (int i=0; i<15; i++)
printf ("%d %s\n", i, numN [number (i)]);
printf ("\n");
system ("pause");}
Результат выполнения программы:
То же на PHP:
<?php
// Функция подстановки количественного существительного
function number ($t1)
{
$t2=substr ($t1, -1, 1);// присваиваем переменной "t2" последнюю цифру числа
// Если длина числа больше 1, предпоследняя цифра равна "1", а последняя - от 1 до 9
if (strlen ($t1)>1 && substr ($t1, -2, 1)==1 && $t2>0 && $t2<10)
return 2;// возвращаем окончание "единиц"
else if ($t2==1)// иначе, если последняя цифра - "1"
return 0;// возращаем "единица"
else if ($t2>1 && $t2<5)// иначе, если - от 2 до 4
return 1;// возвращааем "единицы"
else// во всех остальных случаях
return 2;// вернём "единиц"
}
// Массив количественных существительных
$numN=array ("единица", "единицы", "единиц");
// Напечатаем сществительные (переведя из UTF-8 в CP866) для чисел от 0 до 14
for ($i=0; $i<165; $i++)
print $i." ".iconv ("UTF-8", "CP866", $numN [number ($i)])."\n";
?>
И JavaScript:
<script type="text/javascript">
//<![CDATA[
// Функция подстановки количественного существительного
function number (t1)
{
t1=t1.toString ();// приводим переменную к строковому типу
var t2=t1.substr (t1.length-1, 1);// присваиваем переменной "t2" последнюю цифру числа
t2=parseInt (t2);// в целочисленный тип
// Если длина числа больше 1, предпоследняя цифра равна "1", а последняя - от 1 до 9
if (t1.length>1 && t1.substr (t1.length-2, 1)=="1" && t2>0 && t2<10)
return 2;// возвращаем окончание "единиц"
else if (t2==1)// иначе, если последняя цифра - "1"
return 0;// возращаем "единица"
else if (t2>1 && t2<5)// иначе, если - от 2 до 4
return 1;// возвращааем "единицы"
else// во всех остальных случаях
return 2;// вернём "единиц"
}
// Массив количественных существительных
var numN=new Array ("единица", "единицы", "единиц");
// Напечатаем сществительные для чисел от 0 до 14
for (var i=0; i<15; i++)
document.write (i+" "+numN [number (i)]+"<br />\n");
//]]>
</script>
|