Linguaggio C, array vuoto

di il
18 risposte

Linguaggio C, array vuoto

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

  • Re: Linguaggio C, array vuoto

    Per vuoto cosa intendi?
  • Re: Linguaggio C, array vuoto

    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;
    ....
    .....
  • Re: Linguaggio C, array vuoto

    Solo con queste informazioni ti direi che è impossibile.
  • Re: Linguaggio C, array vuoto

    Il testo che ho è questo, nient'altro..
    Tu come lo interpreteresti l'esercizio?
  • Re: Linguaggio C, array vuoto

    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 ...
  • Re: Linguaggio C, array vuoto

    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
  • Re: Linguaggio C, array vuoto

    migliorabile ha scritto:


    e' possibile conoscere la dimensione nel seguente modo
    ... ma non sarà mai zero.
  • Re: Linguaggio C, array vuoto

    Vi ringrazio
  • Re: Linguaggio C, array vuoto

    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.
  • Re: Linguaggio C, array vuoto

    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
  • Re: Linguaggio C, array vuoto

    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.
  • Re: Linguaggio C, array vuoto

    Beh, l'insieme vuoto potrebbe essere rappresentato da puntatore a NULL?
  • Re: Linguaggio C, array vuoto

    ale99 ha scritto:


    Beh, l'insieme vuoto potrebbe essere rappresentato da puntatore a NULL?
    Mai una buona scelta!
  • Re: Linguaggio C, array vuoto

    Beh, secondo me potrebbe essere un metodo. Però, dovrebbe essere indicato nelle specifiche ...
Devi accedere o registrarti per scrivere nel forum
18 risposte