C++: Calcolare somma, media e diagonale principale di una matrice 3×3

Ecco un semplice programmino per calcolare somma, media e diagonale principale di una matrice 3×3 (vista come vettore bidimensionale):

#include <iostream.h>

void main()
{
 int v[3][3], somma, diagonale, i, j, n;
 float media;
 somma = 0;
 diagonale = 0;
 n = 0;
 for (i=0; i<3; i++) //inserisco gli elementi nella matrice
    for (j=0;j<3;j++)
  {
        cout << "inserisci l'elemento di posizione: " << i << j << endl;
        cin >> v[i][j];
  }
 for (i=0; i<3; i++) //calcolo somma e diagonale principale
    for (j=0;j<3;j++)
    {
        somma += v[i][j];
        if (i==j)
        diagonale += v[i][j];
    }
 for (i=0;i<3;i++)
    for(j=0;j<3;j++)
        n++;
 

cout << "La somma è: " << somma << endl;
media = ((float)somma)/n; //calcolo la media
cout << "La media è: " << media << endl;
cout << "La diagonale principale è: " << diagonale << endl;

}

Facciamo adesso alcune osservazioni. Come potete notare se non avessi utilizzato la conversione esplicita, cioè ((float)somma), nonostante la variabile media sia di tipo float, il risultato che avrei ottenuto sarebbe stato un int, poichè a monte vi è una somma di tipo intero. Avrei potuto ovviare a tale situazione semplicemente dichiarando la variabile somma non più come int ma come float:

#include <iostream.h>

void main()
{
 int v[3][3], diagonale, i, j, n;
 float media, somma;
 somma = 0;
 diagonale = 0;
 n = 0;
 for (i=0; i<3; i++) //inserisco gli elementi nella matrice
    for (j=0;j<3;j++)
  {
        cout << "inserisci l'elemento di posizione: " << i << j << endl;
        cin >> v[i][j];
  }
 for (i=0; i<3; i++) //calcolo somma e diagonale principale
    for (j=0;j<3;j++)
    {
        somma += v[i][j];
        if (i==j)
        diagonale += v[i][j];
    }
 for (i=0;i<3;i++)
    for(j=0;j<3;j++)
        n++;
 

cout << "La somma è: " << somma << endl;
media = somma/n; //calcolo la media
cout << "La media è: " << media << endl;
cout << "La diagonale principale è: " << diagonale << endl ;

}

A presto! 

C++: Calcolare somma, media e diagonale principale di una matrice 3×3ultima modifica: 2008-04-18T19:29:00+02:00da nazarenolatella
Reposta per primo quest’articolo

4 pensieri su “C++: Calcolare somma, media e diagonale principale di una matrice 3×3

  1. Ciao Gennaro. Nel codice da me riportato ho utilizzato due cicli for annidati per “scorrere” tutti gli elementi che costituiscono la matrice. In particolare, il primo ciclo for (che utilizza come indice i) serve per scorrere le righe, mentre il secondo (che utilizza come indice j) serve per scorrere le colonne.
    La condizione if(i == j) serve invece ad individuare gli elementi che fanno parte della diagonale principale (ovvero quelli il cui indice riga ed il cui indice colonna corrispondono).
    Spero di esserti stato utile, ciao.

  2. Vorrei sapere come calcolare la diagonale secondaria e il triangolo superiore sinistro e il triangolo inferiore destro,ovvero in una matrice 3×3 per esempio la posizione 1,2 e 4 grazie.

  3. Ciao Marco. Per sommare gli elementi della diagonale secondaria di una matrice 3X3 ti basta lavorare con gli indici di riga e di colonna. In particolare, gli indici degli elementi dovrebbero essere i seguenti:

    00 01 02
    10 11 12
    20 21 22

    Come puoi facilmente notare, la diagonale secondaria è caratterizzata dagli indici 02, 11 e 20. La somma di questi indici è sempre uguale a 2, quindi potresti usare due cicli annidati e scrivere come condizione che la somma degli indici sia uguale a 2.

    Seguendo una logica simile potresti calcolare il triangolo superiore sinistro, sommando alla diagonale secondaria gli elementi della matrice la cui somma degli indici è minore uguale a 1.

    Per il triangolo inferiore destro alla diagonale secondaria devi sommare gli elementi i cui indici sono compresi tra 3 e 4 (estremi inclusi).

    Ciao.

I commenti sono chiusi.