24.05.2023

Дано натуральное число N, есть ли в нем четная цифра. Язык Паскаль. PascalABC.NET

 В данной статье рассмотрим способы решения задачи о цифрах заданного натурального числа.

Задача. С клавиатуры вводится натуральное число N. Определить, есть ли в нем четные цифры?

Четные цифры это: 0, 2, 4, 6, 8

1 способ

f:=false;

while N<>0 do

 begin

  d:=N mod 10;

  if d in [0,2,4,6,8] then f:=true;

  N:=N div 10;

 end;

 if f then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

За значение флага f приняли ЛОЖЬ - четных цифр нет в числе. Выделили цифры числа оператором цикла while. Если цифра принадлежит множеству четных цифр, то значение флага изменяем на ИСТИНУ.

За циклом осуществляется проверка флага. Если флаг принял значение ИСТИНА, то в числе есть четные цифры, в противном случае нет.

Комментарии

  • логическое значение ЛОЖЬ - false
  • логическое значение ИСТИНА - true
  • для хранения логических значений используются переменные типа boolean
  • оператор вхождения элемента в множество - in

Программа решения задачи на языке Паскаль

var N,d:integer;

    f:boolean;

begin

  print('Введите натуральное число N:');

  readln(N);

  f:=false;

  while N<>0 do

  begin

    d:=N mod 10;

    if d in [0,2,4,6,8] then f:=true;

    N:=N div 10;

  end;

  if f then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

end.

Результат запуска программы


2 способ

Используем модуль School, функцию digits и методы динамических массивов.

С помощью функции digits получим список цифр числа, преобразуем список к массиву, найдем в полученном массиве четные цифры, преобразуем полученную последовательность в массив и вычислим его длину. Если длина полученного массива четных цифр не равна 0, то ответ Да, иначе Нет.

Программа решения задачи на языке Паскаль

uses school;

var N,p:integer;

begin

  print('Введите натуральное число N:');

  readln(N);

  p:=digits(N).ToArray.Where(k -> k in [0,2,4,6,8]).ToArray.Length;

  if p<>0 then println('Да, четные цифры есть в числе') else println('Нет, четных цифр нет в числе');

end.

Комментарии:

  • Условие k in [0,2,4,6,8] можно изменить на обычную проверку: остаток от деления на 2 равен 0? k mod 2 = 0
  • Данная программа является линейной и не использует цикл для выделения цифр числа.

3 способ

Преобразуем число в строку. Выполним проверку вхождения символов '0', '2', '4', '6', '8' в полученную строку.

Программа решения задачи на языке Python

n = int(input())

n = str(n) #функция str преобразует числовое значение в строковое

f = ('0' in n) or ('2' in n) or ('4' in n) or ('6' in n) or ('8' in n)

if f:

    print('yes')

else:

    print('no')