Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
Alex Sil
1 / 1 / 0
Регистрация: 21.10.2015
Сообщений: 21
Завершенные тесты: 1
1

Запрет ввода определённых символов в scanf

21.10.2015, 17:17. Просмотров 442. Ответов 6
Метки нет (Все метки)

всем привет, я тут впервые так что не пинайте за может глупые на ваш взгляд вопросы.
я только начинаю осваивать Си. и есть вопрос, нужно попросить юзера ввести 5 значное целое число не содержащую цифру 0, и проверить если число является полиндромом или нет. если юзер вводит цифру 0 то программа выдаёт соответсвтующее сообщение.
код проверика на полиндром я написал и он работает. вопрос как сделать запрет на ввод цифры 0 и как вывести сообщение если такова была набранна?
заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 17:17
Ответы с готовыми решениями:

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

Ошибка ввода scanf
не воспринимает целое в переменной n scanf("Число N = %d",n); //Êàæäûå n ñèìâîëîâ âî ââåäåííîì...

scanf не ожидает ввода
Привет всем, я в первый раз на этом форуме. Вопрос следующий: в программе учета бюджета глючит...

Функция ввода с клавиатуры scanf
Здравствуйте. WinXP, MS VS20005 В приведенном коде BBB независимо от введенного с клавиатуры...

Scanf. Консоль после ввода символа закрывается
Простенький код c scanf, непонятно почему консоль после ввода символа закрывается. Среда Visua...

6
Байт
Эксперт C
20278 / 12845 / 2686
Регистрация: 24.12.2010
Сообщений: 26,831
21.10.2015, 17:33 2
Alex Sil, Вводите по одному символу и проверяйте. Ввод запоминаете в строке char v[6]. После ввода 5-ти символов не забудьте завершить строку терминальным нулем. Получить число из строки можно функцией atoi. Хотя на полиндромичность можно проверить сразу строку, не приводя ее к числу.
0
Alex Sil
1 / 1 / 0
Регистрация: 21.10.2015
Сообщений: 21
Завершенные тесты: 1
21.10.2015, 21:02  [ТС] 3
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
#include <stdio.h>
 
void main()
 
{
    //define types of constants
    long int inputnumber, reversenumber = 0, tempnumber = 0;
    //print message to user with correct input instructions
    printf("Please input positive integer number\nthat contanits up to 5 digits 1-9 [besides 0]: ");
    //input number to constanr number
 
    scanf("%ld", &inputnumber);
    
    tempnumber = inputnumber;
    if (inputnumber > 0 && inputnumber < 100000)
    {
        while ((inputnumber > 0) && (inputnumber < 100000))
        {
            reversenumber = reversenumber * 10 + inputnumber % 10;
            inputnumber = (inputnumber - (inputnumber % 10)) / 10;
        }
        if (tempnumber == reversenumber)
            printf("Your number is Polindrome\n");
        else
            printf("Your number is not Polindrome\n");
    }
    else printf("Incorrect input\n");
 
}
вот что у меня вышло, номер он проверяет на полиндромичность,осталось только ввод 0 запретить и сообщение выдать.
у меня курс только начался поэтому реализация должна быть не сложной

Добавлено через 2 часа 57 минут
Байт, извини друг, я новичек и ничего не понял что ты сказал,можно както в виде кода пожалуйста?
0
Alex Sil
1 / 1 / 0
Регистрация: 21.10.2015
Сообщений: 21
Завершенные тесты: 1
24.10.2015, 12:03  [ТС] 4
проблему решил, тему можно закрыть
0
Байт
Эксперт C
20278 / 12845 / 2686
Регистрация: 24.12.2010
Сообщений: 26,831
24.10.2015, 12:17 5
Цитата Сообщение от Alex Sil Посмотреть сообщение
проблему решил,
Не жадничай. Покажи как.
0
Alex Sil
1 / 1 / 0
Регистрация: 21.10.2015
Сообщений: 21
Завершенные тесты: 1
24.10.2015, 13:39  [ТС] 6
у меня сейчас проблема с разделом, если смогу решить и восстановить файлы обязательно покажу

Добавлено через 9 минут
Может очень некомпактно, но работает, я только учусь

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
#include <stdio.h>
 
void main()
 
{
    //define types of constants
    long int inputnumber, reversenumber = 0, tempnumber = 0,i,check0,count;
    //print message to user with correct input instructions
    printf("Please input positive integer number\nthat contanits up to 5 digits 1-9 [besides 0]: ");
    //input number to constant
 
    scanf("%ld", &inputnumber);
    //put inputnumber value into tempnumber for futher comparasion
    tempnumber = check0 = inputnumber;
    //putinputnumber into 
    //count number of 0 in entered number, set start value to 0
    count = 0;
    //start loop from i=0 to i=entered number, check if entered number modulu 10 = 0, if yes count 1 to count for every 0 in number.
    for (i = 0; i<inputnumber; i++) {
        while (check0>0) {
            if (check0 % 10 == 0) count += 1;
            check0 = check0 / 10;
        }
    }
    //check if countered at least 1 zero in entered number print message that prohibited 0 wase entered
    if (count != 0)
        printf("Your number contain prohibited digit 0\n");
    else
    
    //if number not contains 0, check that is positive and maximum 5 digit number
    if (inputnumber > 0 && inputnumber < 100000)
    {
        //if entered correct number, reverse entered number i.ex 123->321 
        while ((inputnumber > 0) && (inputnumber < 100000))
        {
            reversenumber = reversenumber * 10 + inputnumber % 10;
            inputnumber = (inputnumber - (inputnumber % 10)) / 10;
        }
        //now check if entered number(tempnumber=inputnumber) = to reversed number, if yes print message that number is polindrome
        if (tempnumber == reversenumber)
            printf("Your number is Polindrome\n");
        else
        //if not, print Not polindrome
            printf("Your number is not Polindrome\n");
    }
    //if entered incorrect non positive  and not 5 digit number, print this message
    else printf("Incorrect input\n You entered more than 5 digits or prohibited symbol\n");
 
}
P.S не обращайте внимание что много строк коментария, это для учителя

Добавлено через 8 минут
Байт
1
Байт
Эксперт C
20278 / 12845 / 2686
Регистрация: 24.12.2010
Сообщений: 26,831
24.10.2015, 14:56 7
Alex Sil, Ну что ж, для новичка вполне приличный код.
Удачи!
1
24.10.2015, 14:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2015, 14:56

Русский язык в ввода-выводе через printf-scanf
Здравствуйте! Помогите пожалуйста... Мне нужно к программе подключить возможность работать с...

Как сделать так, чтобы функция scanf ожидала ввода
как сделать так чтобы функция scanf ожидала ввода столько сколько надо а не вырубалась через...

Расчитать значения переменных y и z по заданным формулам, используя для ввода/вывода scanf и printf
Расчитать значения переменных y и z по заданным формулам (табл. 1). Использовать для ввода функцию...


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

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

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