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) e b (3x15).
  • Vengono inizializzate le variabili i, regione, sumasup, sumahab, e j.
  • Il ciclo for itera attraverso le righe dell'array a.
  • Se l'elemento a[i][0] è uguale a regione, vengono aggiornate le variabili sumasup e sumahab sommando rispettivamente a[i][2] e a[i][3].
  • Se l'elemento a[i+1][0] è diverso da regione, significa che è cambiata la regione. In questo caso:
    • I valori di regione, sumasup, e sumahab vengono copiati nell'array b.
    • j viene incrementato per passare alla prossima colonna di b.
    • sumasup e sumahab vengono resettati a 0.
    • regione viene incrementata.
  • L'ultimo if gestisce il caso in cui l'ultima regione dell'array a 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 (FxC).
  • 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 a risultato.
    • Se la somma degli indici è dispari, il numero viene sottratto da risultato.
  • 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).
  • Infine, vengono stampati i risultati.

Entradas relacionadas: