Определение различных цифр, входящих в число
Задача
Какие различные цифры входят в целое число.
Решение
Описание переменных:
n
– анализируемое число;
digits
– массив различных цифр, из которых состоит число n;
q_digits
– количество цифр в массиве;
digit
– извлеченная из числа цифра;
flag
– проверка наличия цифры в массиве (если цифра в массиве уже есть, то она не будет в него добавлена.
Алгоритм решения задачи:
- Избавляемся от знака числа с помощью функции abs.
- Обнуляем количество цифр в массиве (изначально массив пуст).
- После извлечения очередной цифры числа с конца (
n mod 10
) предполагаем, что ее еще нет в массиве (flag:= false
). - Перебираются элементы массива цифр. Если текущая извлеченная цифра уже есть в нем, то меняем значение флага. Для первой извлеченной цифры данный цикл не работает, что правильно.
- Если флаг остался в значении false, то увеличиваем количество цифр в массиве на единицу и записываем очередную цифру в массив.
- Избавляемся от последней цифры числа (
n div 10
). - Цифры в массив записаны в обратном порядке. Для их вывода на экран в порядке следования в числе следует использовать вариант цикла for с downto.
Программа на языке Паскаль:
var n: longint; digits: array[1..10] of byte; q_digits: byte; digit: byte; i: byte; flag: boolean; begin write('Input number: '); readln(n); if n < 0 then n:= abs(n); q_digits:= 0; repeat digit:= n mod 10; flag:= false; for i:=1 to q_digits do if digit = digits[i] then begin flag:= true; break end; if flag = false then begin q_digits:= q_digits + 1; digits[q_digits]:= digit; end; n:= n div 10 until n = 0; for i:=q_digits downto 1 do write(digits[i]:3); readln end.
Комментарии
Зачем так трудно?
Зачем такие коды? я один не понимаю? можно же проще: 1)
2)
Ваши программы не определяют…
Ответ на Зачем так трудно? от Гость (не проверено)
Ваши программы не определяют различные цифры входящие в число. Они просто раскладывают число на цифры.
Если, например, дано 55404, то ваша программа выведет: 5, 5, 4, 0, 4. А надо вывести только 5, 4, 0.
так определяет
Ответ на Ваши программы не определяют… от gene
Не выполнено условие задачи.
То ли ночь на дворе и я чего-то не понял, или здесь не совсем правильно решена задача по условию. Надо вывести ТОЛЬКО РАЗЛИЧНЫЕ цифры. Те, что повторяются выводить не надо. Я для этого отсортировал массив и сравнивал каждый элемент массива со следующим, если они не равны, то вывести на экран.
вот мое решение: