Тема: Перевірка входження цифри в певне число
Є число введене з клавіатури і цифра(теж введена з клавіатури). Як зробити так, щоб перевіряло чи входить ця цифра в дане число, чи ні? Бо у мене перевіряє чи = цифра числу (на Сі)
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Перевірка входження цифри в певне число
Для відправлення відповіді ви повинні увійти або зареєструватися
Є число введене з клавіатури і цифра(теж введена з клавіатури). Як зробити так, щоб перевіряло чи входить ця цифра в дане число, чи ні? Бо у мене перевіряє чи = цифра числу (на Сі)
ну, розбираєте число на цифри, а потім порівнюєте кожну цифру з потрібною цифрою
Але ж не відомо зі скількох цифр буде складатися введене число( бо кількість його розрядів не стала)
Можна ділити число на 10 поки не "закінчиться".
Але тут є набагато простіший спосіб, скажу вам якщо таки розіб’єте число на цифри.
Можна ділити число на 10 поки не "закінчиться".
Але тут є набагато простіший спосіб, скажу вам якщо таки розіб’єте число на цифри.
itoa?
КиївОболонь
Якщо завдання дозволяе - роби ввод не числа, а строки, та розбирай символи строки у пошуку символа завданного числа. Тодi не важно, яка велич у завданого числа.
FakiNyan я мав на увазі то що сказав Itari
FakiNyan я мав на увазі то що сказав Itari
ну так і я про то, просто функція itoa переводить int в масив char'ів
Якщо є число, то ділити - швидше, займає менше місця і компактніше по коду, а ще не потребує підключення бібліотек (щоправда, швидше за все ті бібліотеки все одно будуть підключені). І в принципі безпечніше.
Але правильніше, очевидно, шукати в рядку, якщо умови дозволяють. Нащо переводити в число, якщо можна одразу все зробити?
Необов'язково вводити число в вигляді рядка — можна перевіряти ввід посимвольно (втім, це годиться лише для випадку, коли шукана цифра вводиться перед числом, а не після).
Також можна посимвольно читати число, при цьому записуючи кожну введену цифру в множину цифр числа (множину можна реалізувати як булевий масив або як число-маску з десятьма бітами — для кожної можливої цифри), а потім перевірити, чи входить шукана цифра в цю множину.
Це ж елементарно, пишемо дві рекурсивні булеві функції:
Цифра входить в ціле число,
якщо
остача від ділення цього числа на 10 дорівнює цифрі,
або
цифра входить в це число розділене на десять.
Цифра входить в десятковий запис дісного числа,
якщо
вона входить в його цілу частину,
або
в цілу частину його помноженого на 10.
Це ж елементарно, пишемо дві рекурсивні булеві функції:
Цифра входить в ціле число, якщо остача від ділення цього числа на 10 дорівнює цифрі, або цифра входить в це число розділене на десять.
Цифра входить в десятковий запис дісного числа, якщо вона входить в його цілу частину, або в цілу частину його помноженого на 10.
Пан пише на php?
Це ж елементарно, пишемо дві рекурсивні булеві функції:
[b]Цифра входить в ціле число,[/b] якщо остача від ділення цього числа на 10 дорівнює цифрі, або [b]цифра входить в це число розділене на десять. [/b]
Цифра входить в десятковий запис дісного числа, якщо вона входить в його цілу частину, або в цілу частину його помноженого на 10.
це ж рекурсія?
bunyk написав:дві рекурсивні булеві функції:
це ж рекурсія?
Га?
FakiNyan написав:bunyk написав:дві рекурсивні булеві функції:
це ж рекурсія?
Га?
ну блін
Також можна посимвольно читати число, при цьому записуючи кожну введену цифру в множину цифр числа (множину можна реалізувати як булевий масив або як число-маску з десятьма бітами — для кожної можливої цифри), а потім перевірити, чи входить шукана цифра в цю множину.
Маю на увазі щось приблизно таке:
#include<stdio.h>
#define ch2set(c) (1<<(c-'0'))
main()
{
for(;;)
{
int set=0;
char c;
printf("Введіть число: ");
do c=getchar();
while(c<'0'||c>'9');// Пропускаємо порожні символи й читаємо цифру
while(c>='0' && c<='9')
{
set|=ch2set(c);
c=getchar();
}
printf("Введіть цифру: ");
do c=getchar();
while(c<'0'||c>'9');// Пропускаємо порожні символи й читаємо цифру
if(set & ch2set(c))
printf("Цифра %c є в числі\n", c);
else
printf("Цифри %c нема в числі\n", c);
}
}
це ж рекурсія?
Ну так, якщо в означенні використовується означуваний термін - то це рекурсія. Рекурсія - це рекурсія.
Пан пише на php?
Ні, якби я писав на PHP там були б фігурні дужки. А так - то була українська з пітонячим оформленням блоків коду.
Чорт, забув ще дописати, що якщо натуральне число менше десяти не дорівнює шуканій цифрі, то цифра не входить в число. (Без цього рекурсія не закінчиться).
koala написав:Пан пише на php?
Ні, якби я писав на PHP там були б фігурні дужки. А так - то була українська з пітонячим оформленням блоків коду.
Це я про підхід до задачі.
Для відправлення відповіді ви повинні увійти або зареєструватися