Заметки

Функция для определения окончания слова по числительному (1 день, 2 дня, 5 дней)

php:

/**
 * Функция для определения окончания слова по числительному (1 день, 2 дня, 5 дней)
 *
 * @param $num - число integer
 * @param $words - массив с 3-мя словами
 * @return mixed
 */
function num2word($num, $words)
{
    $num = $num % 100;
    if ($num > 19) {
        $num = $num % 10;
    }
    switch ($num) {
        case 1: {
            return($words[0]);
        }
        case 2: case 3: case 4: {
        return($words[1]);
    }
        default: {
            return($words[2]);
        }
    }
}
echo num2word($days, array('день', 'дня', 'дней'));

 

golang c тестом:

package main

import (
	"fmt"
)

func main() {
	yearsWords := map[int]string{0: "год", 1: "года", 2: "лет"}
	//yearsWords := map[int]string{0: "день", 1: "дня", 2: "дней"}

	for i := 0; i <= 100; i++ {
		correctYearWord := num2word(i, yearsWords)
		fmt.Println(i, " - ", correctYearWord)
	}
}

func num2word(num int, words map[int]string) string {
	num = num % 100

	if num > 19 {
		num = num % 10
	}

	var word string

	if num == 1 {
		word = words[0]
	} else if num == 2 || num == 3 || num == 4 {
		word = words[1]
	} else {
		word = words[2]
	}

	return word
}
Афоризм дня:
Кто не совершает несправедливости – почтенен; но более чем вдвое достоин почета тот, кто и другим не позволяет совершать несправедливости. (618)

1 year ago

отлично!

9 months ago

Не работает данный код. 8 дня 12 день 16 дней

8 months ago

спасибо, проверю позже

Leave a reply