Problema su vettore

di il
3 risposte

Problema su vettore

Ho una domanda che non mi fa dormire di notte: vorrei costruire un programma in C dove l'utente inserisce gli elementi del vettore, ma non so in partenza di quanti elementi sia composto il vettore: la sua dimensione non è pertanto stabilita in fase iniziale nè da un numero prestabilito,nè da una costante simbolica.
Ho provato a lasciare in fase dichiaratoria le parentesi quadre vuote, ma evidentemente non è corretto.
come potrei procedere?
ringrazio in anticipo chiunque mi darà una dritta a riguardo

3 Risposte

  • Re: Problema su vettore

    La dimensione dell’array è il numero dei suoi elementi, Come ogni variabile, affinché il compilatore possa allocare lo spazio di memoria necessario, l’array deve essere dichiarato: tipo nome_array [dimensione];
    Dove tipo specifica il tipo di ogni elemento dell’array, mentre dimensione definisce il numero di elementi contenuti nell’array. int v [6] , nel seguente esempio viene dichiarato un array, con nome v, di 6 elementi di tipo intero.
    Se si mette una lista di inizializzatori, si può evitare di specificare la lunghezza perché viene presa la lunghezza della lista.
    Esempio:
    int n[] = {1,2,3};
    equivale a int n[3] = {1,2,3};
    Se invece dichiari un array il cui numero di elementi da inserire e' 50 ma tu non vuoi inserire tutti e 50 numeri puoi creare un codice che chiede quanti elementi vuoi inserire.
    Esempio:
    
    do{
      printf("Quanti elementi vuoi inserire nel vettore (massimo 50):\n");
      scanf("%d", &dim);
       
      if(dim>50){
       printf("Dimensione non accettabile. Riprova...\n");
     }
     }while(dim>50);
    
  • Re: Problema su vettore

    No ... per questo tipo di problema il C prevede l'allocazione dinamica del vettore. Per farlo, utilizzerai un puntatore e le funzioni di allocazione dinamica (come malloc/realloc/free).

    Puoi impostare un puntatore inizialmente

    int *vettore=NULL;

    per indicare il vettore vuoto e poi allocare il numero di elementi che ti servono, ad esempio 10, con

    vettore = (int *)malloc(10 * sizeof(int));

    A questo punto potrai utilizzare il vettore con 10 elementi.

    Per liberare la memoria farai

    free(vettoere).

    Naturalmente devi conoscere l'argomento "puntatori" prima di scrivere programmi di questo genere.
  • Re: Problema su vettore

    Sempre ovviamente devi avere un validissima ragione per usare realloc e il tuo problema non ricade in questi casi. Usa memoria statica.
Devi accedere o registrarti per scrivere nel forum
3 risposte