Array con elementi distinti?

di il
3 risposte

Array con elementi distinti?

Mi scuso per la domanda molto semplice, anzi banale... ma mi potreste scrivere una funzione con intestazione int check(int a[], int dim) che mi controlla che tutti gli elementi dell'array "a" siano distinti ? se sono tutti distinti restituisce 1, altrimenti zero.

GRAZIE

3 Risposte

  • Re: Array con elementi distinti?

    Prova a farlo tu e poi qui ti verranno dati i consigli su come migliorarlo.

    Ovvimante ti servira' un'altro vettore, inizialmente vuoto.
    scandisci il primo e per ogni elemento controlli se e' presente nel secondo.
    Se non c'e' lo inserisci, se c'e' termini con errore
  • Re: Array con elementi distinti?

    Così, su due piedi, farei così.

    il tuo vettore V ha dimensione N

    crei un vettore A di dimensioni N*N inizialmente vuoto

    poi fai 2 cicli annidati
    for (i = 0; i< N-1; i++)
    for (j = 0; j< N-1; j++)
    if (V == V[j])
    A[j] = 1

    poi controlli che solo gli elementi diagonali di A siano = 1
    (cioè che ogni elemento di V è uguale solo a se stesso)

    in realtà potresti rendere il programma più efficiente, bloccando
    il ciclo appena trova una coppia di valori uguale fuori con i diverso da j
  • Re: Array con elementi distinti?

    Non c'è bisogno di avere un secondo vettore; basta verificare che ogni elemento è diverso da tutti quelli che lo seguono.
    
    for (i = 0; i< N; i++)
      for (j = i+1; j< N; j++)
        if (V[i] == V[j])
          return 0;    // trovati due elementi uguali
    return 1;     // tutti diversi
    
Devi accedere o registrarti per scrivere nel forum
3 risposte