2 / 2 / 0
Регистрация: 19.03.2019
Сообщений: 54
1

Написать функцию, которая на вход принимает число, а на выходе выдает слово в падеже, соответствующем указанному числу

12.06.2019, 19:40. Показов 8279. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Нужно написать функцию, которая на вход принимает число, а на выходе выдает слово телефон в падеже, соответствующем указанному количеству. Например: «15 телефонов», «21 телефон», «32 телефона».

Я так понял, надо брать последнюю цифру из числа и сравнивать её с определенными цифрами.
Если последняя цифра числа = 1, то выводить num + " телефон".
Если последняя цифра числа = 2, то выводить num + " телефона".
В остальных случаях выводить num + " телефонов".

Только вот не знаю, как взять последнюю цифру из числа и сравнить его с 1, 2.

Подскажите, пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2019, 19:40
Ответы с готовыми решениями:

Написать функцию, которая принимает на вход строку и возвращает количество слов в нем
Мне нужно написать функцию, которая принимает на вход строку и возвращает количество слов в нем....

Написать функцию, которая принимает на вход две матрицы, состоящие из нулей и единиц
Помогите, пожалуйста, написать функцию, которая принимает на вход две матрицы, состоящие из нулей и...

Найти сумму четных чисел; Написать функцию, которая принимает на вход строку и заменяет все нечетные элементы
Ребята, помогите, пожалуйста, решить две задачи: 1. В файл записана последовательность целых чисел...

Написать функцию, которая принимает целое число
Написать функцию, которая принимает целое число и возвращает из заданного списка с подсписками и...

8
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
12.06.2019, 19:46 2
Олег971, а если 12 будет, то у тебя получится 12 телефона.
0
2 / 2 / 0
Регистрация: 19.03.2019
Сообщений: 54
12.06.2019, 19:51  [ТС] 3
Orakul, Ой, да... Ну числа до 10 пока можно отпустить, там можно будет отдельный if сделать для двойки.

А вот начиная с 10 и до 100:
Если последняя цифра числа = 1, то выводить num + " телефон".
В остальных случаях выводить num + " телефонов".

А потом снова надо что-то делать, чтобы не было "124 телефонов"
0
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
12.06.2019, 19:55 4
let quantity = '12';
console.log(quantity[1]); // => '2'
0
2 / 2 / 0
Регистрация: 19.03.2019
Сообщений: 54
12.06.2019, 19:57  [ТС] 5
Orakul, А при 148 будет 4 вместо 8... Надо всегда именно последнюю цифру числа выбирать
0
the hardway first
Эксперт JS
2461 / 1836 / 906
Регистрация: 05.06.2015
Сообщений: 3,603
13.06.2019, 09:10 6
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const pluralize = (w => (count, word) => {
  let key = 'one';
 
  if (count > 4 && count < 21) {
    key = 'many';
  } else {
    // const lastDigit = parseInt(count.toString().slice(-1));
    const lastDigit = count % 10;
 
    if (lastDigit === 1) {
      key = 'one';
    } else if (lastDigit > 1 && lastDigit < 5) {
      key = 'some';
    } else {
      key = 'many';
    }
  }
 
  return w[word] ? w[word][key] : word;
})({
  'телефон': {
    one: 'телефон',
    some: 'телефона',
    many: 'телефонов'
  }
});
 
[0, 1, 2, 5, 15, 21, 32, 108, 142, 256].forEach(count => {
  console.log(`${count} ${pluralize(count, 'телефон')}`)
});
1
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
13.06.2019, 18:06 7
j2FunOnly, приветствую

До кучи добавлю - https://codepen.io/qwerty_wasd/pen/WqQvwW
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const decl = (count = 1) => count + [
  ` телефонов`,
  ` телефона`,
  ` телефон`
][
  +count === 1 ?
  2 : Math.round(2 / ( + ('' + count).substr(-1) || 10)) * !(('' + count).substr(-2, 1) == 1)
];
//check it
[1,2,5,21,100].forEach(c => console.log(decl(c)));
/*
"1 телефон"
"2 телефона"
"5 телефонов"
"21 телефон"
"100 телефонов"
*/
1
74 / 29 / 4
Регистрация: 16.10.2017
Сообщений: 95
13.06.2019, 21:05 8
Javascript
1
2
3
4
5
6
7
8
const suf = function(s){
  let m = s.match(/^\d*(\d)\s+[а-яё]+/i);
  if(m && '234'.includes(m[1])) return m[0]+'а';
  if(m && '567890'.includes(m[1])) return m[0]+'ов';
  return s;
};
console.log(suf("100 телефон"));
console.log(suf("4 стол"));
0
14 / 10 / 5
Регистрация: 07.07.2012
Сообщений: 171
15.06.2019, 20:48 9
Олег971, для строк можно так:
Javascript
1
2
let str = '125';
console.log(str[str.length - 1])  =>  // 5
для переменных типа Number так:
Javascript
1
2
let n = 125;
console.log(n.toString().slice(-1)); => // 5
А чтобы не гонять просто так такты процессора то так:
Javascript
1
2
let n = 128;
console.log(n % 10); => // 8
0
15.06.2019, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2019, 20:48
Помогаю со студенческими работами здесь

Написать функцию, которая принимает на вход коэффициенты уравнения кривой 2-го порядка и возвращает тип кривой
Здравствуйте! Помогите пожалуйста! Очень срочно! Написать функцию, которая принимает на вход числа...

Написать функцию, которая принимает число, а возвращает его факториал
Написать функцию, в которую передают число х, а возвращает х! (факториал этого числа)(Консольное...

Написать функцию, которая принимает число и определяет, является ли оно простым
1. Написать функцию, которая принимает число и возвращает: - true - если переданное число...

Написать функцию incPtr, которая принимает указатель на int, и увеличивает число на 1
здравствуйте есть такая задача Напиши ф-цию incPtr, которая принимает указатель на int, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru