<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unbekannter fehler Matrizen Multiplizieren]]></title><description><![CDATA[<p>Hi leute,</p>
<p>ich hab ein Problem. Der Compiler gibt mir keinerlei Fehlermeldung doch das Programm stürtzt immer ab. Mein Lehrer weiss auch nicht was falsch ist.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;vector&gt;
using namespace std;

void fill_matrix (vector&lt;vector&lt;int&gt; &gt;&amp; mat){

    for (int zeile=0;zeile&lt;3;zeile++){
        for(int spalte=0;spalte&lt;3;spalte++){

            mat[zeile][spalte]= rand()%10;
        }
    }
}

void print_matrix(const vector&lt;vector&lt;int&gt; &gt;mat){

    for (int zeile=0;zeile&lt;3;zeile++){
        for(int spalte=0;spalte&lt;3;spalte++){
        cout &lt;&lt; mat[zeile][spalte]&lt;&lt;&quot; &quot;;
        }
    cout &lt;&lt; &quot;\n&quot;;
    }
cout &lt;&lt; &quot;\n&quot;;
}

void multi_matrix(const vector&lt;vector&lt;int&gt; &gt; mat1,
                 const vector&lt;vector&lt;int&gt; &gt; mat2,
                 vector&lt;vector&lt;int&gt; &gt;&amp; mat3){

    for(int a=0;a&lt;3;a++){

        for(int b=0;b&lt;3;b++){

        mat3[a][b] = mat1[a][b]*mat2[b][a];
        }
    }
}

int main()
{

    srand (time(NULL));

   vector&lt;vector&lt;int&gt; &gt;mat1,mat2,mat3;

    fill_matrix(mat1);
    print_matrix(mat1);
    fill_matrix(mat2);
    print_matrix(mat2);
    multi_matrix(mat1,mat2,mat3);
    print_matrix(mat3);
}
</code></pre>
<p>Wäre super wenn mir jemand helfen könnte ich habe keine Idee wie ich das Problem lösen soll. Und ohne es zu lösen kann ich das Programm natürlich auch nicht ausarbeiten. Ich wollte anfangen ne klasse anzulegen und so weiter.</p>
<p>Beste Grüße und danke schonmal<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320172/unbekannter-fehler-matrizen-multiplizieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 18:26:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320172.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Sep 2013 09:17:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 19 Sep 2013 09:17:52 GMT]]></title><description><![CDATA[<p>Hi leute,</p>
<p>ich hab ein Problem. Der Compiler gibt mir keinerlei Fehlermeldung doch das Programm stürtzt immer ab. Mein Lehrer weiss auch nicht was falsch ist.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;vector&gt;
using namespace std;

void fill_matrix (vector&lt;vector&lt;int&gt; &gt;&amp; mat){

    for (int zeile=0;zeile&lt;3;zeile++){
        for(int spalte=0;spalte&lt;3;spalte++){

            mat[zeile][spalte]= rand()%10;
        }
    }
}

void print_matrix(const vector&lt;vector&lt;int&gt; &gt;mat){

    for (int zeile=0;zeile&lt;3;zeile++){
        for(int spalte=0;spalte&lt;3;spalte++){
        cout &lt;&lt; mat[zeile][spalte]&lt;&lt;&quot; &quot;;
        }
    cout &lt;&lt; &quot;\n&quot;;
    }
cout &lt;&lt; &quot;\n&quot;;
}

void multi_matrix(const vector&lt;vector&lt;int&gt; &gt; mat1,
                 const vector&lt;vector&lt;int&gt; &gt; mat2,
                 vector&lt;vector&lt;int&gt; &gt;&amp; mat3){

    for(int a=0;a&lt;3;a++){

        for(int b=0;b&lt;3;b++){

        mat3[a][b] = mat1[a][b]*mat2[b][a];
        }
    }
}

int main()
{

    srand (time(NULL));

   vector&lt;vector&lt;int&gt; &gt;mat1,mat2,mat3;

    fill_matrix(mat1);
    print_matrix(mat1);
    fill_matrix(mat2);
    print_matrix(mat2);
    multi_matrix(mat1,mat2,mat3);
    print_matrix(mat3);
}
</code></pre>
<p>Wäre super wenn mir jemand helfen könnte ich habe keine Idee wie ich das Problem lösen soll. Und ohne es zu lösen kann ich das Programm natürlich auch nicht ausarbeiten. Ich wollte anfangen ne klasse anzulegen und so weiter.</p>
<p>Beste Grüße und danke schonmal<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353621</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Thu, 19 Sep 2013 09:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 19 Sep 2013 09:26:44 GMT]]></title><description><![CDATA[<p>Was passiert, wenn du mit [] auf einen Index eines std::vector zugreifen willst, der nicht existiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353624</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Thu, 19 Sep 2013 09:26:44 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 19 Sep 2013 09:29:47 GMT]]></title><description><![CDATA[<p>Deine Vektoren haben alle die Länge 0, d.h. jeder Zugriff auf ein Element erzeugt undefiniertes Verhalten was dann zum &quot;Absturz&quot; führt. Du musst dafür sorgen, dass deine Vektoren die richtigen Längen haben, entweder durch <code>resize</code> oder <code>push_back</code> .</p>
<p>Edit:<br />
Vektoren aus Vektoren sind etwas unglücklich für Matrizen, du kommst auch mit einem Vektor aus. Am besten baust du dir eine Matrizenklasse (wenn du das schon selbst machen musst und nichts fertiges benutzen darfst), die intern einen Vektor benutzt. Im Forum taucht diese Problem öfter auf, guck mal, ob du mit der Suchfunktion was findest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353625</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 19 Sep 2013 09:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Fri, 20 Sep 2013 07:21:09 GMT]]></title><description><![CDATA[<p>Ok danke leute das leuchtet ein!</p>
<p>Wie kann ich denn ein 2d vector per resize ansprechen bzw. wie benutze ich da pushback?</p>
<p>Und wie geht das ganze nur mit einem Vector?</p>
<p>Sry für die vielen fragen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353935</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Fri, 20 Sep 2013 07:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Fri, 20 Sep 2013 07:31:35 GMT]]></title><description><![CDATA[<p>resize/push_back:</p>
<pre><code class="language-cpp">vector&lt;vector&lt;int&gt; &gt; matrix(3);

matrix[0].resize(3);

int myValue = 5;
matrix[1].push_back(myValue);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2353939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353939</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 20 Sep 2013 07:31:35 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Fri, 20 Sep 2013 07:42:04 GMT]]></title><description><![CDATA[<p>Photon schrieb:</p>
<blockquote>
<p>Und wie geht das ganze nur mit einem Vector?</p>
</blockquote>
<p>Ich werde aus diesem nicht den dritten Thread machen, in dem Dir gesagt wird, wie Du eine 2dimensionale Struktur mit einer 1dimensionalen darstellst.<br />
Mal Dir Deine Matrix auf, und überleg, wie die Indices berechnet werden können, wenn Du alle Reihen nacheinander im Speicher liegen hast.<br />
Danach fügst Du Dein Ergebnis unten ein.</p>
<pre><code class="language-cpp">class mat{
  int rows_, cols_;
  std::vector&lt;int&gt; data_;
public:
  mat(int rows, int cols) : rows_(rows), cols_(cols), data_(rows*cols){}
  int rows() const { return rows_; }
  int cols() const { return cols_; }
  int&amp; operator()(int row, int col) { return data_[ /* magie hier */ ]; }
  const int&amp; operator()(int row, int col) const { return data_[ /* magie hier */ ]; }
};
</code></pre>
<p>Ist nicht so schwer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353943</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Fri, 20 Sep 2013 07:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Mon, 23 Sep 2013 09:00:18 GMT]]></title><description><![CDATA[<p>Hey Furble ich habe über deine Aufgabe nachgedacht. Ich weiss allerdings nicht so genau was du willst aber ich denke es geht in diese Richtung oder?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

using namespace std;

int main()
{

    srand(time(NULL));

    int row = 3, col = 3, data = row*col,h=0;
    vector&lt;int&gt; matrix;

    for(int i=0;i&lt;data;i++){
        matrix.push_back(rand()%10);
        h++;
        cout &lt;&lt; matrix[i] &lt;&lt;&quot; &quot;;
        if(h==row){cout &lt;&lt;&quot;\n&quot;; h=0;}
    }

}
</code></pre>
<p>Würde dann in deine erste Funktion die Multiplikation packen und in die zweite einfach nur was zum auslesen?!</p>
<p>Wird mich mal ranmachen. Wir haben leider PowerPoint diese Woche aber ein wenig programmieren nebenbei geht immer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354809</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Mon, 23 Sep 2013 09:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Mon, 23 Sep 2013 10:15:38 GMT]]></title><description><![CDATA[<p>Moin Photon.</p>
<p>Hmm Du bist auf dem Holzweg.<br />
Ich bezog mich auf Deine Frage,</p>
<p>Photon schrieb:</p>
<blockquote>
<p>Und wie geht das ganze nur mit einem Vector?</p>
</blockquote>
<p>Und um Dir das nicht (zum wiederholten Male) um die Ohren zu hauen, ohne dass Du es verstehst habe ich eine kleine Übung daraus gemacht.<br />
stell dir vor, Du willst eine 2*4 Matrix aufbauen.</p>
<pre><code>| 0 | 1 | 2 | 3 |
--+---+---+---+---+
0 | A | B | C | D |
--+---+---+---+---+
1 | E | F | G | H |
--+---+---+---+---+
</code></pre>
<p>Du definierst und deklarierst das ganze</p>
<pre><code class="language-cpp">vector&lt;vector&lt;char&gt;&gt; vv(2, vector&lt;char&gt;(4,' '));
</code></pre>
<p>Und denkst Dir: &quot;Das sieht häßlich aus und ist auch noch wenig performant.&quot;</p>
<p>Deswegen denkst Du Dir: ich kann doch auch <strong>einen Vektor</strong> nehmen, mit 2*4 Elementen und die Umrechnung von [reihe][spalte] in Indices selber machen.</p>
<pre><code>| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+---+---+---+---+---+---+---+
| A | B | C | D | E | F | G | H |
+---+---+---+---+---+---+---+---+
</code></pre>
<p>Also z.B. [0][2] in der Struktur oben ist 'C', hat unten den Index 2.</p>
<p>Frage an Dich ist: wie ist die Formel, in die Du [reihe] und [spalte] reinsteckst und hinten Index rauskommt?</p>
<p>Klaro?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354830</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Mon, 23 Sep 2013 10:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Mon, 23 Sep 2013 11:55:54 GMT]]></title><description><![CDATA[<p>reihe*4 + spalte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354858</guid><dc:creator><![CDATA[spielverderber]]></dc:creator><pubDate>Mon, 23 Sep 2013 11:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Tue, 01 Oct 2013 10:10:39 GMT]]></title><description><![CDATA[<p>danke furble und Spielverderber jetzt hab ich das mit dem indices begriffen obwohl mit das spiel schon verdorben wurde.</p>
<p>@ germaut es waren schon ein paar fehler bei der referenzübergabe von den const variablen drin aber daran lag es auch nicht.</p>
<p>Für jede aufgabe ne Funktion wäre auch schlecht. Eher für jede Rechenart.</p>
<p>Ich werde gleich mal anfangen und mir ne klasse erstellen und dann über indicies halt versuchen das zu lösen so wie in furbles Beispiel. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357021</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Tue, 01 Oct 2013 10:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Tue, 01 Oct 2013 17:29:21 GMT]]></title><description><![CDATA[<p>Sry für den doppelpost.</p>
<p>Ich komme nicht weiter. Ich glaube es hat wa mit public und private zu tun. Gibt es eine besondere art wie ich die funktion schreiben muss?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;

class matrix{

    unsigned int row, col;
    std::vector&lt;unsigned int&gt; data;

public:

    matrix(unsigned int row,unsigned int col) : row(row),col(col),data(row*col){}

    void fill_matrix(matrix&amp; mat){

        for(unsigned int i=0;i&lt;=mat.data;i++){
            mat.data.push_back(i);

        }

    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2357146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357146</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Tue, 01 Oct 2013 17:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Tue, 01 Oct 2013 18:35:36 GMT]]></title><description><![CDATA[<pre><code>class matrix
{

    unsigned row; // Die Anzahl der Spalten zu speichern ist redundant
    std::vector&lt;unsigned&gt; data;

public:

    matrix(unsigned row, unsigned col) :
        row(row) ,data(row*col){}

    /// Aha! friend - ein Zeichen für schlechtes Design. Wieso also ist das hier schlechtes Design?
    /// Einfach: Wir haben keinen anderen, offenen (public) Zugriff auf die Member der Matrix und müssen deshalb die Kapselung lockern.
    /// Implementiere noch Zugriffsfunktionen.
    friend void fill_matrix(matrix&amp; mat)
    {
        using namespace std;
        iota( begin(mat.data), end(mat.data), 0 ); // Diese Funktion fuellt das Array mit aufsteigenden Werten (0, 1, 2, ...)
    }
};
</code></pre>
<blockquote>
<p>Gibt es eine besondere art wie ich die funktion schreiben muss?</p>
</blockquote>
<p>Ja, als nicht-member Funktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357150</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 01 Oct 2013 18:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 06:31:25 GMT]]></title><description><![CDATA[<p>Hi Sone,</p>
<p>Ich verstehe nicht warum die Anzahl der spalten redundant ist.</p>
<p>Über Fried hab ich ein wenig gelesen das leuchtet mir ein. Also die Stichworte heissen wohl getter/setter?! Ich schau gleich mal nach wie man das macht.</p>
<p>Eine Sache ist mir allerdings noch unklar muss ich ein setter schreiben und die Funktion ausserhalb der klasse oder funktioniert es so wenn ein setter vorhanden ist?</p>
<p>Danke für die Antwort!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357232</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Wed, 02 Oct 2013 06:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 09:38:05 GMT]]></title><description><![CDATA[<p>Nein, um das ganze ohne friend realisieren zu können, musst du eine Memberfunktion schreiben, welche Zugriff auf den vector repräsentiert. Zum beispiel</p>
<pre><code>unsigned&amp; at(std::size_t i) { return data[i]; }
unsigned const&amp; at(std::size_t i) const { return data[i]; }
</code></pre>
<p>Kannst natürlich sowohl auf <code>unsigned</code> als auch für <code>size_t</code> ein (richtiges) Typedef machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357269</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 02 Oct 2013 09:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 10:30:21 GMT]]></title><description><![CDATA[<p>Hmm das verstehe ich noch nicht so ganz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hab jetzt mal das hier geschrieben</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

class matrix{

unsigned reihe;
unsigned spalte;
std::vector &lt;unsigned&gt; data;

public:

matrix (int reihe, int spalte):
    reihe(reihe), spalte(spalte), data(reihe*spalte)
    {std::cout&lt;&lt; &quot;\nMatrix wurde erstellt!\n&quot;;}

void set_matrix(){

    unsigned a=this-&gt;data.size();
    for(unsigned i=0;i&lt;a;i++){
       this-&gt;data.push_back(rand()%10);
    }
}

};

int main()
{
    srand(time(NULL));

    unsigned a,b;

    std::cout&lt;&lt;&quot;Wir bauen eine Matrix\n\nBitte anzahl der Reihen angeben: &quot;;
    std::cin&gt;&gt; a;
    std::cout&lt;&lt;&quot;\nBitte anzahl der Spalten angeben: &quot;;
    std::cin&gt;&gt; b;

    matrix mat(a,b);
    mat.set_matrix();

}
</code></pre>
<p>Geht das in die richtige Richtung? Oder sollte ich eher noch eine schlichtere set Funktion schreiben die nur 1 pushback macht und diese dann in eine fill Funktion einbinden?</p>
<p>Danke für die geduld und hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357283</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Wed, 02 Oct 2013 10:30:21 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 10:51:24 GMT]]></title><description><![CDATA[<blockquote>
<p>Oder sollte ich eher noch eine schlichtere set Funktion schreiben die nur 1 pushback macht und diese dann in eine fill Funktion einbinden?</p>
</blockquote>
<p>Richtig. Zuerst ein fundamentaler Setter/Getter, dann Funktionen mit höherer Funktionalität. Und diese dann auch als non-member.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357286</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 02 Oct 2013 10:51:24 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 10:56:59 GMT]]></title><description><![CDATA[<p>Geh nochmal einen Schritt zurück.<br />
Möglicherweise schaust Du nochmal in Dein Buch, was dort z.B. zu <code>std::vector</code> steht.</p>
<p>Wie würdest Du eine Funktion schreiben, die einen <code>std::vector</code> komplett mit zufälligen Werten füllt?<br />
Welche Member von <code>std::vector</code> benutzt Du dabei?</p>
<p>Und in einem zweiten Schritt baust Du dann diese, bzw. ähnliche, Member in Deine Matrix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357287</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 02 Oct 2013 10:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Wed, 02 Oct 2013 12:13:26 GMT]]></title><description><![CDATA[<p>Genau, und dann hängst Du mit 12 Membern rum, die erstmal die Basis-Iteratoren liefern, alles Proxy-Iteratoren (boost hilft hier ja!), die eines von zwei Proxy-Objekten halten, welche dann jeweils wieder 6 Member haben, um sich zu zu verhalten wie ein Vektor usw.. also 24 Funktionen und 2 Proxy-Klassen...<br />
Iterators at their best! Iterate it baby!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357299</guid><dc:creator><![CDATA[DerZweiteEine]]></dc:creator><pubDate>Wed, 02 Oct 2013 12:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 03 Oct 2013 10:56:14 GMT]]></title><description><![CDATA[<p>mit iterator hab ich leider noch nichts gemacht.</p>
<p>Auf jeden fall ist mir gerade eine idee gekommen.<br />
Könnte man nicht einfach die ersten beiden fächer vom vector dazu benutzen um die zahl der reihen und spalten zu speichern?</p>
<p>Mir ist auch aufgefallen das die anzahl der spalten für die rechnung garnicht notwendig ist. Mann muss nur die index spalte angeben. Vieleicht mein Sone ja das mit redundant?!</p>
<p>Ich weiss allerdings nicht ob man im konstruktor die matrix dann überhaupt korrekt öffnen kann. Es würde ja vorraussetzen dann man einer variablen der klasse 2 werte übergeben müsste damit eben data=row*col möglich ist. Ich hoffe ihr versteht was ich meine <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>So oder so Beste Grüße<br />
Photon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357553</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Thu, 03 Oct 2013 10:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 03 Oct 2013 11:15:50 GMT]]></title><description><![CDATA[<p>Iteratoren...Papperlapp.</p>
<p>Hier nochmal mein Beispiel von oben:</p>
<pre><code class="language-cpp">class mat{
  int rows_, cols_;
  std::vector&lt;int&gt; data_;
public:
  mat(int rows, int cols) : rows_(rows), cols_(cols), data_(rows*cols){}
  int rows() const { return rows_; }
  int cols() const { return cols_; }
  int&amp; operator()(int col, int row) { return data_[ row*rows_+col ]; }
  const int&amp; operator()(int col, int row) const { return data_[ row*rows_+col ]; }
};
</code></pre>
<p>Dazu ist es doch einfach eine (freie!) <code>fill()</code> Funktion zu schreiben, oder?<br />
Das alles ist keine Magie - bis auf einen <em>überladenen Operator</em>.</p>
<p>Alternativ wäre eine einfache Funktion - wie Sone vorschlug:</p>
<pre><code class="language-cpp">class mat{
   // ....
public:
  // ....
  int&amp; at(int col, int row) { return data_[ row*rows_+col ]; }
  const int&amp; at(int col, int row) const { return data_[ row*rows_+col ]; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2357560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357560</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 03 Oct 2013 11:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 03 Oct 2013 11:33:04 GMT]]></title><description><![CDATA[<p>Photon schrieb:</p>
<blockquote>
<p>Mir ist auch aufgefallen das die anzahl der spalten für die rechnung garnicht notwendig ist. Mann muss nur die index spalte angeben. Vieleicht mein Sone ja das mit redundant?!</p>
</blockquote>
<p>Redundant heißt so viel wie überflüssig. Und die Anzahl der Spalten ist schon in der Größe des Arrays inbegriffen (Teilen der Größe des Arrays durch die Anzahl der Reihen ergibt ..).</p>
<blockquote>
<p>Ich weiss allerdings nicht ob man im konstruktor die matrix dann überhaupt korrekt öffnen kann. Es würde ja vorraussetzen dann man einer variablen der klasse 2 werte übergeben müsste damit eben data=row*col möglich ist. Ich hoffe ihr versteht was ich meine <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Du brauchst natürlich schon beide Konstruktorparameter, aber du musst die Anzahl der Spalte nicht als Member halten.</p>
<blockquote>
<p>Das alles ist keine Magie - bis auf einen überladenen Operator.</p>
</blockquote>
<p>Was ist an einer Operatorfunktion so grundlegend anders als bei einer 'gewöhnlichen' Memberfunktion? Beides Funktionen. Oder meinst du, das kennt er noch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357563</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Oct 2013 11:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 03 Oct 2013 11:38:14 GMT]]></title><description><![CDATA[<ul>
<li>schrieb:</li>
</ul>
<blockquote>
<blockquote>
<p>Das alles ist keine Magie - bis auf einen überladenen Operator.</p>
</blockquote>
<p>Was ist an einer Operatorfunktion so grundlegend anders als bei einer 'gewöhnlichen' Memberfunktion? Beides Funktionen. Oder meinst du, das kennt er noch nicht?</p>
</blockquote>
<p>Fast sicher.<br />
Aber ich hab's schön <em>kursiv</em> gesetzt, damit er gleich weiss, wo in seinem Buch, bzw. seinen Büchern er nachschlagen muss. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357565</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 03 Oct 2013 11:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Thu, 03 Oct 2013 18:40:41 GMT]]></title><description><![CDATA[<ul>
<li>schrieb:</li>
</ul>
<blockquote>
<p>Redundant heißt so viel wie überflüssig. Und die Anzahl der Spalten ist schon in der Größe des Arrays inbegriffen (Teilen der Größe des Arrays durch die Anzahl der Reihen ergibt ..).</p>
</blockquote>
<p>Ich würde es trotzdem speichern. Manchmal ist redundanz gut um den Compiler nicht zu verwirren. Und es gibt ganz gute Gründe, weswegen die Arraygröße davon abweichen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2357636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2357636</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 03 Oct 2013 18:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Sun, 24 Nov 2013 18:42:06 GMT]]></title><description><![CDATA[<p>Moind leute ich grab den alten thread nochmal aus.</p>
<p>Ich hab ein problem mit der klasse. der compiler sagt mir das die 2 funktionen nicht im scope von main deklariert sind. Brauch ich da etwa ne prototype funktion? wenn ja wo pack ich die hin eigentlich in die klasse oder?</p>
<p>Liebe Grüße<br />
Photon</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;

class matrix{

private:

    unsigned int row, col;
    std::vector&lt;unsigned int&gt; data;

public:

    matrix(unsigned int row,unsigned int col) : row(row),col(col),data(row*col){}

    void fill_matrix(matrix&amp; mat){

        for(unsigned int i=0;i&lt;=row*col;i++){
            mat.data.push_back(i);
        }
    }

    void print_matrix(const matrix&amp; mat){

    unsigned int a=0;

    for(unsigned int i=0;i&lt;=col;i++){

        for (unsigned int j=0;j&lt;=row;j++){
            std::cout&lt;&lt;mat.data[a];
            }

            std::cout&lt;&lt;&quot;\n&quot;;
            a++;
        }
    }
};

int main()
{

    matrix a(3,3);
    fill_matrix(a);
    print_matrix(a);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2367642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367642</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Sun, 24 Nov 2013 18:42:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Sun, 24 Nov 2013 18:42:52 GMT]]></title><description><![CDATA[<p>Schau dir nochmal an, was eine Memberfunktion ist und was das tolle an ihnen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367644</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 24 Nov 2013 18:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to Unbekannter fehler Matrizen Multiplizieren on Mon, 25 Nov 2013 07:45:09 GMT]]></title><description><![CDATA[<p>ok danke hab das mit den mebmer functions nochmal nachgeschlagen allerdings wird meine Matrix nur mit nullen gefüllt. Weis jemand warum?</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;

class matrix{

private:

     unsigned int row, col;
     std::vector&lt;unsigned int&gt; data;

public:

     matrix(unsigned int row,unsigned int col) : row(row),col(col),data(row*col){}

     void fill_matrix(){

         for(unsigned int i=0;i&lt;row*col;i++){
            data.push_back(i);
         }
     }

     void print_matrix(){

     unsigned int a=0;

     for(unsigned int i=0;i&lt;col;i++){

         for (unsigned int j=0;j&lt;row;j++){
             std::cout&lt;&lt;data[a];

             }

             std::cout&lt;&lt;&quot;\n&quot;;
             a++;
         }
     }
};

int main()
{

     matrix a(3,3);
     a.fill_matrix();
     a.print_matrix();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2367724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367724</guid><dc:creator><![CDATA[Photon]]></dc:creator><pubDate>Mon, 25 Nov 2013 07:45:09 GMT</pubDate></item></channel></rss>