1 Востаннє редагувалося КиївОболонь (01.11.2015 14:57:52)

Тема: Перевірка входження цифри в певне число

Є число введене з клавіатури і цифра(теж введена з клавіатури). Як зробити так, щоб перевіряло чи входить ця цифра в дане число, чи ні? Бо у мене перевіряє чи = цифра числу (на Сі)

2

Re: Перевірка входження цифри в певне число

ну, розбираєте число на цифри, а потім порівнюєте кожну цифру з потрібною цифрою

3

Re: Перевірка входження цифри в певне число

Але ж не відомо зі скількох цифр буде складатися введене число( бо кількість його розрядів не стала)

4

Re: Перевірка входження цифри в певне число

Можна ділити число на 10 поки не "закінчиться".
Але тут є набагато простіший спосіб, скажу вам якщо таки розіб’єте число на цифри.

5

Re: Перевірка входження цифри в певне число

0x9111A написав:

Можна ділити число на 10 поки не "закінчиться".
Але тут є набагато простіший спосіб, скажу вам якщо таки розіб’єте число на цифри.

itoa?

Подякували: Yola1

6 Востаннє редагувалося Itari (01.11.2015 15:23:56)

Re: Перевірка входження цифри в певне число

КиївОболонь

Якщо завдання дозволяе - роби ввод не числа, а строки, та розбирай символи строки у пошуку символа завданного числа. Тодi не важно, яка велич у завданого числа.

7

Re: Перевірка входження цифри в певне число

FakiNyan я мав на увазі то що сказав Itari

8

Re: Перевірка входження цифри в певне число

0x9111A написав:

FakiNyan я мав на увазі то що сказав Itari

ну так і я про то, просто функція  itoa переводить int в масив char'ів

9

Re: Перевірка входження цифри в певне число

Якщо є число, то ділити - швидше, займає менше місця і компактніше по коду, а ще не потребує підключення бібліотек (щоправда, швидше за все ті бібліотеки все одно будуть підключені). І в принципі безпечніше.
Але правильніше, очевидно, шукати в рядку, якщо умови дозволяють. Нащо переводити в число, якщо можна одразу все зробити?

10 Востаннє редагувалося P.Y. (01.11.2015 22:05:02)

Re: Перевірка входження цифри в певне число

Необов'язково вводити число в вигляді рядка — можна перевіряти ввід посимвольно (втім, це годиться лише для випадку, коли шукана цифра вводиться перед числом, а не після).

Також можна посимвольно читати число, при цьому записуючи кожну введену цифру в множину цифр числа (множину можна реалізувати як булевий масив або як число-маску з десятьма бітами — для кожної можливої цифри), а потім перевірити, чи входить шукана цифра в цю множину.

11

Re: Перевірка входження цифри в певне число

Це ж елементарно, пишемо дві рекурсивні булеві функції:


Цифра входить в ціле число,
  якщо
     остача від ділення цього числа на 10 дорівнює цифрі,
  або 
    цифра входить в це число розділене на десять. 
Цифра входить в десятковий запис дісного числа, 
  якщо
    вона входить в його цілу частину,
  або
    в цілу частину його помноженого на 10.  

12

Re: Перевірка входження цифри в певне число

bunyk написав:

Це ж елементарно, пишемо дві рекурсивні булеві функції:


Цифра входить в ціле число,
  якщо
     остача від ділення цього числа на 10 дорівнює цифрі,
  або 
    цифра входить в це число розділене на десять. 
Цифра входить в десятковий запис дісного числа, 
  якщо
    вона входить в його цілу частину,
  або
    в цілу частину його помноженого на 10.  

Пан пише на php?

13

Re: Перевірка входження цифри в певне число

bunyk написав:

Це ж елементарно, пишемо дві рекурсивні булеві функції:


[b]Цифра входить в ціле число,[/b]
  якщо
     остача від ділення цього числа на 10 дорівнює цифрі,
  або 
    [b]цифра входить в це число розділене на десять. [/b]
Цифра входить в десятковий запис дісного числа, 
  якщо
    вона входить в його цілу частину,
  або
    в цілу частину його помноженого на 10.  

це ж рекурсія?

14

Re: Перевірка входження цифри в певне число

FakiNyan написав:
bunyk написав:

дві рекурсивні булеві функції:

це ж рекурсія?

Га?

15

Re: Перевірка входження цифри в певне число

koala написав:
FakiNyan написав:
bunyk написав:

дві рекурсивні булеві функції:

це ж рекурсія?

Га?

ну блін  :(

16

Re: Перевірка входження цифри в певне число

P.Y. написав:

Також можна посимвольно читати число, при цьому записуючи кожну введену цифру в множину цифр числа (множину можна реалізувати як булевий масив або як число-маску з десятьма бітами — для кожної можливої цифри), а потім перевірити, чи входить шукана цифра в цю множину.

Маю на увазі щось приблизно таке:

#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);
    }
}

17

Re: Перевірка входження цифри в певне число

FakiNyan написав:

це ж рекурсія?

Ну так, якщо в означенні використовується означуваний термін - то це рекурсія.  Рекурсія - це рекурсія. :)

18

Re: Перевірка входження цифри в певне число

koala написав:

Пан пише на php?

Ні, якби я писав на PHP там були б фігурні дужки. А так - то була українська з пітонячим оформленням блоків коду. :)

19

Re: Перевірка входження цифри в певне число

Чорт, забув ще дописати, що якщо натуральне число менше десяти не дорівнює шуканій цифрі, то цифра не входить в число. (Без цього рекурсія не закінчиться).

20

Re: Перевірка входження цифри в певне число

bunyk написав:
koala написав:

Пан пише на php?

Ні, якби я писав на PHP там були б фігурні дужки. А так - то була українська з пітонячим оформленням блоків коду. :)

Це я про підхід до задачі.