matrixen



  • ich möchte ein programm schreiben das die gleichung berechnen und das so auf gelöst wird

    z.b 3 4 5 6
    8 9 5 3
    7 5 4 3

    3 4 5 6
    0 9 5 3
    0 0 4 3

    3 0 0 6
    0 9 5 3
    0 0 4 3

    1 0 0 6
    0 1 0 3
    0 0 1 3

    #include "iostream"
    using namespace std;
    
    void main (void)
    
    {
    	int spalte,zeile,matrix[4][3];
    	double ergbnis_1[4][3],ergbnis_2[4][3];;
    	cout <<"\n\tGeben Sie eine 3 x 4 Matrix ein";
    	cout <<"\n\n";
    
    		for(zeile=0;zeile<=2;zeile++)
    		{
    		cout<<"\n";
    		for(spalte=0;spalte<=3;spalte++)
    		{
    		cin >>matrix[zeile][spalte];
    		}
    		}
    		cout <<endl<<""<<endl;
    		cout <<endl;
    		cout <<"\t"<<matrix[0][0];
    		cout <<"\t"<<matrix[0][1];
    		cout <<"\t"<<matrix[0][2];
    		cout <<"\t"<<matrix[0][3];
    		cout << endl;
    		cout <<"\t"<<matrix[1][0];
    		cout <<"\t"<<matrix[1][1];
    		cout <<"\t"<<matrix[1][2];
    		cout <<"\t"<<matrix[1][3];
    		cout << endl;
    		cout <<"\t"<<matrix[2][0];
    		cout <<"\t"<<matrix[2][1];
    		cout <<"\t"<<matrix[2][2];
    		cout <<"\t"<<matrix[2][3];
    		cout <<endl<<""<<endl;
    		cout <<endl;
    		ergbnis[0][0]=matrix[0][0]*matrix[1][0];
    		cout <<"\t"<<matrix[0][1]*matrix[1][0];
    		cout <<"\t"<<matrix[0][2]*matrix[1][0];
    		cout <<"\t"<<matrix[0][3]*matrix[1][0];
    		cout << endl;
    		cout <<"\t"<<matrix[1][0]*matrix[0][0];
    		cout <<"\t"<<matrix[1][1]*matrix[0][0];
    		cout <<"\t"<<matrix[1][2]*matrix[0][0];
    		cout <<"\t"<<matrix[1][3]*matrix[0][0];
    		cout << endl;
    		cout <<"\t"<<matrix[2][0];
    		cout <<"\t"<<matrix[2][1];
    		cout <<"\t"<<matrix[2][2];
    		cout <<"\t"<<matrix[2][3];
    		cout << endl<<endl<<endl;
    		cout <<endl<<""<<endl;
    		cout <<"\t"<<ergbnis[0][0];
    		cout <<"\t"<<matrix[0][1];
    		cout <<"\t"<<matrix[0][2];
    		cout <<"\t"<<matrix[0][3];
    		cout << endl;
    		cout <<"\t"<<matrix[0][0]-matrix[1][0];
    		cout <<"\t"<<matrix[0][1]-matrix[1][1];
    		cout <<"\t"<<matrix[0][2]-matrix[1][2];
    		cout <<"\t"<<matrix[0][3]-matrix[1][3];
    		cout << endl;
    		cout <<"\t"<<matrix[2][0];
    		cout <<"\t"<<matrix[2][1];
    		cout <<"\t"<<matrix[2][2];
    		cout <<"\t"<<matrix[2][3];
    		cout <<endl<<endl;
                    ergbnis_2[0][0]=ergbnis_1[0][0]*matrix[2][0];
    		cout <<"\t"<<ergbnis_2[0][0];
    		ergbnis_2[0][1]=ergbnis_1[0][1]*matrix[2][0];
    		cout <<"\t"<<ergbnis_2[0][1];
    		ergbnis_2[0][2]=ergbnis_1[0][2]*matrix[2][0];
    		cout <<"\t"<<ergbnis_2[0][2];
    		ergbnis_2[0][3]=ergbnis_1[0][3]*matrix[2][0];
    		cout <<"\t"<<ergbnis_2[0][3];
    		cout <<endl;
    		cout <<"\t"<<ergbnis_2[1][0];
    		cout <<"\t"<<ergbnis_2[1][1];
    		cout <<"\t"<<ergbnis_2[1][2];
    		cout <<"\t"<<ergbnis_2[1][3];
    		cout <<endl;
    		ergbnis_1[2][0]=ergbnis_1[0][0]*matrix[2][0];
    		cout <<"\t"<<ergbnis_1[2][0];
    		ergbnis_1[2][1]=ergbnis_1[0][1]*matrix[2][1];
    		cout <<"\t"<<ergbnis_1[2][1];
    		ergbnis_1[2][2]=ergbnis_1[0][2]*matrix[2][2];
    		cout <<"\t"<<ergbnis_1[2][2];
    		ergbnis_1[2][3]=ergbnis_1[0][3]*matrix[2][3];
    		cout <<"\t"<<ergbnis_1[2][3];
    		cout <<endl<<endl;
    }
    

    kann ein den fehler erklären



  • Zeile 69.



  • Nexus schrieb:

    Zeile 69.

    jup.
    leider bin ich mod hier. sonst hätte ich...
    ich muß mal nachdenken, ob marc++us mich nicht nur verarscht hat, als er mich zum mod machte, damit ich hier weniger rumtrolle.

    @moonlight-x
    im prinzip mußt du die aufgabe auf einem platt paper lösen und dann alle schritte, die du machst, genauso als c++-befehle hinschreiben.

    solche zuweisungen wie

    ergbnis[0][0]=matrix[0][0]*matrix[1][0];
    

    sehe ich in deinem code viel zu selten.

    der code sollte sein

    cout <<"\t"<<matrix[0][0];
            cout <<"\t"<<matrix[0][1];
            cout <<"\t"<<matrix[0][2];
            cout <<"\t"<<matrix[0][3];
            cout << endl;
            cout <<"\t"<<matrix[1][0];
            cout <<"\t"<<matrix[1][1];
            cout <<"\t"<<matrix[1][2];
            cout <<"\t"<<matrix[1][3];
            cout << endl;
            cout <<"\t"<<matrix[2][0];
            cout <<"\t"<<matrix[2][1];
            cout <<"\t"<<matrix[2][2];
            cout <<"\t"<<matrix[2][3];
            cout <<endl<<""<<endl;
    
    //rechnerechnerechne
    
            cout <<"\t"<<matrix[0][0];
            cout <<"\t"<<matrix[0][1];
            cout <<"\t"<<matrix[0][2];
            cout <<"\t"<<matrix[0][3];
            cout << endl;
            cout <<"\t"<<matrix[1][0];
            cout <<"\t"<<matrix[1][1];
            cout <<"\t"<<matrix[1][2];
            cout <<"\t"<<matrix[1][3];
            cout << endl;
            cout <<"\t"<<matrix[2][0];
            cout <<"\t"<<matrix[2][1];
            cout <<"\t"<<matrix[2][2];
            cout <<"\t"<<matrix[2][3];
            cout <<endl<<""<<endl;
    
    //rechnerechnerechne
    
            cout <<"\t"<<matrix[0][0];
            cout <<"\t"<<matrix[0][1];
            cout <<"\t"<<matrix[0][2];
            cout <<"\t"<<matrix[0][3];
            cout << endl;
            cout <<"\t"<<matrix[1][0];
            cout <<"\t"<<matrix[1][1];
            cout <<"\t"<<matrix[1][2];
            cout <<"\t"<<matrix[1][3];
            cout << endl;
            cout <<"\t"<<matrix[2][0];
            cout <<"\t"<<matrix[2][1];
            cout <<"\t"<<matrix[2][2];
            cout <<"\t"<<matrix[2][3];
            cout <<endl<<""<<endl;
    

    und so weiter.

    dabei wird in

    //rechnerechnerechne
    

    auf der matrix selbst gearbeitet!

    ergbnis[sowas][auchwas]=ergbnis[sowas][auchwas]-matrix[nochwas][dort]*matrix[dort][woanders];
    

    also daß du wirklich die matrixelemente veränderst. genauso, wie du es auf papier tust.

    wenn du das schaffst, und das ist schon eine ganze menge, kommt danach die zauberei: mach möglichst viel mit schleifen.

    zum beispiel zerfällt

    cout <<"\t"<<matrix[0][0];
            cout <<"\t"<<matrix[0][1];
            cout <<"\t"<<matrix[0][2];
            cout <<"\t"<<matrix[0][3];
            cout << endl;
            cout <<"\t"<<matrix[1][0];
            cout <<"\t"<<matrix[1][1];
            cout <<"\t"<<matrix[1][2];
            cout <<"\t"<<matrix[1][3];
            cout << endl;
            cout <<"\t"<<matrix[2][0];
            cout <<"\t"<<matrix[2][1];
            cout <<"\t"<<matrix[2][2];
            cout <<"\t"<<matrix[2][3];
            cout <<endl<<""<<endl;
    

    zu

    //dies ist der anzeigecode
       for(int i=0;i<3;++i)
       {
            cout <<"\t"<<matrix[i][0];
            cout <<"\t"<<matrix[i][1];
            cout <<"\t"<<matrix[i][2];
            cout <<"\t"<<matrix[i][3];
            cout << endl;
       }
    

    wenn du diesem trick mit den schleifen dann ganz oft anwendest, zerfällt dein code in irgendwas seltsames, das zwar kein mensch mehr lesen kann, das aber total wenig zeilen hat.
    deine wirkliche aufgabe ist es, zu lernen, solchen code, den kein mensch lesen kann und den kein mensch schreiben kann, doch zu lesen und zu schreiben. dann bist du informatiker.
    übrigens ist in dem anzeigecode noch eine möglichkeit versteckt, eine schleife zu bauen. vesuch's mal. danach hast du keine gleichartzigen zeilen hintereinander. in der richtung mußt du suchen und experimentieren.



  • sagen dir klassen und operator-überladung nichts?
    das sieht ja echt grausam aus -.-
    auch mit schleifen etc wie volkard es beschrieben hatte wird es noch nicht besonders hübsch aussehen ><

    bb


Anmelden zum Antworten