Matrizenmultiplikation



  • Warum funktioniert folgendes Programm nicht?
    Im Konsolenfenster werden viel zu kleine Werte angegeben.

    /*******************************************************************
    *********************Matrizenmultiplikation*************************
    ********************************************************************
    ********************************************************************/
    
    // Thema: Matrizenmultiplikation
    // Datum: 11.07.2014
    // Autor: Andreas Lauer
    
    # include<iostream>
    using namespace std;
    
    int main()
    {
          double matrix1[3][3];
          double matrix2[3][3];
          double c [3][3];
          //Einlesen der Matrizen
          cout<<"Bitte geben Sie die erste 3x3 Matrix ein"<<endl;
          for (int i = 0; i < 3; i++)
          {
              for (int j = 0; j < 3; j++)
              {
              cin>>matrix1[i][j];
              }
          }
          cout<<"Bitte geben Sie die zweite 3x3 Matrix ein"<<endl;
          for (int i = 0; i < 3; i++)
          {
              for (int j = 0; j < 3; j++)
              {
              cin>>matrix2[i][j];
              }
          }
          //Ausgeben der Lösungsmatrix
          cout<<" Die Lösungmatrix ist "<<endl;
          for(int i=1;i<=3;i++)
          {
                  for(int j=1;j<=3;j++)
                  {
                  c[i][j] = 0; 
                          for(int k=1;k<=3;k++)
                          {
                          c[i][j]+=matrix1[i][k]*matrix2[k][j];
                          }
                          cout<<c[i][j]<<" ";
                  }
                  cout<<endl;
          }
          cout<<endl;
    return 0;
    }
    

    ~(Edit v. Arcoth, Code-Tags)~



  • Die Indices eines Arrays mit Grösse n sind im Bereich [0, n) . D.h., n selbst ist kein gültiger Index. Auf genau diesen greifst du aber zu in der Zeile 42.

    Edit:
    Wieso schreibst du endl obwohl du eigentlich '\n' möchtest?



  • Dann schau dir mal die Schleifen an.
    Warum fängst du mal bei 0 und mal bei 1 an?


  • Mod

    Kleines Beispiel für Matrizenmultiplikation mit Operatorüberladung und Klassentemplates.



  • Arcoth, Dein Code mag zwar richtig sein (hab's nicht ueberprueft), aber fuer den TO ist er sicher keine Hife. Was willst Du damit bezwecken. Ein Einsteiger kann davon wohl kaum etwas lernen (von schlechter Praxis wie includes mitten in den Code zu streuen mal abgesehen)



  • Warum sollte ein Anfänger davon nichts lernen können?


  • Mod

    Was willst Du damit bezwecken. Ein Einsteiger kann davon wohl kaum etwas lernen

    Da hast du wohl Recht. Eigentlich war die Idee, man könnte dem TE näherbringen das ganze mit Klassen und Operatorenüberladung zu verwirklichen. Ist wohl zu krass geworden.



  • Arcoth schrieb:

    Ist wohl zu krass geworden.

    Indeed 😃


Log in to reply