Estratto del documento

Classe matrix

#include <iostream>

using namespace std;

// modello della classe matrix

class matrix{

public:

matrix(int,int,int,int,int,int,int,int,int);

matrix();

void setidentity();

int getitem(int,int);

void setitem(int,int,int);

void print();

private:

int dati[3][3];

// gli operatori overloadati non sono funzioni membro, ma devono poter

accedere

// ai dati private di ogni istanza della classe, dunque li si dichiara

come friend:

friend ostream& operator<< (ostream&, const matrix&);

friend matrix operator+ (const matrix&, const matrix&);

friend matrix& operator+= (matrix&, const matrix&);

friend matrix operator* (const matrix&, const matrix&);

friend matrix operator* (const int, const matrix&);

friend bool operator== (const matrix&, const matrix&);

};

// codice della classe matrix

matrix::matrix(){

// costruttore di default: tutti gli elementi a zero.

int i,j;

for (i=0;i<=2;i++){

for (j=0;j<=2;j++){

dati[i][j]=0;

}

}

}

matrix::matrix(int a11, int a12, int a13, int a21, int a22, int a23, int a31,

int a32, int a33){

// costruttore con valori dati nella dichiarazione

dati[0][0]=a11;

dati[0][1]=a12;

dati[0][2]=a13;

dati[1][0]=a21;

dati[1][1]=a22;

dati[1][2]=a23;

dati[2][0]=a31;

dati[2][1]=a32;

dati[2][2]=a33;

}

void matrix::setidentity(){

// imposta la matrice all'identita' 3x3

int i,j;

for (i=0;i<=2;i++){

for (j=0;j<=2;j++){

dati[i][j]=(i==j?1:0);

// questo e' un delta di Kronecker

}

}

}

int matrix::getitem(int row, int column){

// funzione membro per leggere da fuori un elemento

if (row>2 || row<0 || column>2 || column<0) return 0;

return dati[row][column];

}

void matrix::setitem(int row, int column, int newvalue){

// impostare da fuori il valore di un elemento di matrice

if (row>2 || row<0 || column>2 || column<0) return;

dati[row][column] = newvalue;

}

void matrix::print(){

// stampa in forma matriciale (righe e colonne: vedi l'uso di endl e di

"\t") int i,j;

for (i=0;i<=2;i++){

for (j=0;j<=2;j++){

cout << dati[i][j] << "\t";

}

cout << endl;

}

}

// overloading degli operatori:

ostream& operator<< (ostream& os, const matrix& m){

// vedi print()

int i,j;

for (i=0;i<=2;i++){

for (j=0;j<=2;j++){

os << m.dati[i][j] << "\t";

}

os << endl;

}

Anteprima
Vedrai una selezione di 1 pagina su 4
Programma C++ - Matrice 3x3 fissa Pag. 1
1 su 4
Sintesi

Matrice 3x3 fissa in C++

Il programma permette di implementare una classe matrice (di dimensioni fisse 3x3 e a valori interi) che supporti le seguenti condizioni:

  • 1- Due costruttori: uno senza inizializzazione (che mette a zero tutti gli elementi) e uno che permetta una dichiarazione del tipo, matrice m2(1,0,4,5,5,0,0,4,-3);
  • 2- Una funzione membro print() che stampa in forma righe e colonne la matrice, m2.print();
  • 3- Una funzione membro setidentity che imposta la matrice al valore "identità 3x3", m2.setidentity();
  • 4- Due funzioni di accesso in lettura/scrittura ai singoli elementi di matrice, int b = m2.getitem(i,j), m2.setitem(i,j,valore);
  • 5- L'uso di operatori tra oggetti di tipo matrice, quali ad esempio, l'inserzione su output stream (sempre in forma righe e colonne).
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi