Как отправить дублированные элементы в конец массива?
Я должен найти все дубликаты элементов в заданном массиве и отправить их в конце с их первоначальным порядком.
Например:
Вход: 2 3 2 4 5 4 3 7 1 2 6
Выход: 2 3 4 5 7 1 6 2 4 3 2
В моем вопросе размер уже определен(11), но это все равно не проблема.
Я решаю эту проблему, но получаю такую ошибку:
"Ошибка проверки времени выполнения #2-стек вокруг переменной' a ' был поврежден."
Я предполагаю, что это происходит потому, что я пытаюсь использовать вне границ массива.
Мой вопрос заключается в том, какие изменения я должен сделать, чтобы оставаться в границах, а также иметь правильный выход?
Что я уже пробовал:
MY Code is: #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; #define SZ 11 int main() { ifstream fs("C:\\Users\\Can\\Desktop\\file.txt"); if (!fs) return 0; int a[SZ]; for (int i = 0; i < SZ; ++i) fs >> a[i]; int b, c, d; for (b = 0; b < SZ; b++) { for (c = b + 1; c < SZ; c++) { if (a[b] == a[c]) { for (d = c; d < SZ; d++) { int temp = a[b]; a[d] = a[d + 1]; a[SZ-1] = temp; } } } } for (int i = 0; i < SZ; ++i) cout << a[i] << " "; return 1; } With this code I get output: 2 3 4 5 7 1 2 3 4 2 2 If I change "a[SZ -1] = temp" to "a[SZ] = temp" I get the right output but also an error. Please help me find the mistakes in my code. Also forget about the file, just think it as a given input above.