Решите С++ В ПропоГраде проходит великолепный фестиваль научных знаний. Они решили пригласить участников к себе на центральную площадь. Вам было поручено сделать систему распознавания билетов у групп посетителей. Билет является подлинным, если он нечетный. Необходимо из набора удалить все билеты, не проходящие по этому критерию.

Формат входных данных
В первой строке вводится N - количество билетов

Во второй строке вводятся сами номера билетов

Формат выходных данных
Если все билеты подлинные, то вывести "ALL TICKETS ARE CORRECT"

В противном случае в первой строке вывести "WRONG", во второй количество непройденных билетов. В третьей строке вывести номера билетов, которые .

Примечания
all_of , remove_if and erase к вашим услугам :)

Напоминаем, что remove_if требует в качестве аргументов начало и конец диапазона, а также функцию, по которой он будет определять - удалить элемент или нет.

входные данные выходные данные
6
123 323 111 231 999 459
ALL TICKETS ARE CORRECT
9
123 323 24 111 122 231 982 999 459
WRONG
3
123 323 111 231 999 459

nataliarianna29 nataliarianna29    2   24.04.2021 21:14    2

Ответы
kseniawkk kseniawkk  13.01.2024 18:34
Хорошо, давайте решим эту задачу шаг за шагом.

1. Сначала мы должны получить входные данные: количество билетов и сами номера билетов. Для этого мы используем std::cin.

```c++
int n; // количество билетов
std::cin >> n;

std::vector tickets(n); // номера билетов
for (int i = 0; i < n; i++) {
std::cin >> tickets[i];
}
```

2. Далее мы должны проверить каждый билет на четность и удалить те, которые являются четными. Мы можем использовать алгоритм remove_if и лямбда-функцию в качестве аргументов.

```c++
tickets.erase(std::remove_if(tickets.begin(), tickets.end(), [](int ticket){
return ticket % 2 == 0; // возвращает true, если билет четный
}), tickets.end());
```

3. Теперь мы должны вывести результат. Если все билеты были удалены, то выводим "ALL TICKETS ARE CORRECT". В противном случае выводим "WRONG", количество непройденных билетов и сами номера этих билетов.

```c++
if (tickets.empty()) {
std::cout << "ALL TICKETS ARE CORRECT" << std::endl;
} else {
std::cout << "WRONG" << std::endl;
std::cout << tickets.size() << std::endl;
for (int i = 0; i < tickets.size(); i++) {
std::cout << tickets[i] << " ";
}
std::cout << std::endl;
}
```

Вот полный код, который решает задачу:

```c++
#include
#include
#include

int main() {
int n; // количество билетов
std::cin >> n;

std::vector tickets(n); // номера билетов
for (int i = 0; i < n; i++) {
std::cin >> tickets[i];
}

tickets.erase(std::remove_if(tickets.begin(), tickets.end(), [](int ticket){
return ticket % 2 == 0; // возвращает true, если билет четный
}), tickets.end());

if (tickets.empty()) {
std::cout << "ALL TICKETS ARE CORRECT" << std::endl;
} else {
std::cout << "WRONG" << std::endl;
std::cout << tickets.size() << std::endl;
for (int i = 0; i < tickets.size(); i++) {
std::cout << tickets[i] << " ";
}
std::cout << std::endl;
}

return 0;
}
```

Надеюсь, это поможет вам понять, как решить задачу и объяснить это школьнику.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика