Трябва да изтрия дублиращи се елементи в масив.
Това е моят код:
struct client{
int index;
string name;
string surname;
string city;
int year;
float sell;};
client * elimina(client array[], int &n){
int j=0;
int i;
int a=0;
int trovato=0;
client *vet;
for(i=0; i<n; i++){
vet=new client[a+1];
for(j=0;j<a;j++){
if(array[i].index==vet[j].index){
trovato=1;
break;}}
if(trovato==0){
vet[a]=array[i];
a++;}
trovato=0;}
n=a;
return vet;
}
кодът работи, но изходът на екрана е
11-12181452000000000000000000000000000000010334500
Отговори:
0 за отговор № 1Не мисля, че това е много ефективно масив, тогава дубликатите ще бъдат съседни и много по-бързо, за да ги премахнете.
Използвайте съответните стандартни структури и функции на C ++. Първо, вие определяте сортиране критерий за вашите клиенти:
bool operator<(client const& c1, client const& c2)
{ return c1.index < c2.index; }
След това функцията ви става много по-проста:
std::vector<client> elimina(std::vector<client> v) {
// Sort on index so that std::unique can find all duplicates
std::sort(v.begin(), v.end());
// Shift duplicates
auto const last = std::unique(v.begin(), v.end());
// Resize the vector so duplicates drop out
v.resize(last - v.begin());
return v;
}
Трябва да включите заглавията "вектор" и "алгоритъм".
Обърнете внимание на използването на авто, което работи само за версията C ++ (C ++ 11). В по-ранните версии би било std :: vector :: iterator.
Вижте стандартната справка в http://en.cppreference.com/w/cpp/algorithm/unique за детайли.