003
18.10.2003, 00:26 Uhr
~stempe
Gast
|
Mein Programm ist ein wenig aufwendiger und da geht es nicht.
Gib mal die Matrix
1 1 -1 1 -1 1 -1 1 1
ein.
C++: |
#include <iostream.h> #include <stdio.h> #include <math.h>
const int zeilen=2; const int spalten=2;
typedef float matrix[zeilen][spalten];
class Matrixrechnung { public: matrix a; matrix b; matrix c; matrix d; matrix e; matrix f; matrix g; matrix h; matrix k; matrix l; matrix m;
public: void Matrixrechnung::eingabe(); void Matrixrechnung::ausgabe(); void Matrixrechnung::Transponiert(); void Matrixrechnung::Allgemein(); void Matrixrechnung::Determ(); void Matrixrechnung::Invers(); }; void Matrixrechnung::Allgemein() { cout<<"Programm zur Berechnung einer beliebigen Transponierten Matrix"<<endl<<endl; cout<<"zur Berechnung der Determinante einer 2x2 oder 3x3 Matrix"<<endl<<endl; cout<<"zur Berechnung der Inversen einer 3x3 Matrix"<<endl<<endl; } void Matrixrechnung::eingabe() { int i,j; i=0; while(i<zeilen) {j=0; while(j<spalten) { printf("Geben sie den Wert fuer x%i%i ein:\n",i+1,j+1); cin>>a[i][j]; j++; } i++; } }
void Matrixrechnung::ausgabe()
{ printf("Ihre eingegebene Matrix ist: \n\n"); int i,j;
i=0; while(i<zeilen) { j=0; while(j<spalten) { cout<<" "; cout<<a[i][j]; cout<<" "; j++; }cout<<""<<endl<<endl; i++; } cout<<""<<endl<<endl; }
void Matrixrechnung::Transponiert()
{ printf("Die Transponierte Matrix ist: \n\n"); int i,j;
j=0; while(j<spalten) { i=0; while(i<zeilen) { cout<<" "; cout<<a[i][j]; cout<<" ";
i++; }cout<<""<<endl<<endl; j++; } cout<<""<<endl<<endl; }
void Matrixrechnung::Determ()
{ switch(zeilen)
{case 2: { int i,j; i=0;j=0; {cout<<"Die Determinante ist: "; b[i][j]=(a[0][0]*a[1][1])-(a[0][1]*a[1][0]); cout<<b[i][j]; cout<<" "; }
}
break;
case 3: { int i,j; i=0;j=0; {cout<<"Die Determinante ist: "; b[i][j]=(a[0][0]*a[1][1]*a[2][2])+(a[0][1]*a[1][2]*a[2][0])+(a[0][2]*a[1][0]*a[2][1])-(a[0][2]*a[1][1]*a[2][0])-(a[0][0]*a[1][2]*a[2][1])-(a[0][1]*a[1][0]*a[2][2]); cout<<b[i][j]; cout<<" "; } }
break;
default: cout<<"!!!!! Achutung !!!!!"<<endl; cout<<"Es kann nur die Determinante "<<endl; cout<<"von einer 2x2 oder eine 3x3 Matrix berechnet werden!";
} }
void Matrixrechnung::Invers() {int i,j; i=0;j=0; if(b[i][j]!=0) { switch(zeilen) {
case 3: { int i,j; i=0;j=0; { c[i][j]=(a[1][1]*a[2][2])-(a[1][2]*a[2][1]);//*(1/b[i][j]); d[i][j]=-((a[1][0]*a[2][2])-(a[1][2]*a[2][0]));//*(1/b[i][j]); e[i][j]=(a[1][0]*a[2][1])-(a[1][1]*a[2][0]);//*(1/b[i][j]); //hier macht er die Mulitplikation (1*1)-(-1*-1)=2 //Ergebnis ist aber eigentlich 0. Warum ? f[i][j]=-((a[0][1]*a[2][2])-(a[0][2]*a[2][1]));//*(1/b[i][j]); g[i][j]=(a[0][0]*a[2][2])-(a[0][2]*a[2][0]);//*(1/b[i][j]); h[i][j]=-((a[0][0]*a[2][1])-(a[0][1]*a[2][0]));//*(1/b[i][j]); k[i][j]=(a[0][1]*a[1][2])-(a[0][2]*a[1][2]);//*(1/b[i][j]); l[i][j]=-((a[0][0]*a[1][2])-(a[0][2]*a[1][0]));//*(1/b[i][j]); m[i][j]=(a[0][0]*a[1][1])-(a[0][1]*a[1][0]);//*(1/b[i][j]); cout<<"Die Inverse ist: "<<endl<<endl; cout<<c[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<f[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<k[i][j];cout<<" ";cout<<" ";cout<<" "<<endl; cout<<d[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<g[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<l[i][j];cout<<" ";cout<<" ";cout<<" "<<endl; cout<<e[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<h[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<m[i][j];cout<<" ";cout<<" ";cout<<" "<<endl; } } break;
case 2: { int i,j; i=0;j=0; { c[i][j]=a[1][1];//*(1/b[i][j]); d[i][j]=-(a[1][0]);//*(1/b[i][j]); e[i][j]=-(a[0][1]);//*(1/b[i][j]); f[i][j]=a[0][0];//*(1/b[i][j]); cout<<"Die Inverse ist: "<<endl<<endl; cout<<c[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<e[i][j];cout<<" ";cout<<" ";cout<<" "<<endl; cout<<e[i][j];cout<<" ";cout<<" ";cout<<" "; cout<<f[i][j];cout<<" ";cout<<" ";cout<<" "<<endl; } } break;
default: cout<<"!!!!! ACHTUNG!!!!"<<endl; cout<<"Die Inverse kann nur fuer eine 3x3 oder 2x2 Matrix berechnet werden!"<<endl; } } else cout<<"Die Inverse kann nicht berechnet werden da die Determinante 0 ist: "<<endl; }
void main (void) { Matrixrechnung objMatrixrechnung; objMatrixrechnung.Allgemein(); cout<<""<<endl; objMatrixrechnung.eingabe(); objMatrixrechnung.ausgabe(); objMatrixrechnung.Transponiert(); objMatrixrechnung.Determ(); cout<<""<<endl; cout<<""<<endl; objMatrixrechnung.Invers(); cout<<""<<endl; cout<<""<<endl; }
|
--edit: Pablo. [ cpp ] tags gesetzt -- Dieser Post wurde am 18.10.2003 um 01:21 Uhr von Pablo Yanez Trujillo editiert. |