//more robust, more efficient, more clear, more powerful, but shorter code
//sorry about those english, I could not type chinese at school
//my contect QQ number : 14012040, email : ren_goa@hotmail.com
#include <iostream>
int removeDuplicate( int* source, const int size )
{
int curPos = 1;
for( int i = 1; i < size; i++ )
if( source[i] != source[i-1] ) source[curPos++] = source[i];
return size <= 0 ? 0 : curPos;
}
int main( int argc, char** args )
{
int numbers[] = { 2, 3, 3, 3, 5, 5, 6, 6, 6, 7, 7, 9 };
for( int i = 0, cusPos = removeDuplicate( numbers, sizeof(numbers)/
sizeof(int) ); i < curPos; i++ )
std::cout << numbers[i] << " ";
//remove duplicates data from a source array
int removeDuplicate( int* source, const int size )
{
int curPos = 1; //position with no duplicate data
for( int i = 1; i < size; i++ )
if( source[i] != source[i-1] ) source[curPos++] = source[i];
//return 0 if size <=0 otherwise return position with no duplicate data
return size <= 0 ? 0 : curPos;
}
int main( int argc, char** args )
{
int numbers[] = { 2, 3, 3, 3, 5, 5, 6, 6, 6, 7, 7, 9 };
int curPos = removeDuplicate( numbers, sizeof( numbers ) / sizeof( int ) );
for( int i = 0; i < curPos; i++ )
std::cout << numbers[i] << " ";
std::cout << std::endl;
这样比较好,上面那样写是因为超长了看起来不整齐
//return 0 if size is invalid otherwise return position with no duplicate data
//return 0 if size is a invalid number otherwise return position with no duplicate data
发个改良版 清高手指点
#include <iostream>
using namespace std;
//remove duplicates data from a source array
int removeDuplicate( int* data, const int );
int main( int argc, char** args )
{
const int arraySize = 12;
int numbers[arraySize] = { 2, 3, 3, 3, 5, 5, 6, 6, 6, 7, 7, 9 };
int curPos = removeDuplicate( numbers, arraySize );
for( int i = 0; i < curPos; i++ )
cout << numbers[i] << " ";
cout << endl;
cin.get();
return 0;
}
int removeDuplicate( int* source, const int size )
{
int curPos = 1; //position with no duplicate data
for( int i = 1; i < size; i++ )
if( source[i] != source[i-1] ) source[curPos++] = source[i];
//return 0 if size <=0 otherwise return position with no duplicate data
return size <= 0 ? 0 : curPos;
}
#include <stdio.h>
#define N 6
main()
{
int a[N],b[N],i,j,k=0;
printf ("Input %d numbers:\n",N);
for (i=0; i<N; i++)
scanf ("%d",a+i);
for (i=0; i<N; i++)
for (j=i+1; j<N; j++)
{
if (a[i]==a[j])
{
a[i]=0;
a[j]=0;
}
}
for (i=0; i<N; i++)
{if (a[i]==0) continue;
b[k++]=a[i];
}
if (k==0) printf("All number have been delete!");
else
{
for (i=0; i<k; i++)
printf ("%2d",b[i]);
}