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;


        .........

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.

Esercizio

/*Esercizio svolto 2: sugli array di caratteri:
Scrivere un programma che chiede all’utente di inserire il numero n di caratteri, attraverso un ciclo for
acquisire gli n caratteri e poi visualizzarli sullo schermo. (Nota: una stringa è un array monodimensionale di
caratteri.
*/
#include<stdio.h>
#include<conio.h>
#define maxlettere 100 //permette di inserire al massimo 100 caratteri
main(){
 int n,i;
 char carattere,stringa[maxlettere];//non cambia nulla se metto stringa[30]perchè il while
                                    //lo comanda  n maxlettere
printf("PROGRAMMA ARRAY DI CARATTERI\n");
//permette di inserire il numero di caratteri
do {printf("Quanti caratteri vuoi inserire?introduci max 30 caratteri\n");
scanf("%d",&n);
}while(n>maxlettere||n<=1); //permette di inserire
                            // l'ampiezza del vettore
                            
for(i=0;i<n;i++)
{printf("carattere carattere %d: ", i+1);
scanf("%s",&stringa[i]); //legge un carattere alla volta 
                          //nota: sarebbe meglio acquisirlo con scanf("%c",&stringa[i]);
                          //ma nel mio dev C non funziona
}
printf("%s ",stringa); //stampa tutta la stringa letta
 //una stringa è un array di caratteri
getch();
}

Esercizio


/*Esercizio svolto 3: sugli array di caratteri
Scrivere un programma in DEV C che permetta all'utente di inserire
due array  a piacere, A[maxlettere] e B[maxletere] e di inserire un asterisco 
in un terzo vettore C[maxlettere] quando i numeri
inseriti nei due array  A e B sono uguali nella stessa posizione
*/
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define maxlettere 100 //numero massimo di caratteri consentito
                     //se metto 30 e l'utente per sbaglio inserisce il numero 33
                     //nell'acquisizione di maxlettere il programma va in loop,
                     //quindi è buona norma mettere per maxlettere un numero più 
//grande di quello che chiedo all'utente
main()
{int dimensione,i;
char A[maxlettere], B[maxlettere],C[maxlettere];
printf("Scrivere un programma in DEV C che permetta all'utente di inserire\n");
printf("due array di caratteri A e B a piacere e di inserire un asterisco\n");
printf("in un terzo vettore C quando i numeri \n");
printf("inseriti nei due array A e B sono uguali nella stessa posizione\n\n\n\n");
printf("Quanti caratteri vuoi inserire?massimo 30 caratteri\n");
scanf("%d",&dimensione); //definisce la dimensione dei cicli for
printf("Inserimento del primo array\n\n");
for(i=0;i<dimensione;i++)
{printf("Inserire il %d valore del primo array\n",i+1);
scanf("%s",&A[i]);   //sarebbe meglio acquisire con scanf("%c",&A[i]);ma nel mio Dev C non funziona
}
printf("Inserimento del secondo array\n\n");
for(i=0;i<dimensione;i++){
printf("Inserire il %d valore del secondo array\n",i+1);
scanf("%s",&B[i]); //sarebbe meglio acquisire con scanf("%c",&A[i]);ma nel mio Dev C non funziona
}
printf("\n\n");
//Riempimento del terzo vettore C
for(i=0;i<dimensione;i++){
if(A[i]==B[i]) //confronta il primo array con il secondo array
               //se sono uguali i caratteri inserisce un asterisco nel vettore C
C[i]='*';
else          //altrimente inserisce nel vettore C gli stessi caratteri del vettore A
C[i]=A[i];
}
printf("\n\n\n");
//stampa array A[dimensione] carattere dopo carattere con un ciclo for
for(i=0;i<dimensione;i++){
 printf("%c\t",A[i]);
 }
printf("\n\n");
//stampa array B[dimensione] carattere dopo carttere con un ciclo for
for(i=0;i<dimensione;i++){
 printf("%c\t",B[i]);
 }
 printf("\n\n");
//stampa array C[dimensione] sostituendo gli asterischi nel
//vettore A[dimensione] se la posizione è uguale
//a quella del vettore B[dimensione]
for(i=0;i<dimensione;i++){
printf("%c\t",C[i]);  //stampa il vettore C carattere dopo carattere con un ciclo for
}
getch();
}

Esercizio

//ESERCIZIO DELLE TEMPERATURE MENSILI
/* dopo aver dichiarato una matrice di 30 righe e 24 colonne, in cui
ogni posizione indica M[i][j]rappresenta la temperatura misurata
il giorno i del mese di giugno all'ora j di quel giorno, stampare le medie giornaliere
delle temperature.
*/
#include<stdio.h>
#include<conio.h>
int main(){
float M[30][24],somma;
int i,j;
printf("\nPROGRAMMA DELLE TEMPERATURE MENSILI\n\n");
//ciclo for concatenato per l'acquisizione
for(i=0;i<30;i++){// for per i gioni
for(j=0;j<24;j++)  //for per le ore
{
printf("\nInserisci il %d valore di temperatura del giorno %d\t",j+1,i+1);
scanf("%f",&M[i][j]);    //acquisisce o legge le temperature
}
}
//ciclo for concatenato per l'elaborazione e stampa
for(i=0;i<30;i++){
somma=0;   //azzzera la somma per ogni giornata trascorsa
for(j=0;j<24;j++)
somma+=M[i][j];   //equivale all'espressione somma=somma+M[i][j]
                   //cioe la nuona somma è uguale alla somma precedente 
   //più il nuovo valore M[i][j]
printf("\nLa media del giorno %d e' stata di %3.2f gradi\n",i+1,somma/24);
       
   }
   getch();
}
 

ESERCIZIO

//PROGRAMMA CHE PERMETTE DI INSERIRE DEI CARATTERI A PIACERE E VISUALIZZA LA

//STRINGA INSERITA


#include <stdio.h>
#include<conio.h>
#define maxlettere 100
main(){
int n,i;
char a[maxlettere];
printf("PROGRAMMA ARRAY DI CARATTERI\n");
do {printf("introduci un numero di caratteri che vuoi inserire( max 30 caratteri)\n");
scanf("%d",&n);
}while(n>maxlettere||n<=1); //permette di inserire
// l'ampiezza del vettore
for(i=0;i<n;i++)
{printf("carattere n  %d: ", i+1);
scanf("%s",&a[i]);   //legge un carattere alla volta
}
for(i=0;i<n;i++)
{
printf("%c",a[i]);     //stampa tutta la stringa letta
}getch();
}
 

ESERCIZIO

//PROGRAMMA CON ARRAY CHE STAMPA TUTTI I MULTIPLI DI TRE
#include<stdio.h>
#include<conio.h>
int main(){int i,multipli[10];
for(i=1;i<=10;i++){
         multipli[i]=i*3;
             }
             printf("\nARRAY DEI MULTIPLI di 3\n");
for(i=1;i<=10;i++){
printf("%4d",multipli[i]);
}
getch();
}
 

Array di stringhe

 ESCAPE='HTML'