Раздел: Задачи / Простейшие /

Проверка натурального числа

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

Условие задачи 1.1

Задача 1.1
Дано число Х. Если оно натуральное, то вывести на экран сообщение: “Х - натуральное число”, иначе - вывести сообщение “Х - действительное число”.

Прежде чем начать решать эту задачу, давайте вспомним, что такое натуральные и действительные числа.

Что такое натуральное число

Натуральные числа (от лат. naturalis — естественный; естественные числа) - это числа, возникающие естественным образом при счёте (например, 1, 2, 3). Последовательность всех натуральных чисел, расположенных в порядке возрастания, называется натуральным рядом.

Существуют два подхода к определению натуральных чисел:

  1. Натуральные числа - это числа, возникающие при подсчёте (нумерации) предметов (первый, второй, третий и т.д.).
  2. Натуральные числа - это числа, возникающие при обозначении количества предметов (нет предметов, один предмет, два предмета и т.д).

В первом случае ряд натуральных чисел начинается с единицы, а во втором - с нуля.

Отрицательные и нецелые (рациональные, вещественные, …) числа к натуральным не относятся.

Что такое действительное число

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

Если натуральные числа возникли в процессе счёта, а рациональные - из потребности оперировать частями целого, то вещественные числа предназначены для измерения непрерывных величин.

Не будем углубляться в теорию. Попробуем подвести итог простыми словами. Итак,

Натуральное число - это целое положительное число.

Вещественное (действительное) число - это не целое число (число с дробной частью).

Теперь попробуем найти решение задачи. Вариантов может быть несколько. Мы попробуем два из них - проверку натурального числа и проверку действительного числа. Они мало чем отличаются, но всё же.

Чтобы как-то отличить их, оформим их в виде функций.

Как проверить натуральное число

Можно выбрать, например, такой алгоритм:

  1. Получить число Х
  2. Проверить, не является ли число отрицательным
  3. Если да, то вывести “Х - действительное число”
  4. Если нет, то
    • Выделить дробную часть числа
    • Если она равна нулю, то вывести “Х - натуральное число”
    • Иначе вывести “Х - действительное число”
  5. Завершить программу

Поскольку мы решили оформить решения в виде функций, то проверка натурального числа поместится в одну строку исходного кода.

//*********************************************************
// Проверяет, является ли число натуральным.
// ВХОД: проверяемое число
// ВЫХОД: 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;

Ниже приведены примеры программ на языках Паскаль и С++.

Решение задачи 1.1 на Паскале
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.

Решение задачи 1.1 на С++
#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 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика