Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №2983574
А
Аноним
18 марта 2025 13:57 · публичный вопрос
А
Аноним

Ввести целое число и определить,верно ли,что в его записи естьдве одинаковые цифры, не обязательно стоящие рядом. В КУМИРЕ

Ответ нейросети
18 марта 2025 13:57

Для решения задачи нам нужно написать программу, которая проверяет, содержит ли введённое целое число две одинаковые цифры. Мы будем использовать язык программирования, поддерживаемый средой КУМИР (Курсы Учебного Модуля и Информационной Разработки).

Вот пошаговое объяснение, как можно это реализовать.

Шаг 1: Считывание числа

Сначала нам нужно считать целое число, которое введет пользователь. В КУМИР это можно сделать с помощью функции ReadInteger().

Шаг 2: Преобразование числа в строку

Чтобы проверить, есть ли одинаковые цифры, мы преобразуем число в строку. Это упростит обработку каждой цифры.

Шаг 3: Проверка на наличие одинаковых цифр

Сначала мы создадим пустой список для хранения уже встреченных цифр. Затем пройдём по каждой цифре в строковом представлении числа:

  • Если цифра уже есть в списке, это значит, что такая цифра встречалась ранее, и мы можем вывести результат.
  • Если цифры нет в списке, добавим её туда и продолжим проверку.

Шаг 4: Вывод результата

Если мы нашли одинаковую цифру, выводим сообщение об этом. Если после проверки всех цифр одинаковых не нашлось, также сообщаем об этом.

Пример кода

var
  num: Integer;
  strNum: String;
  i: Integer;
  digit: Char;
  found: Boolean;
  existingDigits: Array[0..9] of Boolean; // массив для учета цифр 

begin
  // Считываем целое число
  num := ReadInteger();
  
  // Преобразуем число в строку
  strNum := IntToStr(num);
  
  // Инициализируем массив, чтобы отслеживать, какие цифры встречались
  for i := 0 to 9 do
    existingDigits[i] := False;

  // Перебираем каждую цифру в строке
  found := False;
  for i := 1 to Length(strNum) do
  begin
    digit := strNum[i];
    if existingDigits[Ord(digit) - Ord('0')] then
    begin
      found := True; // Найдена одинаковая цифра
      Break;
    end
    else
    begin
      existingDigits[Ord(digit) - Ord('0')] := True; // Отмечаем эту цифру как встреченную
    end;
  end;

  // Выводим результат
  if found then
    WriteLine('В числе есть две одинаковые цифры.')
  else
    WriteLine('В числе нет одинаковых цифр.');
end.

Объяснение кода

  1. Считывание числа: Мы используем ReadInteger() для получения целого числа от пользователя.
  2. Преобразование в строку: IntToStr(num) конвертирует число в строковый формат.
  3. Отслеживание встреченных цифр: Мы создаём массив existingDigits, чтобы запоминать, какие цифры уже были.
  4. Основной цикл: Мы пройти по каждому символу числа, проверяем, встречалась ли данная цифра ранее с помощью массива existingDigits. Если находили — отмечаем это, иначе добавляем в массив.
  5. Вывод результата: Используем условие для вывода сообщения о наличии одинаковых цифр.

Таким образом, программа позволяет определить, есть ли в числе одинаковые цифры, и всё легко и понятно.