Linguaggio C, array vuoto

di Anonimizzato14377 il
18 risposte
Come faccio a controllare che un array sia vuoto?

Ad esempio, ho:
int v[5] = {1, 2, 3, 4, 5};
Voglio passare questo array ad una funzione che mi ritorna true se vuoto e false altrimenti. Ma come controllo se sia vuoto o meno?

18 Risposte

  • Per vuoto cosa intendi?
  • Ho questo esercizio da fare:

    Un insieme può essere rappresentato usando un array di tipo opportuno, le cui componenti rappresentano gli elementi contenuti nell’insieme. Ad esempio l’insieme di interi S = {2, 5, 7, 20} può essere rappresentato dall’array v S = (2, 5, 7, 20). Così come per gli insiemi, l’ordine con cui gli elementi occorrono nell’array non ha importanza. Pertanto, ad esempio, anche l’array v S = (7, 20, 2, 5) rappresenta l’insieme S. Inoltre, array che rappresentano insiemi non possono contenere più occorrenze di uno stesso valore.
    Ad esempio, l’array w = (2, 2, 5, 6, 7, 7) non è ammesso.

    Implementare in C le seguenti funzioni su insiemi e verificarne il comportamento mediante un’opportuna funzione main:

    int is_empty(const int set[], const int n): dato l’insieme set (rappresentato mediante array) di cardinalità n, restituisce un valore non nullo (true) se l’insieme è vuoto, 0 (false) altrimenti;
    ....
    .....
  • Solo con queste informazioni ti direi che è impossibile.
  • Il testo che ho è questo, nient'altro..
    Tu come lo interpreteresti l'esercizio?
  • Mah ... dipende dal contesto (dalle lezioni, da cosa è stato detto dai docenti ...).

    Puoi usare delle strutture in cui conservi sia il puntatore al vettore sia il numero di elementi.
    Ovviamente non c'è la struttura nella funzione quindi non potrebbe andare bene ...
  • Un insieme e' vuoto se non contiene elementi.

    Ora se l'insieme e' rappresentato da un vettore di lunghezza N, per sapere se contiene elementi deve controllare se tutte le N celle del vettore contengono dei valori validi per l'insieme.

    Gli esempi partono da 2. Diciamo che partano da 0. Quindi, plausibilmente, i valori < 0 possono rappresentare valori non validi per l'insieme. Un valore plausibile potrebbe essere il classico -1.

    Da questa banale considerazione, deriva tutto il resto
  • migliorabile ha scritto:


    e' possibile conoscere la dimensione nel seguente modo
    ... ma non sarà mai zero.
  • Vi ringrazio
  • In realtà nell'esercizio non si specifica nulla sul dominio dei valori interni all'insieme.
    Questi possono essere positivi, nulli o negativi e quindi non esiste nulla che possa indicare che l'insieme è nullo.

    A meno di qualche chiarimento da parte del professore.
  • Visto che in is_empty viene passato il vettore e la sua lunghezza, era una plausibile ipotesi.
    In alternativa, se n e' il numeri di elementi dell'insieme, sapere se e' vuoto direi che e' piu' che banale: lapalissiano!

    prima di morire, era vivo
  • Se il valore di n rappresenta il numero "effettivo" degli elementi dell'insieme è ovvio che basta controllare n (a questo punto mi chiedo *perché* passare anche il vettore come argomento ... ma i professori sono strani ...).

    Al contrario se n rappresenta il numero "massimo" di elementi che l'insieme può contenere, allora il problema rimane.
  • Beh, l'insieme vuoto potrebbe essere rappresentato da puntatore a NULL?
  • ale99 ha scritto:


    Beh, l'insieme vuoto potrebbe essere rappresentato da puntatore a NULL?
    Mai una buona scelta!
  • Beh, secondo me potrebbe essere un metodo. Però, dovrebbe essere indicato nelle specifiche ...
Devi accedere o registrarti per scrivere nel forum
18 risposte