Esercizi di Programmazione in C: Gestione di Array e Matrici
Classificato in Elettronica
Scritto il in
italiano con una dimensione di 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
foritera attraverso le righe dell'arraya. - Se l'elemento
a[i][0]è uguale aregione, vengono aggiornate le variabilisumasupesumahabsommando 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, esumahabvengono copiati nell'arrayb. jviene incrementato per passare alla prossima colonna dib.sumasupesumahabvengono resettati a 0.regioneviene incrementata.
- I valori di
- L'ultimo
ifgestisce il caso in cui l'ultima regione dell'arrayanon 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
adi dimensioni 3x3 (FxC). - Il codice richiede all'utente di inserire 9 numeri tramite due cicli
forannidati. - 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
matrdi dimensioni 4x4. - Il codice richiede all'utente di inserire 16 numeri tramite due cicli
forannidati. - Un altro ciclo
forcalcola:- 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.