Crea sito

Un array, detto anche vettore, è un insieme di elementi tutti dello stesso tipo ciascuno accessibile
separatamente. Il numero degli elementi dell'array deve essere fissato quando l'array viene definito.
Il tipo dell'elemento può essere qualunque tipo semplice o strutturato.
Esempi di array:
float a[15];
char b[2];
int valore[5];
float e[5] [4];
La variabile a contiene allora 15 elementi di tipo float;
la varibile b contiene 2 lementi di tipo char;
la variabile valore contiene 5 elementi di tipo intero;
la variabile e contiene 5 elementi ciascuno dei quali è ancora un array di 4 elementi di tipo float (quindi un totale di 20 elementidi tipo float).
Questo ultimo tipo di array viene detto array bidimensionale ed è il corrispondente della matrice in
matematica.
Il primo elemento di un array in C ha sempre indice 0 mentre l'ultimo ha sempre indice n-1 con n pari al numero degli elementi.
Per acquisire un array di tipo char nel quarto elemento del vettore a si utilizza la sintassi:
scanf("%c",&a[3]);
oppure
scanf("%s",a);
in questo caso, nella funzione scanf, l'identificatore dell'array non è preceduto dall''operatore "&".
Per acquisire un array di tipo int si utilizza:
scanf("%d",&valore[i]);
in questo caso la variabile valore la stiamo acquisendo con un ciclo for indicizzato con la variabile i.
Per stampare un array di caratteri si usa:
printf("%s",a);
Se invece vogliamo acquisire dei numeri di tipo intero con un array, attraverso la struttura for, possiamo scrivere:
.............
for(i=0;i<5;i++)
{
printf("Inserisci un numero");
scanf("%d", &a[i]);
}..............................

Array monodimensionale

ESEMPIO SUGLI ARRAY
Vogliamo inserire un array con 5 numeri, si vuole poi scambiare di un posto verso sinistra (cioè eseguire uno schift verso sinistra) l'array inserito e poi vogliamo visualizzare sullo schermo sia il primo array che abbiamo
inserito che quello con lo shift verso sinistra.

 


//PROGRAMMA CHE SCIFTA A DESTRA UN ARRAY DI 5 NUMERI
...........//includi le librerie che vuoi utilizzare


void main()
{
int i,a[5],aux;
printf("PROGRAMMA CHE SCIFTA A DESTRA UN ARRAY");
for(i=0;i<5;i++)
{
printf("Inserisci un numero"); // INSERIMENTO ARRAY
scanf("%d",&a[i]);
}
printf("NUMERI INSERITI");
for(i=0;i<5;i++)
{ //visualizzazione array
printf("%d ",a[i]);
}
aux=a[4];
for(i=5;i>0;i--)
{
a[i]=a[i-1]; // ESEGUE LO SCAMBIO
}
a[0]=aux;
printf("VISUALIZZA LO SCAMBIO");
for(i=0;i<5;i++)
{
printf("%d ",a[i]); // VISUALIZZA LO SCAMBIO
}
getch(); }

Come fare la media di n numeri con gli array

Supponiamo adesso di voler fare la media di n numeri inseriti dall'esterno. Per far ciò utilizziamo gli array monodimensionali , con al massimo 100 elementi.

L'utente deve inserire la dimensione del vettore, ogni volta che gira il programma, questo perchè di solito non sappiamo a priori quanti numeri vogliamo inserire per farne la media. Una volta fissata la dimensione del vettore monodimensionale, il programma ci permetterà l'inserimento dei numeri, la loro visualizzazione e anche la media.

Esempio della media

......................// includi le librerie che vuoi utilizzare


     int i,dimensione;
     float a[max_elementi],somma,media;
      printf("Inserisci dimensione array \n");
      scanf("%d",&dimensione);
     for(i=0;i      {
   
     printf("Numero %d=  ",i+1);
     scanf("%f",&a[i]); //inserimento array
     printf("\n");
     }
     printf("I numeri inseriti sono:\n");
      for(i=0;i      {
     printf(" %5.2f",a[i]); //stampa array
     }
     //media dei numeri inseriti
     somma=0;
     for (i=0; i      {
         somma=a[i]+somma;
         }
         printf("\nsomma=%5.2f",somma);
         media=somma/dimensione;


        .........

Array bidimensionale

Proviamo adesso con un esempio ad utilizzare un array monodimensionale e un array bidimensionale nello stesso programma.

Esercizio: Supponiamo di voler generare una schedina con l'inserimento dei gol fatti nelle partite delle due squadre  e di voler stampare il simbolo corrispondente

'1', '2','X'.

Per far ciò abbiamo bisogno di riempire attraverso un ciclo for  le tredici partite e per ogni partita i gol della prima squadra e i gol della seconda squadra.

il ciclo for dovrà essere così strutturato:

...............

for(i=1;i<=13;i++)

{

for(j=1;j=2;j++)

{

istruzioni

{

}

........

Programma schedina con Array

Per stampare i risultati bisogna inserire nel programma un confronto tra i gol fatti dalle due squadre che giocano la partita.

Abbiamo bisogno quindi di inserire l'istruzione if...else e di far stampare il risultato attraverso un array monodimensionale, dichiarato di tipo char;

.........................................................

printf("\nPROGRAMMA SCHEDINA\n");
for(i=1;i<=13;i++)
{printf("\n %d partita\n",i);
for(j=1;j<=2;j++)
{           printf("Inserisci gol %d squadra\n",j);
            scanf("%d",&schedina[i][j]);
            }
            }
            for(i=1;i<=13;i++)
           {
           for(j=1;j<=2;j++)
           {
                       if(schedina[i][1]==schedina[i][2])
                       risultati[i]= 'X';//stampa X
                       else
                     
                       if (schedina[i][1]                        risultati[i]='2';//stampa 2
                     
                       else
                       risultati[i]='1';//stampa 1                     
                       }                   
                       }

 

 

..........................................

Il programma completo darà il precedente output sullo schermo.

Se vogliamo inserire una scelta (cioè per inserire i gol digita 1, per stampare la schedina digita 2) all'inizio del programma possiamo inserire il ciclo for per sempre; per uscire dal ciclo for per sempre ricordarsi di inserire la libreria stdlib.h e il comando exit 0; per uscire dal programma.

Matrice 4x4 di caratteri

Per realizzare e visualizzare una matrice 4X4 di carattere bisogna dichiarare la matrice di tipo char

char matrice[5][5];

inserire l'aquisizione in un ciclo for concatenato 

.........

for(i=1;i<=4;i++)

{

 for(j=1;j<=4;j++)

{ printf("\tInserisci carattere %d %d\t",i,j);

      scanf("%s",&matrice[i][j]);

}

}

------------------

dopo inserire un'altro ciclo for concatenato delle variabili i e j per la stampa sia della griglia che dei caratteri.

//stampa della griglia e della matrice di caratteri

printf("\n\n\n\n    Matrice incorniciata\n");
printf("\n");

printf("    +---------------+\n");
printf("    |  %1c|  %1c|  %1c|  %1c|\n",matrice[1][1],matrice[1][2],
                                     matrice[1][3],matrice[1][4]);

printf("    +---------------+\n");
printf("    |  %1c|  %1c|  %1c|  %1c|\n",matrice[2][1],matrice[2][2],
                                     matrice[2][3],matrice[2][4]);

printf("    +---------------+\n");
printf("    |  %1c|  %1c|  %1c|  %1c|\n",matrice[3][1],matrice[3][2],
                                     matrice[3][3],matrice[3][4]);

printf("    +---------------+\n");
printf("    |  %1c|  %1c|  %1c|  %1c|\n",matrice[4][1],matrice[4][2],
                                     matrice[4][3],matrice[4][4]);
printf("    +---------------+\n");
printf("\n");
getch();

} //chiude il main

Array di stringhe

 ESCAPE='HTML'