В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История

Определите количество номеров машин, содержащих две и только две одинаковые цифры (номер машины четырехзначный 0000..9999).(На языке С++)​

Показать ответ
Ответ:
Eva5768
Eva5768
21.11.2020 17:26

#include <iostream>

#include <string>

using namespace std;

int main()

{

   string res[10000];

int index = 0;

for(int i = 0;i<10000;i++)

{

 string str = to_string(i);

 int strLen = str.length();

 if(strLen < 4)

 {

  for(int i = 0; i < 4 - strLen; i++)

  {

   str = "0" + str;

  }

 }

 char digit = 'a';

 bool flag = false;

 for(int i = 0; i < 4;i++)

 {

  for(int j = i + 1; j < 4; j++)

  {

   if(str[i] == str[j])

   {

    if(digit != 'a')

    {

     flag = true;

     break;

    }

    digit = str[i];

   }

  }

  if(flag)

   break;

 }

 if(!flag && digit != 'a')

 {

  res[index] = str;

  index++;

 }

}

for(int i = 0; i < index; i++)

{

 cout << res[i] << endl;

}

}

Объяснение:

Метод решения: создаем массив, в который будем записывать найденные номера, заведем переменную index, которая нам добавлять новые значения. Затем запускаем цикл от 0 до 10000(чтобы пройтись по всем номерам). Т.к. номера четырехзначные, то нам нужно будет увеличить 0, до 0000, для этого создаем условие, которое проверяет, количество символов, если оно меньше четырех, то дописывает перед текущем номером нули, то есть, если текущий номер 11, получится 0011. Если номер 237, то получится 0237.

Затем создаем переменную digit, которая покажет, была ли найдена пара одинаковых чисел, также создадим flag, который выйти из двойного цикла.

Создаем двойной цикл, который проходит по всем элементам текущего номера и проверяет, сколько раз они встретились. В цикле проверяем равенство текущих символов, если они совпали и если digit уже не является "а", то значит, что либо данное число встретилось третий раз в номере, либо в данном числе есть другая пара одинаковых чисел, поэтому мы присваиваем flag значение true и завершаем вложенный цикл, если же текущая пара встретилась первый раз, то заменяем переменную digit на найденный символ.

После прохождения вложенных циклов мы проверяем, завершили ли мы предыдущие вложенные циклы до через переменную flag), а также изменился ли digit, если все хорошо, то присваиваем элементу массива под индексом index значение текущей строки и увеличиваем index на 1. После прохождения всего большого цикла выводим массив.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота