C++ Помогите с задачачей с платформы Сириус

Статистика

Вася не любит английский язык, но каждый раз старается получить хотя бы четвёрку за четверть, чтобы оставаться ударником. В текущей четверти Вася заметил следующую закономерность: по нечётным дням месяца он получал тройки, а по чётным — четвёрки. Также он помнит, в какие дни он получал эти оценки. Поэтому он выписал на бумажку все эти дни для того, чтобы оценить, сколько у него троек и сколько четвёрок. Помогите Васе это сделать, расположив чётные и нечётные числа в разных строчках. Вася может рассчитывать на оценку 4 , если четвёрок не меньше, чем троек.

Входные данные

В первой строке записано единственное число N — количество элементов целочисленного массива (1⩽N⩽100 ). Вторая строка содержит N чисел, представляющих заданный массив. Каждый элемент массива — натуральное число от 1 до 31 . Все элементы массива разделены пробелами.

Выходные данные

В первой строке выходных данных нужно вывести числа, соответствующие числам месяца, в которые Вася получил тройки, а во второй строке, соответственно, расположить числа месяца, в которые Вася получил четвёрки. В третьей строке нужно вывести оценку, которую получит Вася. пример

Вот пример моего кода. Я понимаю, что очень длинный и всё можно было бы записать гораздо короче, но я просто перепробовала уже кучу вариаций и это последняя из них самая длинная. Код работает, но платформа не принимает. Помогите пожалуйста исправить.

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, x, z, i = 0;
    cin >> n;
    vector <int> v(n);
    for (i = 0; i < n; i++) {
        cin >> v[i];
    }
    for (i = 0; i < n; i++) {
        if (v[i] % 2 != 0) {
            cout << v[i] << " ";
        }
    }
    cout << endl;
    for (i = 0; i < n; i++) {
        if (v[i] % 2 == 0) {
            cout << v[i] << " ";

        }
    }
    cout << endl;
    x = 0, z = 0;
    for (i = 0; i < n; i++) {
        if (v[i] % 2 == 0) {
            z = z + 1;
        }
        else x = x + 1;
    }
    if (z > x ) {
        cout << "4";
    }
    if (z = x ) {
        cout << "4";
    }

    else
        cout << "3";
}

Ответы (2 шт):

Автор решения: Mike Novi

если помогло, оцени, пожалуйста, мне нужна репутация. Я старался)

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, ne, ch, num=0;
    cin >> n; /* ввод n */
    vector<int> chet, nec; /* делаю вектора */
    for (int i = 0; i < n; i++)
    {
        cin >> num; /* ввод чисел и проверка на чётность */
        if (num % 2 == 0)
        {
            chet.push_back(num); /* четный идет в конец вектора четных */
        }
        else
        {
            nec.push_back(num);
        }
    }
    ch = chet.size(); /* определяю размеры получившихся векторов и приравниваю к  переменным для удобства */
    ne = nec.size();
    
    for (int i = 0; i < ne; i++) /* вывод значений вектора с нечетными значениями и пробелы */
    {
        cout << nec[i] << ' ';
    }
    cout << endl;
    for (int i = 0; i < ch; i++)
    {
        cout << chet[i] << ' ';
    }
    cout << endl;
    if (ch >= ne)
    {
        cout << "4";
    }
    else
    {
        cout << "3";
    }
    return 0; /* Никите привет от Mike Novi) */
}
→ Ссылка
Автор решения: matvey_dj
#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;

    // odd - массив для нечетных чисел, even - для четных
    vector<int> odd, even;
    
    for (int i = 0; i < n; i++) {
        int inp;
        cin >> inp;
        if (inp % 2 == 0) {
            even.push_back(inp);
        } else {
            odd.push_back(inp);
        }
    }
    
    // вывод нечетных чисел
    for (int i = 0; i < (int)odd.size(); i++) {
        cout << odd[i] << ' ';
    }
    cout << endl;

    // вывод четных чисел
    for (int i = 0; i < (int)even.size(); i++) {
        cout << even[i] << ' ';
    }
    cout << endl;

    // подсчет оценки по условию
    cout << ((int)even.size() >= (int)odd.size() ? 4 : 3) << endl;
}
→ Ссылка