Как разбить число на цифры, сложить их и вывести среднее значение?
В переменной:
$number = 123;
Как получить среднее 2?
т.е. (1+2+3)/3 = 2.
- Вопрос задан более трёх лет назад
- 5028 просмотров
Комментировать
Решения вопроса 2
$digits = str_split($number); $average = array_sum($digits) / count($digits);
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Антон @anton99zel Автор вопроса
29а класс средней школы №7
Сделал так:
Разбил число на массив, сложил цифры, получил количество цифр, поделил на это количество сумму, округлил)
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- PHP
- +1 ещё
Как передать все товары в шаблон карточки товара?
- 1 подписчик
- 3 минуты назад
- 1 просмотр
Как разбить число на цифры и записать каждую в отдельную переменную?
Пишу скрипт для локальной задачи. Надо разбить вводимое по запросу число на цифры и потом работать с каждым числом отдельно.
echo $chislo | sed -r ‘s/(.)/&\n/g’ > ciphry.txt
Я разбиваю вводимое число на цифры и сохраняю их в отдельный файл, но потом мне еще надо сделать каждую из этих цифр переменной. Как это делается? Кодирую впервые.
Mr_Hydus
25.05.22 18:22:11 MSK
- Ответить на это сообщение
- Ссылка
Как разделить число на цифры java
Чтобы разделить число на цифры в Java , можно использовать следующий код:
int number = 12345; int temp = number; ListInteger> digits = new ArrayList<>(); while (temp > 0) digits.add(temp % 10); temp /= 10; > Collections.reverse(digits); System.out.println(digits); // => [1, 2, 3, 4, 5]
- В этом примере мы начинаем с переменной number , которая содержит число, которое мы хотим разделить на цифры.
- Затем мы создаем временную переменную temp , которая инициализируется значением number .
- Мы также создаем список digits , в котором мы будем хранить разделенные цифры.
- Затем мы запускаем цикл while , который продолжается до тех пор, пока temp больше нуля.
- Внутри цикла мы добавляем остаток от деления temp на 10 (т.е. последнюю цифру числа) в список digits , а затем делим temp на 10, чтобы удалить последнюю цифру.
- Наконец, мы используем метод Collections.reverse() для переворачивания порядка цифр в списке (потому что мы добавляли их в обратном порядке), а затем выводим список на экран.
Разбить число на цифры
Ну можно немножко посидеть и такое запилить, но задача была четкая, 3хзначное число, разложить на 3 отдельных, задача выполнена, выдумывать что-то не собираюсь. Завтра может попробую.
Вот, на любое целое или дробное, отрицательное или неотрицательное число
// Разбиение числа на цифры
#include #include using std::cout; using std::cin; using std::endl; using std::ends; using std::string; bool check4(string x) // проверка на пропущенный ноль в начале дробного числа < if ((static_cast(x[0]) == 44) // если знак "," первый, ИЛИ || (static_cast(x[0]) == 46) // если знак "." первый, ИЛИ || ((static_cast(x[0]) == 43 || static_cast(x[0]) == 45) // если "+" ИЛИ "-" первый знак, И && (static_cast(x[1]) == 44) || (static_cast(x[1]) == 46))) // "." ИЛИ "," второй знак < return true; // если обнаружена точка-запятая без предшествующей цифры, то истина, что ноль пропущен. >else return false; > bool check3(string x) // проверка количества точек-запятых в дробном числе < unsigned int count = 0; for (int i = 0; x[i]; i++) < if (static_cast(x[i]) == 44 // знак "," || static_cast(x[i]) == 46) // знак "." < count++; >> if (count > 1) // если в числе больше одной точки-запятой, то ошибка return false; else return true; > bool check2(string x) // Проверка корректности остальных знаков < for (int i = 1; x[i]; i++) if (!(static_cast(x[i]) == 44 // знак "," || static_cast(x[i]) == 46 // знак "." || (static_cast(x[i]) >= 48 // цифры && static_cast(x[i]) return true; > bool check1(string x) // Проверка корректности первого знака < if ((static_cast(x[0]) >= 43 // знаки "+" "-" "." "," && static_cast(x[0]) <= 46) || (static_cast(x[0]) >= 48 // цифры && static_cast(x[0]) else return false; // если обнаружен знак - не цифра, не плюс-минус и не точка-запятая, то ошибка > void frag(string x) < cout << "Ваше число состоит из цифр: "; if(check4(x)) // проверка на пропущенный ноль перед дробью cout << "0" << ends; // если пропущен, печатаем ноль for (int i = 0; x[i]; i++) < if (static_cast(x[i]) >= 48 // печатаем только цифры && static_cast(x[i]) > > int main() < setlocale(LC_CTYPE, ".1251"); string x; while (true) < cout >
Slonopotam, ты решал задачу, исходя из некорректно понятого условия. Изначально было написано: Помогите разбить 3 значное число на цифры. Число! Т.е. предполагается, что число существует уже в виде экземпляра числового типа (int, double и родственные типы), а не в виде строки символов.
(1) Не стоит хардкодить коды цифр и знаков. Например:
= 48 // цифры && static_cast(x[0])
в другой кодовой таблице этим кодам могут соответствовать совсем другие символы. Более переносимый вариант:
= '0' && x[0]
(Полностью переносимый вариант — это сравнение с каждой из цифр в отдельности, поскольку теоретически возможны кодовые таблицы, в которых цифры не идут единым блоком. Но я с такой экзотикой не встречался. А вот с буквами национальных алфавитов такое встречается очень часто.)
(2) С десятичным разделителем всё ещё веселее. Правильным было бы запрашивать у операционной системы какой символ используется для десятичного разделителя в локали, действующей в момент запуска программы.
(3) В программе не учитывается возможность ввода чисел в «научной» форме. Например, .758e2 — это 75.8 . Подробности см. в википедии.
Так что в плане универсальности твоего решения ты немного погорячился.
Но попытка засчитывается. +1 к карме ))
