Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
KatrinLuxury
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 264
1

Определить, сколько цифр содержит заданное целое число

30.04.2017, 19:25. Просмотров 1838. Ответов 26
Метки нет (Все метки)

Помогите пожалуйста.

Использовать стандартные функции и арифметические операторы; изучить операторы отношения и присваивания, логические
операции, условный оператор и оператор-переключатель; научиться использовать в программах операторы цикла. Написать программы на изученные темы.

Определить, сколько цифр содержит заданное целое число и имеются ли в нем
повторяющиеся цифры.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2017, 19:25
Ответы с готовыми решениями:

Определить, сколько цифр содержит вводимое натуральное число N
Помогите пожалуйста) :help:

Определить, является ли заданное целое число А нечетным двузначным числом
Помогите пожалуйста решить задачи 1. Определить, является ли заданное целое число А нечетным...

Дано целое десятичное число a. Определить количество четных цифр в числе а
Помогите написать код С. Дано целое десятичное число a. Определить количество четных цифр в...

Определить, сколько раз встречается заданное число среди элементов массива
1. Дан двухмерный массив n×m элементов. Определить, сколько раз встречается число 7 среди элементов...

Процедуры и функции. Определить, сколько раз заданное пользователем число повторяется в массиве
Программа заполняет массив(20) случайными числами, запрашивает у пользователя число и с помощью...

26
KatrinLuxury
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 264
07.05.2017, 17:05  [ТС] 2
Написать программу, используя оператор-переключатель switch
0
Байт
Кососимметричный пес
Эксперт C
22531 / 14239 / 2998
Регистрация: 24.12.2010
Сообщений: 30,337
08.05.2017, 13:34 3
C
1
2
3
4
5
6
7
8
9
10
11
12
int cif[10], i, count=0;
for(i=0; i<10; i++) cif[i] = 0;
while(n) {
 cif[n%10]++;
 count++;
 n /= 10; 
}
printf("%d цифр\n", count);
for(i=0; i<10; i++)
  if (cif[i]>1) break;
if (i < 10) printf("Есть повторы цифр\n");
else  printf("Нет повторов\n");
Псевдокод.
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
используя оператор-переключатель switch
А вот как его сюда присобачить, никак не могу сообразить
2
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
08.05.2017, 18:31 4
Цитата Сообщение от Байт Посмотреть сообщение
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
Написать программу, используя оператор-переключатель switch
А вот как его сюда присобачить, никак не могу сообразить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int n = 1543;
    
    int t = n>0?n:-n;
    switch(t > 0 && t < 9)
    {
        case true: printf("1\n");
        default: switch(t > 10 && t < 99)
        {
            case true: printf("2\n");
            default: switch(t > 100 && t < 999)
            {
                case true: printf("3\n");
                default: printf("e..t...c.....\n");
            }
            
        }
        
    }
Добавлено через 15 секунд
Цитата Сообщение от Байт Посмотреть сообщение
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
Написать программу, используя оператор-переключатель switch
А вот как его сюда присобачить, никак не могу сообразить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int n = 1543;
    
    int t = n>0?n:-n;
    switch(t > 0 && t < 9)
    {
        case true: printf("1\n");
        default: switch(t > 10 && t < 99)
        {
            case true: printf("2\n");
            default: switch(t > 100 && t < 999)
            {
                case true: printf("3\n");
                default: printf("e..t...c.....\n");
            }
            
        }
        
    }
1
KatrinLuxury
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 264
08.05.2017, 18:47  [ТС] 5
dailydose, Между кодом на С++ и С большая разница будет?
0
dailydose
664 / 210 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
Завершенные тесты: 1
08.05.2017, 18:51 6
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
Между кодом на С++ и С большая разница будет?
минимальная.

p.s. к слову, С++ компилятор поддерживает код на Си
0
LFC
732 / 537 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
08.05.2017, 19:02 7
dailydose,
а как насчет
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
и имеются ли в нем
повторяющиеся цифры.
???
0
likehood
1056 / 880 / 417
Регистрация: 25.12.2016
Сообщений: 2,875
Завершенные тесты: 3
08.05.2017, 19:15 8
Вот ещё один вариант, с кейсом и без массива.
C
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
int n0=0, n1=0, n2=0, ...., n9=0;
int x = 1234233;
 
bool noRepeatDigit = true;
int nDigit;
 
for (nDigit = 0; x != 0; nDigit++)
{
    if (noRepeatDigit)
    {
        switch (x % 10)
        {
            case 0: if (++n0 > 1) noRepeatDigit = false; break;
            case 1: if (++n1 > 1) noRepeatDigit = false; break;
            // .....
            case 9: if (++n9 > 1) noRepeatDigit = false; break;
        }
    }
 
    x /= 10;
}
 
printf("Количество цифр: %d\n", nDigit);
 
if (noRepeatDigit)
    puts("Нет повторяющихся цифр");
else
    puts("Есть повторяющиеся цифры");
1
Байт
Кососимметричный пес
Эксперт C
22531 / 14239 / 2998
Регистрация: 24.12.2010
Сообщений: 30,337
08.05.2017, 19:58 9
Цитата Сообщение от likehood Посмотреть сообщение
с кейсом и без массива.
Ну, если считать создание 10 переменных n0, n1, ...n9 адекватной заменой массива, тогда, пожалуй, да

Не по теме:

Хотя я, конечно, понимаю, что ваш код не более чем шутка:)

2
likehood
1056 / 880 / 417
Регистрация: 25.12.2016
Сообщений: 2,875
Завершенные тесты: 3
08.05.2017, 20:12 10
Цитата Сообщение от Байт Посмотреть сообщение
Хотя я, конечно, понимаю, что ваш код не более чем шутка
Почему же шутка?

В условии перечислено много языковых конструкций, которые можно использовать, но массивов среди них нет. Видимо, до них ещё просто не дошли. В таком случае нам придётся сделать массив из того, что есть.
0
KatrinLuxury
14 / 14 / 11
Регистрация: 14.11.2016
Сообщений: 264
08.05.2017, 22:07  [ТС] 11
likehood, Подскажите пожалуйста, в чем ошибка, если сделаю вот так
C
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
int main(void) {
    int n0 = 0, n1 = 0, n2 = 0, n3 =0, n4 = 0, n5 = 0, n6 = 0, n7 = 0, n8 = 0,n9 = 0, x = 0;//x - введенное число
    
    printf("To determine how many digits it contains a given integer and whether it has repeating digits.\n\n");
    printf("Enter x \n");
    while (1) {
        printf("x = ");
        if (scanf("%lf", &x) == 1 )
            break;
        scanf("%*[^\n]%*c");
        printf("Entered is not the correct value. Enter again \n");
    }
 
    //int x = 1234233;
 
    bool noRepeatDigit = true;
    int nDigit;
 
    for (nDigit = 0; x!= 0; nDigit++)
    {
        if (noRepeatDigit)
        {
            switch (x % 10)
            {
            case 0: if (++n0 > 1) noRepeatDigit = false; break;
            case 1: if (++n1 > 1) noRepeatDigit = false; break;
            case 2: if (++n1 > 1) noRepeatDigit = false; break;
            case 3: if (++n1 > 1) noRepeatDigit = false; break;
            case 4: if (++n1 > 1) noRepeatDigit = false; break;
            case 5: if (++n1 > 1) noRepeatDigit = false; break;
            case 6: if (++n1 > 1) noRepeatDigit = false; break;
            case 7: if (++n1 > 1) noRepeatDigit = false; break;
            case 8: if (++n1 > 1) noRepeatDigit = false; break;
            case 9: if (++n9 > 1) noRepeatDigit = false; break;
            }
        }
 
        x /= 10;
    }
    printf("the number : %d\n", x);
    printf("The number of digits: %d\n", nDigit);
 
    if (noRepeatDigit)
        puts("Repeated numbers - no ");
    else
        puts("Repeated numbers - yes");
    
    return 0;
}
0
likehood
1056 / 880 / 417
Регистрация: 25.12.2016
Сообщений: 2,875
Завершенные тесты: 3
08.05.2017, 22:46 12
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
scanf("%lf", &x)
%lf - для вещественных чисел (тип double), а у нас x - типа int. Для целых чисел нужен формат %d.

Добавлено через 27 секунд
Цитата Сообщение от KatrinLuxury Посмотреть сообщение
scanf("%*[^\n]%*c");
А это для чего?
0
SexyHpexy
0 / 0 / 1
Регистрация: 03.12.2016
Сообщений: 82
Завершенные тесты: 1
09.05.2017, 11:56 13
likehood, А что нужно добавить, чтобы это повторяющееся число выписать в ответ?
0
likehood
1056 / 880 / 417
Регистрация: 25.12.2016
Сообщений: 2,875
Завершенные тесты: 3
09.05.2017, 12:29 14
Цитата Сообщение от SexyHpexy Посмотреть сообщение
А что нужно добавить, чтобы это повторяющееся число выписать в ответ?
Какое число? Или может цифру? Только повторяющихся цифр может быть несколько.
0
SexyHpexy
0 / 0 / 1
Регистрация: 03.12.2016
Сообщений: 82
Завершенные тесты: 1
12.05.2017, 20:09 15
likehood, Допустим есть 1251, здесь повторяющееся это 1, вот, чтобы это вывелось в ответ
0
Байт
Кососимметричный пес
Эксперт C
22531 / 14239 / 2998
Регистрация: 24.12.2010
Сообщений: 30,337
12.05.2017, 21:09 16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int cif[10], i, count=0, flag=0;
for(i=0; i<10; i++) cif[i] = 0;
while(n) {
 cif[n%10]++;
 count++;
 n /= 10; 
}
printf("%d цифр\n", count);
for(i=0; i<10; i++) {
  if (cif[i]>1) {
    printf("Повторяется цифра %d\n", i);
    flag = 1;
}
if (flag) printf("Есть повторы цифр\n");
else  printf("Нет повторов\n");
0
Сальватор
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 8
12.05.2017, 21:11 17
На самом деле в одну строку)
Переформатируй в строку и возьми её длину
0
SexyHpexy
0 / 0 / 1
Регистрация: 03.12.2016
Сообщений: 82
Завершенные тесты: 1
12.05.2017, 21:59 18
Байт, А если в коде с case?
0
Байт
Кососимметричный пес
Эксперт C
22531 / 14239 / 2998
Регистрация: 24.12.2010
Сообщений: 30,337
12.05.2017, 22:59 19
Цитата Сообщение от SexyHpexy Посмотреть сообщение
Байт, А если в коде с case?
Это пусть другие строят. Я не любитель писать ахинею
0
SexyHpexy
0 / 0 / 1
Регистрация: 03.12.2016
Сообщений: 82
Завершенные тесты: 1
13.05.2017, 13:48 20
likehood, Можете пожалуйста вот этот кусочек пояснить попонятнее
C
1
2
3
4
5
6
 bool noRepeatDigit = true;
    int nDigit;
 
    for (nDigit = 0; x!= 0; nDigit++)
    {
        if (noRepeatDigit)
0
13.05.2017, 13:48
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2017, 13:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Напечатать все пары «близнецов» из отрезка [n,2n], где n – заданное целое число, большее 2.
Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, числа...

Дано натурально число n. Сколько цифр в этом числе. Чему равняется сумма цифр. Найти первую цифру
Я написал для нахождения суммы цифр. Но выдает ошибку process exited with value 0 и какие-то числа....

Ввести целое число и определить, является ли данное число простым или нет
Ввести целое число и определить является ли данное число простым или нет. (желательно простым кодом...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.