Помогите с кодом на с++(массив)
#include <iostream>
#include <conio.h>
#include <vector>
#include <algorithm>
using namespace std;
int
main()
{
int n;
cin >> n;
int* array = new int[n];
cout << "input: ";
for (int i = 0; i < n; i++)
{
cin >> array[i];
}
for (int i = 0; i < n; i++)
{
if (array[i] = array[i + 1])
{
delete[] array[i]; // E0852 выражение должно представлять собой указатель на полный тип объекта
}
}
}
Задание состоит в том, чтобы убрать одинаковые элементы массива. Не знаю как это реализовать(
Ответы (2 шт):
Убрать элементы массива - это, по сути, из массива в n элементов получить массив, в котором будет m элементов, отвечающих вашему критерию.
Т.е. примерно
sort(array,array+n);
int m = unique(array,array+n) - array;
Полностью:
int main()
{
int n;
cin >> n;
int* array = new int[n];
cout << "input: ";
for (int i = 0; i < n; i++)
{
cin >> array[i];
}
sort(array,array+n);
int m = unique(array,array+n) - array;
for (int i = 0; i < m; i++)
{
cout << array[i] << " ";
}
}
С vector было бы в определенном смысле проще...
И условие на равенство это a[i]==a[i+1]. Для формирования коллекции уникальных значений можно или спец коллекцйию использовать типа множества, но у Вас видимо задачка на массивы, так и формируйте новый массив уникальных значений, используя два вложенных цикла, первый по исходному массиву, просмотреть все элементы, а вложенный цикл для занесения в массив уникальных значений , если там нет ни одного совпадения
int k=0;//количество найденных уникальных элементов,длинна массива b
for(int i=0...){bool flag_unique = true;
for(int j=0...)
if(a[i]==b[j]) {flag_unique=false;break;}
if(flag_unique) b[k++]=a[i];}