Запрет ввода определённых символов в scanf - C (СИ)
Формулировка задачи:
всем привет, я тут впервые так что не пинайте за может глупые на ваш взгляд вопросы.
я только начинаю осваивать Си. и есть вопрос, нужно попросить юзера ввести 5 значное целое число не содержащую цифру 0, и проверить если число является полиндромом или нет. если юзер вводит цифру 0 то программа выдаёт соответсвтующее сообщение.
код проверика на полиндром я написал и он работает. вопрос как сделать запрет на ввод цифры 0 и как вывести сообщение если такова была набранна?
заранее спасибо
Решение задачи: «Запрет ввода определённых символов в scanf»
textual
Листинг программы
#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"); }
Объяснение кода листинга программы
- В начале кода определяются типы переменных: long int inputnumber, reversenumber = 0, tempnumber = 0, i, check0, count.
- Выводится сообщение с инструкцией для ввода:
Please input positive integer number that contanits up to 5 digits 1-9 [besides 0]:
- С помощью функции scanf() пользовательский ввод сохраняется в переменную inputnumber.
- Значение inputnumber копируется в переменную tempnumber для дальнейшего сравнения.
- Переменная count инициализируется значением 0 и используется для подсчета количества нулей во введенном числе.
- Начинается цикл от i=0 до i=inputnumber. Для каждого значения i выполняется проверка, является ли остаток от деления check0 на 10 равным 0. Если это так, значение count увеличивается на 1.
- check0 делится на 10, чтобы убрать последнюю цифру из числа.
- Если введенное число содержит хотя бы одну цифру 0, выводится сообщение
Your number contain prohibited digit 0
. - Если введенное число не содержит цифр 0 и является положительным числом, проверяется, что оно не превышает 5 цифр. Если это так, выводится сообщение
Incorrect input. You entered more than 5 digits or prohibited symbol
. - Если введенное число не содержит цифр 0, является положительным числом и имеет не более 5 цифр, начинается процесс переворота числа.
- В обратном порядке числа, начиная с последней цифры, создается переменная reversenumber.
- Переменная tempnumber обновляется значением inputnumber.
- Если tempnumber равно reversenumber, выводится сообщение
Your number is Polindrome
. В противном случае выводится сообщениеYour number is not Polindrome
. - Код завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д