Раздел: Задачи / Простейшие /
Проверка натурального числа
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 1.1
Задача 1.1
Дано число Х. Если оно натуральное, то вывести на экран сообщение: “Х - натуральное число”, иначе - вывести сообщение “Х - действительное число”.
Прежде чем начать решать эту задачу, давайте вспомним, что такое натуральные и действительные числа.
Что такое натуральное число
Натуральные числа (от лат. naturalis — естественный; естественные числа) - это числа, возникающие естественным образом при счёте (например, 1, 2, 3). Последовательность всех натуральных чисел, расположенных в порядке возрастания, называется натуральным рядом.
Существуют два подхода к определению натуральных чисел:
- Натуральные числа - это числа, возникающие при подсчёте (нумерации) предметов (первый, второй, третий и т.д.).
- Натуральные числа - это числа, возникающие при обозначении количества предметов (нет предметов, один предмет, два предмета и т.д).
В первом случае ряд натуральных чисел начинается с единицы, а во втором - с нуля.
Отрицательные и нецелые (рациональные, вещественные, …) числа к натуральным не относятся.
Что такое действительное число
Вещественное, или действительное число (от лат. realis - действительный) - это математический объект, возникший из потребности измерения геометрических и физических величин окружающего мира, а также проведения таких вычислительных операций, как извлечение корня, вычисление логарифмов, решение алгебраических уравнений, исследование поведения функций.
Если натуральные числа возникли в процессе счёта, а рациональные - из потребности оперировать частями целого, то вещественные числа предназначены для измерения непрерывных величин.
Не будем углубляться в теорию. Попробуем подвести итог простыми словами. Итак,
Натуральное число - это целое положительное число.
Вещественное (действительное) число - это не целое число (число с дробной частью).
Теперь попробуем найти решение задачи. Вариантов может быть несколько. Мы попробуем два из них - проверку натурального числа и проверку действительного числа. Они мало чем отличаются, но всё же.
Чтобы как-то отличить их, оформим их в виде функций.
Как проверить натуральное число
Можно выбрать, например, такой алгоритм:
- Получить число Х
- Проверить, не является ли число отрицательным
- Если да, то вывести “Х - действительное число”
- Если нет, то
- Выделить дробную часть числа
- Если она равна нулю, то вывести “Х - натуральное число”
- Иначе вывести “Х - действительное число”
- Завершить программу
Поскольку мы решили оформить решения в виде функций, то проверка натурального числа поместится в одну строку исходного кода.
//********************************************************* // Проверяет, является ли число натуральным. // ВХОД: проверяемое число // ВЫХОД: TRUE - число является натуральным, // FALSE - не является //********************************************************* function NumIsNatural(N : Single) : boolean; begin Result := (N >= 0) and (Frac(N) = 0); end;
Проверка действительного числа
Как я уже говорил, такая проверка мало чем отличается от предыдущей и также помещается в одну строку исходного кода:
//********************************************************* // Проверяет, является ли число действительным (вещественным) // ВХОД: проверяемое число // ВЫХОД: TRUE - число является действительным, // FALSE - не является //********************************************************* function NumIsReal(N : Single) : boolean; begin Result := (N < 0) or (Frac(N) > 0); end;
Ниже приведены примеры программ на языках Паскаль и С++.
program natural; var X : Single; N : Single; //**************************************************************** // Проверяет, является ли число натуральным. // ВХОД: проверяемое число // ВЫХОД: TRUE - число является натуральным, FALSE - не является //**************************************************************** function NumIsNatural(N : Single) : boolean; begin Result := (N >= 0) and (Frac(N) = 0); end; //**************************************************************** // Проверяет, является ли число действительным (вещественным). // ВХОД: проверяемое число // ВЫХОД: TRUE - число является действительным, // FALSE - не является //**************************************************************** function NumIsReal(N : Single) : boolean; begin Result := (N < 0) or (Frac(N) > 0); end; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin //Проверка натурального числа Write('X = '); ReadLn(X); if NumIsNatural(X) then WriteLn('X is a natural number') else WriteLn('X is a real number'); //Проверка действительного числа Write('X = '); ReadLn(X); if NumIsReal(X) then WriteLn('X is a real number') else WriteLn('X is a natural number'); ReadLn; end.
#include#include using namespace std; //**************************************************************** // Проверяет, является ли число натуральным. // ВХОД: проверяемое число // ВЫХОД: TRUE - число является натуральным, FALSE - не является //**************************************************************** bool NumIsNatural(float N) { int a = (int)N; return ((N >= 0) && ((N - a) == 0)); } //**************************************************************** // Проверяет, является ли число действительным (вещественным). // ВХОД: проверяемое число // ВЫХОД: TRUE - число является действительным, // FALSE - не является //**************************************************************** bool NumIsReal(float N) { int a = (int)N; return ((N < 0) || ((N - a) != 0)); } //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** int main(int argc, char *argv[]) { float X; //Проверка натурального числа cout << "X = "; cin >> X; if (NumIsNatural(X)) cout << "X is a natural number" << endl; else cout << "X is a real number" << endl; //Проверка действительного числа cout << "X = "; cin >> X; if (NumIsReal(X)) cout << "X is a real number" << endl; else cout << "X is a natural number" << endl; system("PAUSE"); return EXIT_SUCCESS; }
ВАЖНО!
Из-за особенностей представления вещественных чисел в памяти компьютера эти примеры не будут работать с большими числами. Например, эти функции, скорее всего, определят, что число 567894,01 является натуральным, а число 567894,1 - действительным. Числа с меньшими значениями будут определяться более точно. Например, число 1,0000001 (шесть нулей) определится как вещественное, а число 1,00000001 (семь нулей) определится как натуральное.
Можно, конечно, постараться и сделать работу этих функций более точной. Но это уже будет более сложное решение.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |