Согласие на обработку персональных данных.



04.09.2017
Новая задача Программа вычисления суммы.

03.09.2017
Новое видео Стековый калькулятор и обратная польская запись.

26.08.2017
Новая статья Версии Делфи.

23.08.2017
Новая статья Для кого пишется программа.

13.08.2017
Новая статья Стандарт C++: общие сведения.

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

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

Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...

Условие задачи 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 (семь нулей) определится как натуральное.

Можно, конечно, постараться и сделать работу этих функций более точной. Но это уже будет более сложное решение.


Основы программирования Основы программирования

Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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