*
 * Ora vedremo che come indice si puo' usare anche una variabile.
 * Ad esempio, per indicare il terzo elemento dell'array prova:
 *
 *	int pippo,pluto;	* Definisco 2 variabili intere
 *	int prova[10];		* Definisco un array con 10 elementi
 *
 *	pippo=2;		* Pippo ora vale 2 *
 *	pluto=prova[pippo];	* Questo e' equivalente a pluto=prova[2] *
 *
 * Tra le parentesi quadre, anziche' mettere il 2, abbiamo messo una
 * variabile (intera) di valore 2, e cio' e' equivalente.
 * Questo fatto puo' tornarci comodo spesso.
 * Ad esempio, potremmo riempire con un solo loop FOR un intero array,
 * assegnando a tutti i suoi elementi il valore 5:
 *
 *	for (i=0; i<99; i++) prova[i]=5;
 *
 * Questo e' un loop for in cui usiamo la variabile i come contatore, che
 * quindi ad ogni loop aumenta di 1 (partendo da zero) a causa di i++.
 * Il prova[i]=5 viene eseguito 100 volte, con i che vale da 0 a 99, in
 * modo da scrivere il 5 nei primi 100 elementi dell'array prova.
 *
 * Inoltre e' possibile inizializzare un array, ossia assegnare un valore
 * ai suoi elementi, al momento della dichiarazione, in modo analogo alle
 * variabili inizializzate alla dichiarazione.
 * Il formato generale di inizializzazione e' questo:
 *
 *	tipo nome[dimensione] = {lista argomenti};
 *
 * lista argomenti = I valori da dare agli elementi dell'array, separati
 * da una virgola. Il primo valore corrisponde al primo elemento, e cosi'
 * di seguito. Si possono mettere tutti gli elementi o solo una parte, ad
 * esempio possiamo inizializzare solo 5 elementi di un array di 10
 * elementi, in tal caso i restanti 5 saranno azzerati.
 * Esempio:
 *
 *	int provina[5]={10,20,30,40,50};
 *
 * In questo caso abbiamo inizializzato tutti gil elementi dell'array.
 * Attenzione al fatto che se non si inizializza un array, ne' ci si
 * scrive dentro, i suoi contenuti non sono degli zeri, bensi' valori a
 * caso presenti in quel punto della memoria!
 * Ora mettiamo in pratica le ultime 2 cose trattate.
 */

#include <stdio.h>	/* Includiamo la libreria standard */

/* Funzione principale e inizio del programma */

int main(void)		/* Funzione principale, eseguita per prima */
{			/* Inizio della funzione main() */

	int provina[4];		/* Un array con 4 elementi interi, che
				 * quindi avra' indici da 0 a 3 */

	int provetta[4]={10,20,30,40};	/* Array con tutti gli elementi
					 * gia' inizializzati */
	int pippo;		/* Definiamo 1 variabile intera */

/* Con questo loop inizializiamo l'array provina con i valori 0,1,2,3 */

	for (pippo=0; pippo<4; pippo++) provina[pippo]=pippo;

	printf("\nPrimo elemento provetta: %d", provetta[0]);
	printf("\nSecondo elemento provetta: %d", provetta[1]);
	printf("\nTerzo elemento provetta: %d", provetta[2]);
	printf("\nQuarto elemento provetta: %d", provetta[3]);

        printf("\nPrimo elemento provina: %d", provina[0]);
        printf("\nSecondo elemento provina: %d", provina[1]);
        printf("\nTerzo elemento provina: %d", provina[2]);
        printf("\nQuarto elemento provina: %d\n", provina[3]);

	return(0);	/* la funzione main restituisce uno 0 intero */
} 			/* Fine della funzione main() */


/* Una nota: se provate a togliere il loop FOR che inizializza l'array
 * provina (ossia ci scrive dei valori), leggendo in tale array non si
 * troveranno degli zeri, bensi' leggerete dei numeri "a caso" che erano
 * in memoria in quella zona da prima.
 * Se per caso la zona di memoria fosse azzerata, ci trovereste degli
 * zeri, ma non si puo' certo "sperare" cio'!
 */