Gli array sono delle strutture dati molto basilari in C. Li potete vedere come una serie di elementi uno di fila all’altro TUTTI DELLO STESSO TIPO. Gli array, in un certo senso, li potete visualizzare come le liste in python.
int a[5]={1,2,3,4,5}
questo è il codice per dichiarare un array di nome “a”, di tipo intero. RICORDATE: dovete sempre dichiarare la dimensione dell’array! Dovete dire al compilatore, quanto sarà grande quell’array, e la sua dimensione NON POTRA ESSERE CAMBIATA.
Li potete usare per fare un sacco di roba simpatica, ma ricordatevi che non siete più in python! non ci sono più funzioni tipo
print(a)
per stampare tutto l’array! Per fare cose di questo genere dovrete usare dei cicli! Questo è figo, perchè vi farà capire che tutte quelle operazioni che a voi sembravano semplici e immediate con python in realtà impiegano del tempo! Si fanno tutte con un ciclo for!
int a[5]={1,2,3,4,5}
printf("%d",a[2]);
questa printf stampa il valore dell’array con indice 2 (il terzo elemento)
a[2]=10;
questa istruzione assegna alla terza posizione dell’array a il valore 10.
ESERCIZIO1: Assegnamento e Stampa
Fai un programma che definisce un array di cinque elementi, che vanno da 1 a cinque. e stampali usando un ciclo for
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[5] = {1, 2, 3, 4, 5};
// Stampa degli elementi dell'array
for (int i = 0; i < 5; i++) {
printf("%d ", numeri[i]);
}
printf("\n");
return 0;
}
Breakdown
int numeri[5] = {1, 2, 3, 4, 5};
: Dichiarazione e inizializzazione di un array di interi con cinque elementi.for (int i = 0; i < 5; i++) { ... }
: Ciclo for per scorrere e stampare gli elementi dell’array.
ESERCIZIO2: Somma degli Elementi
Fai un programma che definisce un array, e somma tutti gli elementi, stampando la somma totale.
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[5] = {1, 2, 3, 4, 5};
int somma = 0;
// Calcolo della somma degli elementi dell'array
for (int i = 0; i < 5; i++) {
somma += numeri[i];
}
// Stampa della somma
printf("Somma degli elementi: %d\n", somma);
return 0;
}
Breakdown
int somma = 0;
: Dichiarazione e inizializzazione di una variabile per la somma.somma += numeri[i];
: Aggiornamento della variabile somma con l’aggiunta di ciascun elemento dell’array.printf("Somma degli elementi: %d\n", somma);
: Stampa della somma degli elementi.
ESERCIZIO3: Trova l’Elemento Massimo
Fai un programma che definisce un array e trova il numero massimo di quell’array
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[5] = {10, 5, 8, 15, 7};
int massimo = numeri[0]; // Assume che il primo elemento sia il massimo
// Trova l'elemento massimo nell'array
for (int i = 1; i < 5; i++) {
if (numeri[i] > massimo) {
massimo = numeri[i];
}
}
// Stampa dell'elemento massimo
printf("Elemento massimo: %d\n", massimo);
return 0;
}
Breakdown
int massimo = numeri[0];
: Inizializzazione della variabile massimo con il primo elemento dell’array.if (numeri[i] > massimo) { ... }
: Verifica se l’elemento corrente è maggiore del massimo attuale e, in caso affermativo, aggiorna il valore massimo.printf("Elemento massimo: %d\n", massimo);
: Stampa dell’elemento massimo.
ESERCIZIO4: Ricerca di un Elemento
Fai un programma che definisce un array e ne trova un numero specifico (tipo l’8) e se lo trova ti dice che l’ha trovato, altrimenti ti dice che non l’ha trovato
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[5] = {10, 5, 8, 15, 7};
int elemento_cercato = 8;
int trovato = 0; // 0 indica che l'elemento non è stato trovato
// Ricerca dell'elemento nell'array
for (int i = 0; i < 5; i++) {
if (numeri[i] == elemento_cercato) {
trovato = 1; // L'elemento è stato trovato
break; // Interrompi il ciclo
}
}
// Stampa del risultato della ricerca
if (trovato) {
printf("L'elemento %d è stato trovato.\n", elemento_cercato);
} else {
printf("L'elemento %d non è stato trovato.\n", elemento_cercato);
}
return 0;
}
Breakdown
int elemento_cercato = 8;
: Dichiarazione e assegnazione dell’elemento da cercare nell’array.int trovato = 0;
: Inizializzazione della variabile che indica se l’elemento è stato trovato.if (numeri[i] == elemento_cercato) { ... }
: Verifica se l’elemento corrente è uguale all’elemento cercato.trovato = 1; break;
: Imposta la variabiletrovato
a 1 se l’elemento è stato trovato e interrompe il ciclo.- Stampa del risultato della ricerca.
ESERCIZIO5: Copia di Array
Fai un programma che definisce un array, e copia il contenuto di quell’array. ATTENZIONE: non basta fare un assegnamento, se fai solo l’assegnamento, non stai copiando il contenuto dell’array, stai solo dicendo all’altra variabile di puntare al vecchio array, io voglio una COPIA.
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di due array
int array_orig[5] = {1, 2, 3, 4, 5};
int array_copia[5];
// Copia degli elementi da array_orig a array_copia
for (int i = 0; i < 5; i++) {
array_copia[i] = array_orig[i];
}
// Stampa degli elementi di array_copia
printf("Array copiato: ");
for (int i = 0; i < 5; i++) {
printf("%d ", array_copia[i]);
}
printf("\n");
return 0;
}
Breakdown
int array_copia[5];
: Dichiarazione di un secondo array che sarà la copia.array_copia[i] = array_orig[i];
: Copia degli elementi daarray_orig
aarray_copia
.- Stampa degli elementi di
array_copia
.
ESERCIZIO6: Somma di Elementi tra Due Array
Fai un programma che presi due array li somma tra di loro. ESEMPIO: se gli array sono
int array1[5] = {1, 2, 3, 4, 5};
int array2[5] = {6, 7, 8, 9, 10};
la loro somma sarà:
{7,9,11,13,15}
SOLUZIONE:
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di due array
int array1[5] = {1, 2, 3, 4, 5};
int array2[5] = {6, 7, 8, 9, 10};
int somma[5];
// Calcolo della somma degli elementi tra array1 e
array2
for (int i = 0; i < 5; i++) {
somma[i] = array1[i] + array2[i];
}
// Stampa degli elementi della somma
printf("Somma degli elementi: ");
for (int i = 0; i < 5; i++) {
printf("%d ", somma[i]);
}
printf("\n");
return 0;
}
Breakdown
int somma[5];
: Dichiarazione di un terzo array per contenere la somma.somma[i] = array1[i] + array2[i];
: Calcolo della somma degli elementi traarray1
earray2
.- Stampa degli elementi della somma.
ESERCIZIO7: Ordinamento di Array
Dato un array, ordinalo e stampalo, puoi fare un ordinamento semplice tipo bubble sort, o selection sort, oppure fare qualcosa di complicato tipo merge sort, e farmi felice.
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[6] = {5, 2, 9, 1, 5, 6};
int temp;
// Ordinamento degli elementi in modo crescente (Bubble Sort)
for (int i = 0; i < 6 - 1; i++) {
for (int j = 0; j < 6 - i - 1; j++) {
if (numeri[j] > numeri[j + 1]) {
// Scambio gli elementi se sono fuori ordine
temp = numeri[j];
numeri[j] = numeri[j + 1];
numeri[j + 1] = temp;
}
}
}
// Stampa degli elementi ordinati
printf("Array ordinato: ");
for (int i = 0; i < 6; i++) {
printf("%d ", numeri[i]);
}
printf("\n");
return 0;
}
Breakdown
int temp;
: Dichiarazione di una variabile temporanea per facilitare lo scambio di elementi durante l’ordinamento.- Algoritmo di ordinamento Bubble Sort per ordinare gli elementi in modo crescente.
- Stampa degli elementi ordinati.
ESERCIZIO8: Rimozione di Duplicati da un Array
Dato un array rimuovi gli elementi duplicati
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array con duplicati
int numeri[8] = {1, 2, 3, 2, 4, 3, 5, 6};
int nuovi_numeri[8];
int n = 0; // Numero di elementi unici
// Rimozione dei duplicati
for (int i = 0; i < 8; i++) {
int duplicato = 0;
// Verifica se l'elemento è già presente in nuovi_numeri
for (int j = 0; j < n; j++) {
if (numeri[i] == nuovi_numeri[j]) {
duplicato = 1;
break;
}
}
// Se non è un duplicato, aggiungi a nuovi_numeri
if (!duplicato) {
nuovi_numeri[n++] = numeri[i];
}
}
// Stampa degli elementi senza duplicati
printf("Array senza duplicati: ");
for (int i = 0; i < n; i++) {
printf("%d ", nuovi_numeri[i]);
}
printf("\n");
return 0;
}
Breakdown
int nuovi_numeri[8];
: Dichiarazione di un array per contenere gli elementi senza duplicati.- Utilizzo di un secondo array (
nuovi_numeri
) e di una variabilen
per tenere traccia del numero di elementi unici. - Verifica se l’elemento è già presente in
nuovi_numeri
prima di aggiungerlo.
ESERCIZIO9: Rotazione a Sinistra di un Array
La rotazione a sinistra significa che se l’array è tipo
a[5]={1,2,3,4,5}
l’array rotato è
{2,3,4,5,1}
come se avessi spostato in numeri di un passo a sinistra, e l’uno che era il primo numero diventa l’ultimo.
Fai un programma che dato un array fa lo shift a sinistra
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di un array
int numeri[5] = {1, 2, 3, 4, 5};
int temp = numeri[0];
// Rotazione a sinistra di un passo
for (int i = 0; i < 4; i++) {
numeri[i] = numeri[i + 1];
}
// Assegnazione del primo elemento alla fine
numeri[4] = temp;
// Stampa dell'array dopo la rotazione
printf("Array dopo la rotazione: ");
for (int i = 0; i < 5; i++) {
printf("%d ", numeri[i]);
}
printf("\n");
return 0;
}
Breakdown
int temp = numeri[0];
: Memorizzazione del primo elemento in una variabile temporanea.- Spostamento degli elementi verso sinistra di un passo.
- Assegnazione del valore memorizzato alla fine dell’array.
- Stampa dell’array dopo la rotazione.
ESERCIZIO10: Concatenazione di Due Array
Fare un programma che dati due array stampa la concatenazione dei due array. tipo se gli array sono:
a1[5]={1,2,3,4,5}
a2[3]={6,7,8}
L’array concatenato è:
{1,2,3,4,5,6,7,8}
#include <stdio.h>
int main() {
// Dichiarazione e assegnamento di due array
int array1[5] = {1, 2, 3, 4, 5};
int array2[3] = {6, 7, 8};
int risultato[8];
// Copia degli elementi da array1 a risultato
for (int i = 0; i < 5; i++) {
risultato[i] = array1[i];
}
// Copia degli elementi da array2 a risultato
for (int i = 0; i < 3; i++) {
risultato[i + 5] = array2[i];
}
// Stampa dell'array risultante
printf("Array concatenato: ");
for (int i = 0; i < 8; i++) {
printf("%d ", risultato[i]);
}
printf("\n");
return 0;
}
Breakdown
int risultato[8];
: Dichiarazione di un terzo array per contenere la concatenazione.- Copia degli elementi da
array1
arisultato
. - Copia degli elementi da
array2
arisultato
partendo dalla posizione successiva alla fine diarray1
. - Stampa dell’array risultante.
Per continuare
per continuare potete fare esercizi sulle funzioni