Esercizi di Programmazione in C: Gestione di Array e Matrici
Classified in Elettronica
Written at on italiano with a size of 5,29 KB.
Trasferimento di Dati tra Array
Questo codice dimostra come trasferire dati tra due array, a
e b
, in base a specifici criteri. L'array a
è di dimensioni 64x4, mentre l'array b
è di dimensioni 3x15.
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[64][4];
int b[3][15], i, regione, sumasup = 0, sumahab = 0, j;
j = 0;
regione = 1;
for (i = 0; i < 64; i++) {
if (a[i][0] == regione) {
sumasup += a[i][2];
sumahab += a[i][3];
}
if (a[i + 1][0] != regione) {
b[0][j] = regione;
b[1][j] = sumasup;
b[2][j] = sumahab;
j++;
sumasup = 0;
sumahab = 0;
regione++;
}
}
if (a[i - 1][0] == regione) {
sumasup += a[i - 1][2];
sumahab += a[i - 1][3];
}
return 0;
}
Spiegazione del Codice
- Il codice inizializza due array,
a
(64x4) eb
(3x15). - Vengono inizializzate le variabili
i
,regione
,sumasup
,sumahab
, ej
. - Il ciclo
for
itera attraverso le righe dell'arraya
. - Se l'elemento
a[i][0]
è uguale aregione
, vengono aggiornate le variabilisumasup
esumahab
sommando rispettivamentea[i][2]
ea[i][3]
. - Se l'elemento
a[i+1][0]
è diverso daregione
, significa che è cambiata la regione. In questo caso:- I valori di
regione
,sumasup
, esumahab
vengono copiati nell'arrayb
. j
viene incrementato per passare alla prossima colonna dib
.sumasup
esumahab
vengono resettati a 0.regione
viene incrementata.
- I valori di
- L'ultimo
if
gestisce il caso in cui l'ultima regione dell'arraya
non sia seguita da un cambio di regione.
Calcolo su Matrice 3x3
Questo codice richiede all'utente di inserire 9 numeri che vengono memorizzati in una matrice 3x3. Successivamente, calcola un risultato basato sulla posizione degli elementi nella matrice.
#include <stdio.h>
#include <conio.h>
#define F 3
#define C 3
int main() {
int a[F][C];
int num, risultato = 0, i, j;
for (i = 0; i < F; i++) {
for (j = 0; j < C; j++) {
printf("Inserire il numero: ");
scanf("%d", &num);
a[i][j] = num;
if ((i + j) % 2 == 0) {
risultato += num;
} else {
risultato -= num;
}
}
}
printf("Il risultato è %d", risultato);
getch();
return 0;
}
Spiegazione del Codice
- Viene definita una matrice
a
di dimensioni 3x3 (F
xC
). - Il codice richiede all'utente di inserire 9 numeri tramite due cicli
for
annidati. - Per ogni numero inserito:
- Se la somma degli indici di riga e colonna (
i+j
) è pari, il numero viene sommato arisultato
. - Se la somma degli indici è dispari, il numero viene sottratto da
risultato
.
- Se la somma degli indici di riga e colonna (
- Infine, viene stampato il valore di
risultato
.
Calcoli su Matrice 4x4
Questo codice richiede all'utente di inserire 16 numeri che corrispondono a una matrice 4x4. Calcola la somma della diagonale principale, della diagonale secondaria, della prima e ultima riga, e della prima e ultima colonna.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int matr[4][4], suma_dp = 0, suma_ds = 0, suma_pu_f = 0, suma_pu_c = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
printf("Inserire il numero [%i][%i]: ", i, j);
scanf("%i", &matr[i][j]);
}
}
for (int l = 0; l < 4; l++) {
suma_dp += matr[l][l];
suma_ds += matr[l][3 - l];
suma_pu_f += matr[0][l];
suma_pu_f += matr[3][l];
suma_pu_c += matr[l][0];
suma_pu_c += matr[l][3];
}
printf("La somma della diagonale principale: %i\n", suma_dp);
printf("La somma della diagonale secondaria: %i\n", suma_ds);
printf("La somma della prima e ultima riga: %i\n", suma_pu_f);
printf("La somma della prima e ultima colonna: %i\n", suma_pu_c);
system("pause");
return 0;
}
Spiegazione del Codice
- Viene definita una matrice
matr
di dimensioni 4x4. - Il codice richiede all'utente di inserire 16 numeri tramite due cicli
for
annidati. - Un altro ciclo
for
calcola:- La somma della diagonale principale (
suma_dp
). - La somma della diagonale secondaria (
suma_ds
). - La somma della prima e ultima riga (
suma_pu_f
). - La somma della prima e ultima colonna (
suma_pu_c
).
- La somma della diagonale principale (
- Infine, vengono stampati i risultati.