Помогите с программой с++. Дан массив. Выведите те его элементы
Дата публикации:

Помогите с программой с++. Дан массив. Выведите те его элементы


Помогите с программой с++. Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке. #include #include #include #include using namespace std; int main() { int n, chr = -1, cnt = 0; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int j = 0; j < n; j++) { chr = j; for (int k = j + 1; k < n; k++) { if (a[chr] == a[k]) { cnt++; break; } else { continue; } } if (cnt > 0) { cnt = 0; continue; } else if (cnt == 0) { cout << a[chr] << " "; } }} если ввести 6, 1 2 2 3 3 3, то ответ будет неверный. В чем проблема?

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

Вот исправленный код:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    for (int j = 0; j < n; j++) {
        int cnt = 0;
        for (int k = 0; k < n; k++) {
            if (j != k && a[j] == a[k]) {
                cnt++;
                break;
            }
        }
        if (cnt == 0) {
            cout << a[j] << " ";
        }
    }

    return 0;
}

Теперь при вводе 6, 1 2 2 3 3 3, программа выведет "1".

Страница 1 из 3612345102030...Последняя »