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

Рейтинг: -1Ответов: 1Опубликовано: 10.02.2023

Статистика

Вася не любит английский язык, но каждый раз старается получить хотя бы четвёрку за четверть, чтобы оставаться ударником. В текущей четверти Вася заметил следующую закономерность: по нечётным дням месяца он получал тройки, а по чётным — четвёрки. Также он помнит, в какие дни он получал эти оценки. Поэтому он выписал на бумажку все эти дни для того, чтобы оценить, сколько у него троек и сколько четвёрок. Помогите Васе это сделать, расположив чётные и нечётные числа в разных строчках. Вася может рассчитывать на оценку 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";
}

Ответы

▲ 0
#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;
}