Вопрос задан 04.04.2025 в 08:18. Предмет Информатика. Спрашивает Митина Полина.

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

Перейти к ответам

Ответы на вопрос

Отвечает Піскун Настя.

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

Алгоритм решения:

  1. Создаем массив для подсчета количества вхождений каждой буквы. Размер массива равен количеству букв в алфавите. Например, для латинского алфавита это 26 символов.
  2. Инициализируем массив нулями.
  3. Считываем слово, введенное пользователем.
  4. Проходим по каждой букве слова:
    • Преобразуем букву в индекс (например, для латинских букв 'a' — это 0, для 'z' — 25).
    • Увеличиваем значение в массиве, соответствующее индексу этой буквы.
  5. После подсчета частот в массиве проверяем, какая из букв встречается ровно два раза.
  6. Если такая буква найдена, выводим ее. Если нет, выводим сообщение, что таких букв нет.

Пример программы:

cpp
#include #include using namespace std;

int main() { // Размер массива для латинских букв const int ALPHABET_SIZE = 26; int letterCount[ALPHABET_SIZE] = {0}; // Массив для подсчета частот букв string word; cout << "Введите слово: "; cin >> word;

// Подсчет букв for (char c : word) { if (isalpha(c)) { // Проверяем, является ли символ буквой c = tolower(c); // Преобразуем букву в нижний регистр int index = c - 'a'; // Преобразуем букву в индекс массива letterCount[index]++; } }

// Поиск буквы, встречающейся ровно 2 раза bool found = false; for (int i = 0; i < ALPHABET_SIZE; ++i) { if (letterCount[i] == 2) { cout << "Буква '" << char('a' + i) << "' встречается ровно два раза." << endl; found = true; break; } }

if (!found) { cout << "В слове нет букв, которые встречаются ровно два раза." << endl; }

return 0; }

Объяснение программы:

  1. Массив letterCount:

    • Каждый элемент массива соответствует определенной букве алфавита.
    • Значение элемента хранит количество вхождений этой буквы в слово.
  2. Цикл for для подсчета:

    • Каждую букву приводим к нижнему регистру, чтобы не учитывать регистр.
    • Вычисляем индекс для массива, используя разницу символов (c - 'a').
    • Увеличиваем счетчик для соответствующей буквы.
  3. Цикл поиска буквы:

    • Проверяем, встречается ли буква ровно два раза.
    • Если такая буква найдена, выводим ее и завершаем поиск.
  4. Проверка ввода:

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

Пример ввода и вывода:

Ввод:

Введите слово: hello

Вывод:

arduino
Буква 'l' встречается ровно два раза.

Ввод:

Введите слово: programming

Вывод:

В слове нет букв, которые встречаются ровно два раза.

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

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос