Условие
В ПрогоГраде проходит великолепный фестиваль научных знаний. Они решили пригласить участников к себе на центральную площадь. Вам было поручено сделать систему распознавания билетов у групп посетителей. Билет является подлинным, если он нечетный. Необходимо из набора удалить все билеты, не проходящие по этому критерию.
Формат входных данных
В первой строке вводится N - количество билетов
Во второй строке вводятся сами номера билетов
Формат выходных данных
Если все билеты подлинные, то вывести "ALL TICKETS ARE CORRECT"
В противном случае в первой строке вывести "WRONG", во второй количество непройденных билетов. В третьей строке вывести номера билетов, которые прошли.
Примечания
all_of , remove_if and erase к вашим услугам :)
Напоминаем, что remove_if требует в качестве аргументов начало и конец диапазона, а также функцию, по которой он будет определять - удалить элемент или нет.
C/C++
C++ STL. Проверить и удалить (по необходимости)
#include < iostream >
#include < vector >
using namespace std;
int main()
{
cout << "Enter count of tickets and thiese numbers: \n";
int ticket_count;
cin >> ticket_count;
vector < int > tickets(ticket_count);
for (int& i : tickets) cin >> i;
int iter = 0;
for (int& i : tickets) {
if (!(i & 1)) tickets.erase(tickets.begin() + iter);
iter++;
if (tickets.size() <= iter) break;
}
if (tickets.size() == ticket_count) { cout << "ALL TICKETS ARE CORRECT"; return 0; }
cout << "WRONG\n";
cout << ticket_count - tickets.size() << endl;
for (int& i : tickets) cout << i << " ";
}
#include < vector >
using namespace std;
int main()
{
cout << "Enter count of tickets and thiese numbers: \n";
int ticket_count;
cin >> ticket_count;
vector < int > tickets(ticket_count);
for (int& i : tickets) cin >> i;
int iter = 0;
for (int& i : tickets) {
if (!(i & 1)) tickets.erase(tickets.begin() + iter);
iter++;
if (tickets.size() <= iter) break;
}
if (tickets.size() == ticket_count) { cout << "ALL TICKETS ARE CORRECT"; return 0; }
cout << "WRONG\n";
cout << ticket_count - tickets.size() << endl;
for (int& i : tickets) cout << i << " ";
}
#include <algorithm>
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main() {
size_t n;
cin >> n;
vector<int> box(n);
for (auto& x : box) cin >> x;
const auto odd = [](int x) -> bool { return x & 1; };
if (all_of(box.begin(), box.end(), odd)) puts("ALL TICKETS ARE CORRECT");
else {
puts("WRONG");
cout << count_if(box.begin(), box.end(), odd) << '\n';
box.erase(remove_if(box.begin(), box.end(), odd), box.end());
for (auto x : box) cout << x << ' ';
puts("");
}
system("pause > nul");
}
P.S. Большое спасибо за то, что разрешили пользоваться алгоритмами STL при решении задачи, в которой это является обязательным условием :)
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main() {
size_t n;
cin >> n;
vector<int> box(n);
for (auto& x : box) cin >> x;
const auto odd = [](int x) -> bool { return x & 1; };
if (all_of(box.begin(), box.end(), odd)) puts("ALL TICKETS ARE CORRECT");
else {
puts("WRONG");
cout << count_if(box.begin(), box.end(), odd) << '\n';
box.erase(remove_if(box.begin(), box.end(), odd), box.end());
for (auto x : box) cout << x << ' ';
puts("");
}
system("pause > nul");
}
P.S. Большое спасибо за то, что разрешили пользоваться алгоритмами STL при решении задачи, в которой это является обязательным условием :)
Похожие вопросы
- Алгоритмы STL. Решение оформить в виде class c конструктором, принимающим строку
- Как удалить элемент массива в C++
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- Алгоритмы STL, sort, первичный и вторичный ключи для сортировки.
- Програмирования С ++ Программирование с использованием ассоциативных контейнеров STL
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха