Вопрос задан 07.07.2023 в 01:15. Предмет Информатика. Спрашивает Кудрявцев Максим.

Клавиатура Всем известно, что со временем клавиатура изнашивается, и клавиши на ней начинают

залипать. Конечно, некоторое время такую клавиатуру ещё можно использовать, но для нажатий клавиш приходиться использовать большую силу. При изготовлении клавиатуры изначально для каждой клавиши задаётся количество нажатий, которое она должна выдерживать. Если знать эти величины для используемой клавиатуры, то для определённой последовательности нажатых клавиш можно определить, какие клавиши в процессе их использования сломаются, а какие — нет. Требуется написать программу, определяющую, какие клавиши сломаются в процессе заданного варианта эксплуатации клавиатуры. Входные данные Первая строка входных данных содержит целое число n (1≤n≤100) — количество клавиш на клавиатуре. Вторая строка содержит n целых чисел — c1,c2,…,cn, где ci(1≤ci≤100000) — количество нажатий, выдерживаемых i-ой клавишей. Третья строка содержит целое число k (1≤k≤100000) — общее количество нажатий клавиш, и последняя строка содержит k целых чисел pj(1≤pj≤n) — последовательность нажатых клавиш. Выходные данные Необходимо вывести n строк, содержащих информацию об исправности клавиш. Если i-ая клавиша сломалась, то i-ая строка должна содержать слово “yes” (без кавычек), если же клавиша работоспособна — слово “no”. Примеры Ввод: 5 1 50 3 4 3 16 1 2 3 4 5 1 3 3 4 5 5 5 5 5 4 5 Вывод: yes no no no yes Помогите пожалуйста на c++
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Полякова Наталья.

Ответ:

Поскольку в условии не сказано, каким образом поступать с входными данными (должны ли они оставаться неизменными после завершения работы программы или нет), введем понятие "ресурс клавиши" и будем хранить ресурс для каждой из клавиш в массиве c.

Ресурс - текущее состояние клавиши (сколько еще нажатий она может выдержать. В начале ресурс равен кол-ву нажатий, выдерживаемых клавишей). Каждый раз, когда мы получаем очередное число из четвертой строки (новую нажатую клавишу), мы уменьшаем ее ресурс.

В итоге все клавиши, у которых ресурс оказался меньше нуля, будут неработоспособны. Исходный код и результат работы представлен ниже:

#include <iostream>

int main()

{

int n; // Количество клавиш на клавиатуре

int c[100]; // Количество нажатий, выдерживаемых i-ой клавишей

int k; // Общее количество нажатий клавиш

int i; // Счетчик

int key; // Нажатая клавиша

 // Первая строка  

std::cin >> n;

 // Вторая строка

for (i = 0; i < n; i++)

 std::cin >> c[i];

// Третья строка  

std::cin >> k;

// Четвертая строка

for (i = 0; i < k; i++)

{

 std::cin >> key;  

 c[key - 1]--; // Уменьшаем ресурс клавиши

}

for (i = 0; i < n; i++)

{

 // Если ресурс израсходован, клавиша сломана

 if (c[i] < 0) std::cout << "yes" << std::endl;

 else std::cout << "no" << std::endl;

}

return 0;

}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь вам с этой задачей на C++. Вот пример решения:

cpp
#include <iostream> #include <vector> int main() { int n; std::cin >> n; std::vector<int> keyPressLimits(n); for (int i = 0; i < n; i++) { std::cin >> keyPressLimits[i]; } int k; std::cin >> k; std::vector<int> pressedKeys(k); for (int i = 0; i < k; i++) { std::cin >> pressedKeys[i]; } std::vector<std::string> keyStatus(n, "no"); for (int i = 0; i < k; i++) { int key = pressedKeys[i] - 1; // Convert to 0-based indexing if (keyPressLimits[key] <= 0) { continue; // Key already broken, skip it } keyPressLimits[key]--; if (keyPressLimits[key] == 0) { keyStatus[key] = "yes"; } } for (const std::string& status : keyStatus) { std::cout << status << std::endl; } return 0; }

Программа сначала считывает количество клавиш n, затем вводит ограничения на количество нажатий для каждой клавиши и сохраняет их в векторе keyPressLimits. Затем считывается общее количество нажатий k и последовательность нажатых клавиш, сохраняемых в векторе pressedKeys.

Затем программа создает вектор keyStatus размером n, инициализированный строками "no" (означающими исправность клавиш). Затем происходит итерация по последовательности нажатых клавиш. Для каждой клавиши уменьшается количество оставшихся нажатий (keyPressLimits[key]--). Если количество нажатий достигает нуля, клавиша считается сломанной (keyStatus[key] = "yes").

Наконец, программа выводит информацию об исправности клавиш в порядке их номеров.

Надеюсь, это поможет!

0 0

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

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

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

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