Wenn fertig, bitte Fenster schließen
// Lösung zu friend-Funktionen // Zuerst Dateien einbinden #include <iostream> using std::cout; using std::endl; // Konstante für Feldgrössen const int NOCOL = 3; const int NOROW = 3; // Vorwärtsdeklaration der Klasse Vector // Wird benötigt wegen friend-Deklaration in Matrix! class Vector; // Definition der Klasse Matrix class Matrix { friend void Multi(Matrix&, const Vector&); // friend-Funktion deklarieren short anMatrix[NOROW][NOCOL]; // Matrix-Daten public: Matrix(); void PrintIt() const; }; // Definition der Memberfunktionen // Konstruktor, initialisiert Matrix Matrix::Matrix() { for (short row=0; row<NOCOL; row++) for (short col=0; col<NOROW; col++) anMatrix[row][col] = row*static_cast<short>(10)+col; } // Gibt die Matrixdaten aus void Matrix::PrintIt() const { for (int row=0; row<NOROW; row++) { for (int col=0; col<NOCOL; col++) cout << anMatrix[row][col] << '\t'; cout << endl; } } // Definition der Klasse Vector class Vector { friend void Multi(Matrix&, const Vector&); // friend-Funktion deklarieren short anVector[NOROW]; // Vektor-Daten public: Vector(); }; // Definition der Memberfunktionen // Konstruktor, initialisiert Vektor Vector::Vector() { for (short col=0; col<NOROW; col++) anVector[col] = col+2; } // Definition der Funktion Multi(...) // Die Funktion ist friend zu Matrix und Vector und hat damit // Zugriff auf deren Daten void Multi(Matrix& TA, const Vector& TV) { for (int row=0; row<NOROW; row++) // Tabelle mit Vektordaten for (int col=0; col<NOCOL; col++) // multiplizieren TA.anMatrix[row][col] *= TV.anVector[row]; } // main() Funktion int main() { // Objekte vom Typ Matrix und Vector definieren Matrix myMatrix; Vector myVector; // Matrixdaten ausgeben cout << "Ausgangsmatrix:\n"; myMatrix.PrintIt(); // Multiplizieren der Matrix mit dem Vektor Multi(myMatrix, myVector); // Matrix erneut ausgeben cout << "Nach der Multiplikation:\n"; myMatrix.PrintIt(); } |