Programmazione · 9 min read · Oct 12, 2025

Apprendimento C/C++ Passo-Passo - Pagina 7

07. Passo-Passo C/C++ — Programmazione C - Array

1. Introduzione agli array
2. Sugli Array
3. Elementi dell’Array
4. Passaggio degli Array alle Funzioni

| | 5. Tipi di Array | | - Array Monodimensionali 1. Aggiungi elemento

  1. Inserisci elemento
  2. Elimina elemento
  3. Sostituisci elemento
  4. Cerca elemento
  5. Eliminazione dell’array
  6. Ordinamento di un array - Array Multidimensionali
    Operazioni Matriciali utilizzando Array Multidimensionali | |

1. Introduzione agli array

Una variabile può contenere un valore costante. Solo un singolo valore costante e non è possibile contenere più di un valore in una variabile.

Il seguente esempio dimostra l’ambito di una variabile.

| | int main()
{
int sno;
sno = 1001;
sno = 1008;
sno = 1005;
printf(“%d”, sno);
return 0;
} | | | Output:
1005 |

Il programma sopra è in grado di visualizzare solo 1005, ma non tutti i valori (cioè 1001, 1008, 1005 ).

Possiamo sostituire il seguente programma al programma sopra.

| | int main()
{
int sno;
sno 0 = 1001;
sno 1 = 1008;
sno 2 = 1005;
printf(“%d”, sno);
return 0;
} | | | Output:
Niente,
Il programma sopra visualizza un elenco di errori, perché l’approccio è sbagliato. |

Continuiamo con il seguente programma per ottenere un programma senza errori.

| | int main()
{
int sno[3];
sno[0] = 1001;
sno[1] = 1008;
sno[2] = 1005;
printf(“%d”, sno[2] );
return 0;
} | / 3 valori da inserire /
/ Prima posizione per inserire 1001 /
/ Prossima posizione per inserire 1008 /
/ e Prossima posizione per inserire 1005 /
/ Stampa il valore della 2a posizione / | | | | | Output:
Niente | |

Il programma sopra visualizza un elenco di errori, perché l’approccio è sbagliato.

A seconda del programma sopra, la variabile sno può contenere più di un numero di studente. È facile, utilizzando la tecnica multi-locazione, nota anche come array.

2. Sugli Array

Gli array contengono un numero di elementi di dati dello stesso tipo. Questo tipo può essere un tipo di dato semplice, una struttura o una classe. Gli elementi in un array sono chiamati elementi. Il numero accede agli elementi; questo numero è chiamato indice. Gli elementi possono essere inizializzati a valori specifici quando l’array è definito.

Gli array possono avere più dimensioni.

Un array bidimensionale è un array di array. L’indirizzo di un array può essere utilizzato come argomento per una funzione; l’array stesso non viene copiato. Gli array possono essere utilizzati come dati membri nelle classi. È necessario prestare attenzione per evitare che i dati vengano posizionati in memoria al di fuori di un array.

/ Il seguente programma legge l’età di 4 persone e la visualizza /

| | / 47_arrays.c /
#include
int main()
{
int age[4], i;
for( i=0; i<4; i++)
{
printf(“Inserisci un’età “); scanf(“%d”, &age[i]);
}

for(i=0; i<4; i++)
printf(“ Hai inserito %d”, age[i]);

return 0;
} |

| | |

Come altre variabili in C, un array deve essere definito prima di poter essere utilizzato per memorizzare informazioni. E, come altre definizioni, una definizione di array specifica un tipo di variabile e un nome.

Ma include un’altra caratteristica: una dimensione. La dimensione specifica quanti elementi di dati conterrà l’array. Segue immediatamente il nome ed è circondata da parentesi quadre.

3. Elementi dell’Array

Gli elementi in un array sono chiamati elementi. Un array Monodimensionale accetta valori sia in modo riga che colonna. Può memorizzare solo un insieme di valori.
Il primo elemento dell’array è 0, il secondo è 1 e così via.

| | |

Un valore dell’array può essere inizializzato direttamente al momento della progettazione.
L’inizializzazione degli array è la seguente..

| | |

4. Passaggio degli Array alle Funzioni

Gli array possono essere utilizzati come argomenti per le funzioni.

In una dichiarazione di funzione, il tipo di dato e le dimensioni dell’array rappresentano gli argomenti dell’array.

void display(float [DISPLAY][MONTHS]);

Quando la funzione viene chiamata, solo il nome dell’array viene utilizzato come argomento.

 display(sales); 

Programma per accettare e stampare un array di 10 elementi

| | / 48_ ele10.c /
#define MAX 10
display(int a[MAX])
{
int i;
for(i = 0;iprintf(“ %d”,,a[i]);
}

int main()
{
int x[MAX], i;
for(i=0;iscanf(“%d”,&x[i]);

display(x);

return 0;
} |

Restituire array di valori dalle funzioni è anche possibile, ma dobbiamo essere chiari con il concetto di puntatori. Si prega di consultare gli argomenti sui puntatori per ulteriori informazioni.

5. Classificazione degli Array

Gli array sono di due tipi.

| | 1. Array Monodimensionali

  1. Array Multidimensionali |

1. Array Monodimensionali

Un array monodimensionale è una raccolta di elementi in modo riga o colonna.
Un array monodimensionale può accettare le seguenti operazioni.

| | 1. Aggiungi elemento

  1. Inserisci elemento
  2. Elimina elemento
  3. Sostituisci elemento
  4. Cerca elemento
  5. Eliminazione dell’array
  6. Ordinamento di un array |

Il seguente programma è in grado di eseguire tutte le operazioni descritte sopra.

| | / FUNZIONI ARRAY /
/ 49_sarray.c /
#define N 100
#define M 10
int i,j,r,c,r1,r2,c1,c2; / Leggi elementi dell’Array /
int accept_values(int a[N])
{
int n;
printf(“ Quanti valori desideri inserire..? “);
scanf(“%d”,&n);
printf(“ Inserisci gli elementi di dati.. “);
for(i=0;iscanf(“%d”,&a[i]);
return n;
} / Visualizza elementi dell’array /
void display(int a[N],int n)
{
printf(“ Gli elementi dell’Array sono…”);
for(i=0;iprintf(“ %d”,a[i]);
} / Elimina elemento dell’array /
int delete_cell(int a[N],int n)
{
int pos;
char ch;
printf(“ Inserisci la posizione dell’elemento da eliminare: “);
scanf(“%d”,&pos);
for(i=pos-1;ia[i] = a[i+1];
n–;
printf(“ Vuoi continuare..(y/n)?”);
ch = getche();
if(ch == ‘y’) delete_cell(a,n);
return n;
} / Inserisci elemento dell’array /
int insert_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Inserisci l’elemento da inserire: “); scanf(“%d”,&new);
printf(“ Inserisci la posizione di inserimento: “); scanf(“%d”,&pos);
for(i=n;i>=pos;i–)
a[i] = a[i-1];
a[pos-1] = new;
n++;

printf(“ Vuoi continuare..(y/n)?”);
ch = getche();
if(ch==’y’) insert_cell(a,n);
return n;
} / Per aggiungere elemento a un array esistente /
int append_cell(int a[N],int n)
{
int pos, new;
char ch;
printf(“ Inserisci l’elemento da aggiungere: “);
scanf(“%d”,&new);
a[n] = new;
n++;
printf(“ Vuoi continuare..(y/n)?”);
ch = getche();
if(ch==’y’)append_cell(a,n);
return n;
} / Ordinamento di un elenco di elementi di un array in ordine decrescente /
void sort_list_descend(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Gli elementi ordinati in ordine decrescente sono…”);
} / Ordinamento di un elenco di elementi di un array in ordine crescente /
void sort_list_ascend(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ Gli elementi ordinati in ordine crescente sono.. “);
} / Per trovare il più piccolo e il più grande di un array esistente /
void small_big(int a[N],int n)
{
int temp;
for(i=0;ifor(j=i;jif(a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
printf(“ L’elemento più piccolo è : %d”,a[n-1]);
printf(“ L’elemento più grande è : %d”,a[0]);
} / Cerca un elemento in un array /
void search(int a[N],int n)
{
int target, temp=0;
printf(“ Inserisci l’elemento da cercare: “);
scanf(“%d”,&target);
for(i=0;iif(a[i] == target)
{
printf(“ Trovato alla posizione n. %d”,i+1);
temp = 1;
}
if(temp == 0)
printf(“ Non trovato”);
} / Programma principale / / Per dimostrare semplici operazioni sugli array /
#include
#include #define m 100
int main()
{
int a[m],n; char ch;
clrscr();
n = accept_values(a);
do
{
printf(“ 1 - Append_cell”);
printf(“ 2 - Delete_cell”);
printf(“ 3 - Insert_cell”);
printf(“ 4 - Sort_list_descend”);
printf(“ 5 - Sort_list_ascend”);
printf(“ 6 - Small_big”);
printf(“ 7 - Search”);
printf(“ 8 - Remove_list”);
printf(“ 9 - Exit”);
printf(“ Inserisci la tua scelta: “); ch = getche();
printf(“ “);
switch(ch)
{
case ‘1’: n = append_cell(a,n); break;
case ‘2’: n = delete_cell(a,n); break;
case ‘3’: n = insert_cell(a,n); break;
case ‘4’: sort_list_descend(a,n); break;
case ‘5’: sort_list_ascend(a,n); break;
case ‘6’: small_big(a,n); break;
case ‘7’: search(a,n); break;
case ‘8’: n = 0; break;
case ‘9’: printf(“ Questo terminerà il tuo programma.”); break;
}
display(a,n);
printf(“ Vuoi eseguire di nuovo..(y/n)?”);
ch = getche();
}
while(ch!=’9’);
return 0;
} |

2. Array Doppio Dimensionale

Un array doppio dimensionale è una raccolta di elementi in modo riga e colonna.
Un array multidimensionale può accettare le seguenti operazioni.

Un array multidimensionale è comunemente utilizzato nelle aree delle matrici per comprendere interi compiti nel modo più semplice.

FUNZIONI MATRICE

| | / 50_menumat.c /
#define N 100
#define M 10
int i, j, r, c, r1, r2, c1, c2; / Leggi i valori per una MATRICE /
void read_matrix(int A[M][M])
{
printf(“ Quante righe? “);
scanf(“%d”,&r);
printf(“ Quante colonne? “);
scanf(“%d”,&c);
for(i=0;ifor(j=0;jscanf(“%d”,&A[i][j]);
} / Scrivi i valori di una MATRICE /
void disp_matrix(int A[M][M])
{
for(i=0;i{
for(j=0;jprintf(“%5d”,A[i][j]);
printf(“\n”);
}
} / Per trovare la TRASPOSIZIONE di una MATRICE di QUALSIASI ORDINE /
void tra_matrix_1(int T[M][M],int A[M][M])
{
printf(“ La trasposizione di A è “);
for(i=0;i{
for(j=0;j{
T[i][j] = A[j][i];
printf(“%5d”,T[i][j]);
}
printf(“\n”);
}
} / Per AGGIUNGERE due MATRICE
( possibile, solo se sono di ORDINE UGUALE )
/
void add_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;ifor(j=0;jC[i][j] = A[i][j] + B[i][j];
printf(“ La somma di A e B è”);
} / Per MOLTIPLICARE MATRICE di QUALSIASI ORDINE
( a condizione che seguano la REGOLA DI MOLTIPLICAZIONE MATRICE )
/
void mul_matrix_1(int C[M][M],int A[M][M],int B[M][M])
{
int k;
printf(“ Il prodotto di A e B è.. “);
printf(“ Matrice C “);
for(i=0;i{
for(j=0;j{
C[i][j]=0;
for(k=0;kC[i][j] = C[i][j]+(A[i][k]B[k][j]);
printf(“%5d”,C[i][j]);
}
printf(“\n”);
}
} /
Per SOTTRARRE due MATRICE
( possibile, solo se sono di ORDINE UGUALE ) /
void sub_matrix(int C[M][M],int A[M][M],int B[M][M])
{
for(i=0;ifor(j=0;jC[i][j] = A[i][j] - B[i][j];
printf(“ La differenza di A e B è”);
} /
Un programma guidato da MENU per eseguire operazioni MATRICE */
#include
#include
int main()
{
int A[M][M],B[M][M],C[M][M],T[M][M]; char ch;
clrscr( );
printf(“ Inserisci gli elementi della matrice A.. “); read_matrix(A); r1=r; c1=c;
printf(“ Matrice A “); disp_matrix(A);
printf(“ Inserisci gli elementi della matrice B.. “); read_matrix(B); r2=r; c2=c;
printf(“ Matrice B “);disp_matrix(B);
do {
printf(“ 1:Aggiunta”);
printf(“ 2:Sottrazione”);
printf(“ 3:Moltiplicazione”);
printf(“ 4:Trasposizione”);
printf(“ 5:Esci”);
printf(“ Inserisci la tua scelta.. “); ch = getche();
switch(ch)
{
case ‘1’:
if(r1==r2 && c1==c2)
{
add_matrix(C,A,B);printf(“ Matrice C “);
disp_matrix(C);
}
else
{
printf(“ I valori di r1,r2 && c1,c2 che hai inserito non sono uguali, “);
printf(“ quindi non posso eseguire questa Aggiunta Matrice.”);
printf(“ Per favore inserisci le matrici corrette.”);
} break;

case ‘2’:
if(r1==r2 && c1==c2)
{
sub_matrix(C,A,B);printf(“ Matrice C “);
disp_matrix(C);
}
else
{
printf(“ I valori di r1,r2 && c1,c2 che hai inserito non sono uguali, “);
printf(“ quindi non posso eseguire questa Sottrazione Matrice.”);
printf(“ Per favore inserisci le matrici corrette.”);
} break;

case ‘3’:
if(c1==r2)
mul_matrix_1(C,A,B);
else
{
printf(“ Le colonne(c1) della Matrice A NON SONO UGUALI A”);
printf(“ Le righe(r2) della Matrice B.”);
printf(“ Quindi non posso eseguire questa Moltiplicazione Matrice.”);
printf(“ Per favore inserisci matrici tali che c1 == r2.”);
} break;

case ‘4’:   printf(“ L’ordine della Matrice A è %d x %d”,r1,c1);
tra_matrix_1(T,A);
printf(“ L’ordine della trasposizione di A è %d x %d”,c1,r1); break;

case ‘5’: printf(“ Questo terminerà il tuo programma.”); break;
}
printf(“ Vuoi eseguire di nuovo…[y/n]? “); ch=getche();
}while(ch!=’5’);
return 0;
}

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.