Frage zur For-Schleife



  • for(spalte=0;spalte<3;spalte++)
       {
       for(m=0;m<3;m++)
         {
         MatD[0][spalte] += (MatB[0][m]*MatA[m][0]);  
         }
       }
    

    So soll das natürlich wenn schon denn schon aussehen, aber selbes Problem, die zweite und vierte spalte spinnen 😞
    Die erste und dritte spalte stimmen aber zumindest 🙂



  • und ich glaub ich geh besser wieder ins bett, jetzt bin ich sogar noch zu dumm um einfach copy&paste anzuwenden 😞 😞 😞 sorry vielmals für den spam

    for(spalte=0;spalte<3;spalte++)
    {
    for(m=0;m<3;m++)
    {
    MatD[0][spalte] += (MatB[0][m]*MatA[m][spalte]);
    }
    }



  • kenti schrieb:

    Ok, danke, soweit ist mir das nun klar. Vielleicht stell ich mich ja auch nur sehr blöd an, aber dann bräuchte ich doch eigentlich nur 2 for-schleifen, oder?

    Wie willst du dann die Zeilen der Ergebinsmatrix voll bekommen?

    Matrix A[4][3] = {0}, B[3][4] = {0}, C[4][4] = {0};
    	int i, j, k;
    	for ( i = 0; i < 4; i++ )
    		for ( j = 0; j < 3; j++ )
    			for ( k = 0; k < 4; k++ )
    				C[i][k] += A[i][j] * B[j][k];
    


  • Ja aber wie gesagt gings mir jetzt ja erstmal nur um eine einzelne Zeile, denn wenn ich schon die einzelne Zeile nicht hinbekomme, wie soll es dann mit der kompletten matrize funktionieren? 😉

    ok ich glaube mein cygwin ist defekt, funzt nun eigentlich alles so wie es soll, außer dass er bei ein paar einträgen werte nahe der unendlichkeit herholt, en kollege hats bei sich compiliert und es ging ganz normal, also muss da bei mir wohl iwas futsch sein 😞



  • kenti schrieb:

    und ich glaub ich geh besser wieder ins bett, jetzt bin ich sogar noch zu dumm um einfach copy&paste anzuwenden 😞 😞 😞 sorry vielmals für den spam

    for(spalte=0;spalte<3;spalte++)
    {
    for(m=0;m<3;m++)
    {
    MatD[0][spalte] += (MatB[0][m]*MatA[m][spalte]);
    }
    }

    Hier sind die Grenzen der Indizes falsch. Bei einer 3x4 bzw. 4x3 Matrix muss ein Index von 0 bis 2, der andere von 0 bis 3 laufen.

    kenti schrieb:

    ok ich glaube mein cygwin ist defekt,

    Das glaube ich nicht. :p



  • wiegeht das nu mit matrix 😕



  • ehm da bin ich mir aber sehr wohl sicher das mein cygwin nicht mehr geht, denn wieso sollte es beim kollegen das programm kompilieren und richtige werte ausspucken und bei mir kommen spanische werte?



  • kenti- schrieb:

    ehm da bin ich mir aber sehr wohl sicher das mein cygwin nicht mehr geht, denn wieso sollte es beim kollegen das programm kompilieren und richtige werte ausspucken und bei mir kommen spanische werte?

    Hat Spanien nicht auch das Dezimalsystem? 😕
    Und ok, wenn du sicher bist, das es an cygwin liegt, dann benutze etwas anderes.
    Ansonsten würde ich vorschlagen:
    Da i.d.R. eine Matrixmultiplikation nicht allzu viele Codezeilen beinhaltet, würde man vermutlich relativ schnell herausfinden, ob ein logischer oder ein anderer Fehler infrage kommt, wenn du die vollständige Multiplikation posten würdest.



  • wiegeht schrieb:

    wiegeht das nu mit matrix 😕

    So kanns gehen, Bruder, guckst du Code ganz unten:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-261615-and-postdays-is-0-and-postorder-is-asc-and-start-is-0.html
    Habe ich übrigens mit der Suchfunktion gefunden 😉



  • Hallo Community,
    ich stelle mir gerade die Frage, ob man Bedingung einer Schleife auch variabel halten kann oder muss ich dafür "else if" bzw. eine "case" Anweisung nehmen?
    Hab mir das ungefähr so gedacht: Es wird in einer If-schleife überprüft, ob etwas eintritt.

    Wenn ja, dann wird bedingung="x<y"; ausgegeben.
    Wenn nein, dann wird bedingung="x>y"; ausgegeben.
    Wobei bedingung z.B.

    char bedingung[4];
    

    Somit könnte man eine andere Schleife ansteuern:

    if (bedingung){...}
    

    Ist so etwas möglich?

    Gruß Dragon


Anmelden zum Antworten