No Image

Функция проверки на число c

СОДЕРЖАНИЕ
3 просмотров
10 марта 2020

Пользователь вводит некоторую последовательность цифр с консоли, если он ввел все верно без пробелов и букв – выходим из цикла. Иначе – выводим надпись о неправильности ввода и просим повторить попытку. Ниже код, но вот только он даже на корректный ввод просит повторить попытку. Что не так?

5 ответов 5

Символ конца строки ‘
‘ не проходит проверку if (n[i] >= ‘0’ && n[i] .

Это должно быть перед вторым циклом.

А это – внутри, до if’а.

Тут ещё надо делать

Вы последним вводите символ ‘
‘ , который не проходит ваш тест.

Сделайте тогда уж так:

Тем более что в вашем коде при неправильном вводе остатки неверного ввода остаются в буфере и портят вам жизнь.

Update Вот совсем простой код на C++:

Решил сделать проверку так. Работает на все, включая пробелы точки и тире, и буквы

Насколько понимаю, Вы хотите вводить длинные десятичные числа без знака. Я думаю, что иногда полезней просто показать, чем долго и нудно исправлять.

Вот пример вроде бы под Ваши требования из вопроса:

Обратите внимание, что переменная в которую getchar()-ом читаем символ имеет тип int, а не char (!) (читайте man getchar ).

Возможно, для конечной цели вычислений с неопределенно длинными целыми более привлекателен подход, когда мы сразу получаем число в динамической памяти (выделенной malloc). Для этого идеально подходит функция GNU getline (если у Вас ее еще нет, то либо поставьте GCC, либо сами напишите ее (хотя бы в качестве упражнения в программировании)). Вызывая эту функцию мы вместе со строкой сразу получаем и ее длину.

Введенная строка проверяется и сразу преобразуется в "перевернутую" (т.е. младшие цифры числа в начале строки) последовательность десятичных цифр (по цифре на байт) в виде чисел, уже хорошо подходящих для дальнейших вычислений.

Читайте также:  Cisco asa 5510 asdm

Естественно, в вычислительной задаче после (или вместо) print() введенные данные надо где-то сохранить (копировать байты как раз необязательно, а вот указатель str для дальнейшего ввода надо обнулить) и вызывать free() только для ввода с ошибками.

Оба примера компилируется в Linux gcc и g++.

Я написал очень простую калькуляторную программу на C ++. Вот:

Как вы можете видеть, я хочу разрешить пользователям завершать приложение, нажимая «t». Это явно не сработает, потому что cin постараюсь назначить письмо double (если я нажимаю ‘t’, приложение вылетает). Вместо этого я планирую использовать строки для получения ввода, но как мне проверить, является ли строка буквой или цифрой?

Решение

Вот пример и рабочий код, просто измените его так, чтобы он соответствовал вашим потребностям

Другие решения

и использовать isalhpa() , isdigit() , isalnum() на содержимое строки?

Вы можете ввести в строку, а затем использовать следующую функцию:

Если строка числовая, она переведет ее в целое число.

Если строка не является числовой, она вернет 0: в этом случае вы можете проверить только первый символ строки, если он равен нулю, тогда рассматривать ввод как 0. Если первый символ не является нулем, рассмотрите строку как не числовой.

Ну, если вы проверяете только ‘t’, вы можете сделать это глупо и легко.

если вы хотите проверить строку, а не символ, вот пример: ссылка на сайт лучшим способом было бы сделать функцию для проверки, является ли данная строка числом или нет, если это число, возвращать истину, иначе возвращать ложь (или наоборот)

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Читайте также:  Epst меню самсунг что это

Является ли число простым – Проверяем на языке Си

Напишем на языке Си программу, проверяющую является ли число простым. Для проверки будем использовать простейший алгоритм, основанный непосредственно на определении простого числа.

Простое число – определение

Простое число – это натуральное число (то есть целое и положительное), большее, чем единица, которое делится без остатка только на единицу и само на себя.

Список простых чисел (приведем до ста) начинается так: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97…

Функция на Си, проверяющая – является ли число простым

Напишем на языке Си функцию, которая будет проверять – простое ли число. И возвращать результат проверки в виде логической величины bool: true (да) или false (нет).

Алгоритм проверки числа n на простоту строится на определении термина простого числа.

Во-первых число n должно быть больше 1 (проверяем это в строке 5 с помощью условного оператора if), а во-вторых проверяемое число должно иметь только два делителя: 1 и n (проверяем это в строках 8-10 с помощью цикла for и оператора if).

Для работы данного метода требуется подключить заголовочный файл stdbool.h в начале файла с исходным кодом. В stdbool.h содержится определение логических констант true и false, поскольку в чистой версии языка Си они отсутствуют.

Для подключения используем директиву include:

Комментировать
3 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector