ecco l'algoritmo completo , funziona ma nn mi piace molto lo avrei voluto fare senza array_temp che è l'array di appoggio ma nn lo riesco a creare, mica mi puoi aiutare .....
ti passo l' intero algoritmo con il main e commenti
grazie
codice:
#include "stdlib.h"
#include "stdio.h"
#define maX 100
void inserimento_array(int *array1D, int size); //Inserisco i valori
void ordinamento (int *array1D, int size); //Ordino l'array
void eliminazione_duplicati (int *array1D, int *size, int flag); //Elimino i duplicati
void stampa(int *array1D,int size); //Stampo l' array
int main()
{
int array1D[maX]; //Array utilizzato
int size=0; //Size dell' array deciso tramite scanf
int flag=0; //Flag per gestire il size durante l' eliminazione dei doppioni
printf("Inserire quanti valori vuoi inserire\t");
scanf("%d",&size);
inserimento_array(array1D,size); //Richiamo funzione inserimento
system("cls");
printf("L'array ordinato con i valori ancora non controllati \n\n");
ordinamento(array1D,size); //Richiamo funzione ordinamento
stampa(array1D,size); //Richiamo funzione stampa
printf("\tSize %d",size);
printf("\n\nL'array ordinato con i valori controllati \n\n");
eliminazione_duplicati( array1D,&size,flag); //Richiamo funzione eliminazione
stampa(array1D,size); //Richiamo funzione stampa
printf("\tSize %d",size);
printf("\n\n");
return 0;
}
void inserimento_array(int *array1D, int size) //Inserisco i valori tramite I\O
{
int i=0;
printf("\n");
for(i=0;i<size;i++)
{
printf("Inserire il valore da tastiera\t");
scanf("%d",&array1D[i]);
printf("\n");
}
}
void ordinamento (int *array1D, int size) //Ordinamento array
{
int i=0;
int j=0;
int temp=0;
for (i=0;i<size;i++)
{
for (j=i;j<size;j++)
{
if(array1D[i] > array1D[j] )
{
temp=array1D[i];
array1D[i]=array1D[j];
array1D[j]=temp;
}
}
}
}
void stampa(int *array1D,int size) //Stampa array
{
int i=0;
printf("Array= {");
for (i=0;i<size;i++)
{
printf("[%d]",array1D[i]);
}
printf("}");
}
void eliminazione_duplicati (int *array1D, int *size, int flag)
{
//Appoggia sull' array temp solo uno dei valori uguali oltre che a tutti quelli che nn vengono ripetuti piu di 1 volta
int i,j,k=0;
int k_n=0,flag_t=0;
int array_temp[maX];
for(i=0;i<*size;i++)
{
flag_t=0;
for(j=i+1;j<*size;j++)
{
if (array1D[i]==array1D[j])
{
flag_t=1;
}
}
if (flag_t!=1)
{
array_temp[k]=array1D[i];
k_n++;
k++;
}
}
k=0;
for (i=0;i<k_n;i++)
{
array1D[i]=array_temp[k];
k++;
}
*size=k_n;
}