Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите составить алгоритм

80K
13 мая 2012 года
Dr.Painkiller
6 / / 16.04.2012
Возраст чего-либо обычно выглядит так: "3 года" или "21 год" или "100 лет"... сделать алгоритм, который определяет правильное слово для единиц измерения в зависимости от возраста.
80K
13 мая 2012 года
Dr.Painkiller
6 / / 16.04.2012
есть предположение что нужно сравнивать по первому регистру числа .....
290
13 мая 2012 года
Patr1ot
458 / / 09.02.2008
Наверно придется вручную создать транслит где 1 = год, и сравнивать потом числа, не так уж много делофф если учесть что средний возраст жизни на планете земля 50-60 лет.
53K
13 мая 2012 года
fffixed
23 / / 29.12.2011
Получается, что слово "год" используется, если возраст кончается на цифру 1, "года" - на цифры с 2 по 4, "лет" - на все остальные, это общее правило работает за исключением лет с 11 по 14, для которых также используется "лет". Исходя из этого можно набросать следующее:


Код:
//функция для опеределения двух последних цифр в возрасте (для распознавания 11 - 14)
//определяется остатком от деления числа на 100
int LastTwoDigits(int ages) {return ages % 100;}

//функция для определения последней цифры в возрасте
//определяется остатком от деления числа на 10
int LastDigit(int ages) {return ages % 10;}

//определяем нужное слово:
int last_two = LastTwoDigits(ages);
if ((last_two >= 11) && (last_two <= 14)) cout << "лет";
else {
   int last = LastDigit(ages);
   if (last == 1) cout << "год";
   else if ((last >= 2) && (last <= 4)) cout << "года";
        else cout << "лет";
}
Должно работать не только для возрастов людей, но и исторических построек, государств, вселенной))
80K
13 мая 2012 года
Dr.Painkiller
6 / / 16.04.2012
Цитата: fffixed
Получается, что слово "год" используется, если возраст кончается на цифру 1, "года" - на цифры с 2 по 4, "лет" - на все остальные, это общее правило работает за исключением лет с 11 по 14, для которых также используется "лет". Исходя из этого можно набросать следующее:


Код:
//функция для опеределения двух последних цифр в возрасте (для распознавания 11 - 14)
//определяется остатком от деления числа на 100
int LastTwoDigits(int ages) {return ages % 100;}

//функция для определения последней цифры в возрасте
//определяется остатком от деления числа на 10
int LastDigit(int ages) {return ages % 10;}

//определяем нужное слово:
int last_two = LastTwoDigits(ages);
if ((last_two >= 11) && (last_two <= 14)) cout << "лет";
else {
   int last = LastDigit(ages);
   if (last == 1) cout << "год";
   else if ((last >= 2) && (last <= 4)) cout << "года";
        else cout << "лет";
}
Должно работать не только для возрастов людей, но и исторических построек, государств, вселенной))





небольшое уточнение - с 11 по 19 лет. Нельзя ведь сказать что мне стукнуло 15 или 16 год!
Тогда код немного изменится

53K
13 мая 2012 года
fffixed
23 / / 29.12.2011
я тоже сначала думал про 11-19, но посмотрите, случаи с 15 по 19 ведь нормально обработаются через основную else-ветвь, которая проверяет только последнюю цифру, и им припишется "лет"
80K
13 мая 2012 года
Dr.Painkiller
6 / / 16.04.2012
спасибо попробовал, компилю и в CODE Block"e лезут баги. Но в любом случае спасибо!
59K
13 мая 2012 года
Slav2
2 / / 19.04.2010
Я думаю мы говорим год, года или лет в зависимости от того, на что заканчивается слово, по моему две буквы словесного представления числа. Алгоритм должен сначала переводить число в слово, а уже потом прибавлять определение числа.
53K
13 мая 2012 года
fffixed
23 / / 29.12.2011
Цитата: Slav2
Я думаю мы говорим год, года или лет в зависимости от того, на что заканчивается слово, по моему две буквы словесного представления числа. Алгоритм должен сначала переводить число в слово, а уже потом прибавлять определение числа.



По-моему в задании говорится только о словоформах для указания точного возраста кого-либо или чего-либо, случаи вроде "к своему третьему году" или "на дворе стоял 1957ой год" под задание не подпадают и являются задачей куда более сложного синтаксического анализа

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог