<?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[Fehler bei der Übergabe von mehrdimensionalen Arrays]]></title><description><![CDATA[<p>Hallo ich schon wieder <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="🙂"
    /><br />
Auf meinen kleinen Schritten in C++ schaffe ich es immer wieder, Fehler zu produzieren und brauche eure Hilfe.</p>
<p>Ich habe ein kleines Programm geschrieben für das Adams-Bashforth-Verfahren.<br />
Es klappt bis jetzt alles super. Jedoch will ich nun bei dem Aufruf des Verfahrens die Ordnung übergeben (Die Schritte, die er mitnimmt bei der Berechnung) und so eine Adams-Funktion für die verschiedenen Ordnung schreiben.</p>
<p>Die ersten 4 Schritte werden mit den Runge-Kutta-Verfahren gemacht und dann geht es mit dem Adams los.</p>
<p>Jedoch in Zeile 8, bei Aufruf der AdamsOrder-Funktion, zeigt er mir diesen Fehler an:<br />
<strong>Fehler: cannot convert 'double (<em>)[(&lt;anonymous&gt; + 1)]' to 'double (</em>)[0]' for argument '2' to 'double AdamsOrder(anm::adams, double (*)[0], unsigned int)'<br />
x-&gt;at(b)=adamsxv.getM_y0(b)+ AdamsOrder(adamsxv,SpeicherMKVA,b);<br />
^</strong></p>
<p>Ist die Übergabe des Arrays-SpeicherMKVA in Zeile 38 so in Ordnung?</p>
<p>Vielleicht kann einer mir ja helfen. Und wer Verbesserungsvorschläge hat. Immer her damit. Ich bin wissbegierig.</p>
<p>Vorsicht Code!</p>
<pre><code>for(int i=4; i&lt;n; ++i)  // Adams-Bashforth-Algorithmus
     {
         bewegungsDGL(M, MinvK, f, x, a);

         for(unsigned int b=0; b&lt;adamsva.getM_size() ; b++)
         {
             adamsxv.setM_k1(b,adamsxv.getM_h()*v-&gt;at(b));
             x-&gt;at(b)=adamsxv.getM_y0(b)+ AdamsOrder(adamsxv,SpeicherMKVA,b);  // Hier zeigt er mit den Fehler an.
             adamsxv.setM_y0(b,x-&gt;at(b));

             SpeicherMKXV[4][b]=SpeicherMKXV[3][b];  // Verschiebung der gespeicherten Steigungswerte
             SpeicherMKXV[3][b]=SpeicherMKXV[2][b];
             SpeicherMKXV[2][b]=SpeicherMKXV[1][b];
             SpeicherMKXV[0][b]=adamsxv.getM_k1(b);  // Specherung des aktuellen Werts
         }

         for(unsigned int b=0; b&lt;adamsva.getM_size() ; b++)
         {
             adamsva.setM_k1(b,adamsva.getM_h()*a-&gt;at(b));
             v-&gt;at(b)=adamsva.getM_y0(b)+(1901.*adamsva.getM_k1(b)-2774.*SpeicherMKVA[0][b]+2616.*SpeicherMKVA[1][b]-1274.*SpeicherMKVA[2][b]+251.*SpeicherMKVA[3][b])/720.;
             adamsva.setM_y0(b,v-&gt;at(b));

             SpeicherMKVA[4][b]=SpeicherMKVA[3][b];   // Verschiebung der gespeicherten Steigungswerte
             SpeicherMKVA[3][b]=SpeicherMKVA[2][b];
             SpeicherMKVA[2][b]=SpeicherMKVA[1][b];
             SpeicherMKVA[0][b]=adamsxv.getM_k1(b);   // Specherung des aktuellen Werts
         }

        myfile &lt;&lt;0.0&lt;&lt;&quot; &quot;&lt;&lt;x-&gt;at(fn)&lt;&lt;&quot; &quot;&lt;&lt;v-&gt;at(fn)&lt;&lt;&quot; &quot;&lt;&lt;a-&gt;at(fn)&lt;&lt;&quot;\n&quot;;
}
    solve.endTiming();
    myfile &lt;&lt; &quot;solved in &quot;&lt;&lt;solve.getDuration()&lt;&lt; &quot; sec\n&quot;;
    myfile.close();
    cout &lt;&lt; &quot;solved in &quot;&lt;&lt;solve.getDuration()&lt;&lt; &quot; sec\n&quot;;
}

double AdamsOrder(adams o, double **SpeicherMKVA, unsigned int j)
{
int Order=5;

      switch ( Order )
            {
               case '1':
               return o.getM_k1(j);

               case '2':
               return (3.*o.getM_k1(j)-SpeicherMKVA[0][j])/2.;

               case '3':
               return (23.*o.getM_k1(j)-16.*SpeicherMKVA[0][j]+5.*SpeicherMKVA[1][j])/12.;

               case '4':
               return (55.*o.getM_k1(j)-59.*SpeicherMKVA[0][j]+37.*SpeicherMKVA[1][j]-9.*SpeicherMKVA[2][j])/24.;

               case '5':
               return +1901./720.*o.getM_k1(j)-1387./360.*SpeicherMKVA[0][j]+109./30.*SpeicherMKVA[1][j]-637./360.*SpeicherMKVA[2][j]+251./720.*SpeicherMKVA[3][j];

               default:
               return 0;
            }

  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/330876/fehler-bei-der-übergabe-von-mehrdimensionalen-arrays</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 18:23:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330876.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Jan 2015 12:03:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 12:04:14 GMT]]></title><description><![CDATA[<p>Hallo ich schon wieder <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="🙂"
    /><br />
Auf meinen kleinen Schritten in C++ schaffe ich es immer wieder, Fehler zu produzieren und brauche eure Hilfe.</p>
<p>Ich habe ein kleines Programm geschrieben für das Adams-Bashforth-Verfahren.<br />
Es klappt bis jetzt alles super. Jedoch will ich nun bei dem Aufruf des Verfahrens die Ordnung übergeben (Die Schritte, die er mitnimmt bei der Berechnung) und so eine Adams-Funktion für die verschiedenen Ordnung schreiben.</p>
<p>Die ersten 4 Schritte werden mit den Runge-Kutta-Verfahren gemacht und dann geht es mit dem Adams los.</p>
<p>Jedoch in Zeile 8, bei Aufruf der AdamsOrder-Funktion, zeigt er mir diesen Fehler an:<br />
<strong>Fehler: cannot convert 'double (<em>)[(&lt;anonymous&gt; + 1)]' to 'double (</em>)[0]' for argument '2' to 'double AdamsOrder(anm::adams, double (*)[0], unsigned int)'<br />
x-&gt;at(b)=adamsxv.getM_y0(b)+ AdamsOrder(adamsxv,SpeicherMKVA,b);<br />
^</strong></p>
<p>Ist die Übergabe des Arrays-SpeicherMKVA in Zeile 38 so in Ordnung?</p>
<p>Vielleicht kann einer mir ja helfen. Und wer Verbesserungsvorschläge hat. Immer her damit. Ich bin wissbegierig.</p>
<p>Vorsicht Code!</p>
<pre><code>for(int i=4; i&lt;n; ++i)  // Adams-Bashforth-Algorithmus
     {
         bewegungsDGL(M, MinvK, f, x, a);

         for(unsigned int b=0; b&lt;adamsva.getM_size() ; b++)
         {
             adamsxv.setM_k1(b,adamsxv.getM_h()*v-&gt;at(b));
             x-&gt;at(b)=adamsxv.getM_y0(b)+ AdamsOrder(adamsxv,SpeicherMKVA,b);  // Hier zeigt er mit den Fehler an.
             adamsxv.setM_y0(b,x-&gt;at(b));

             SpeicherMKXV[4][b]=SpeicherMKXV[3][b];  // Verschiebung der gespeicherten Steigungswerte
             SpeicherMKXV[3][b]=SpeicherMKXV[2][b];
             SpeicherMKXV[2][b]=SpeicherMKXV[1][b];
             SpeicherMKXV[0][b]=adamsxv.getM_k1(b);  // Specherung des aktuellen Werts
         }

         for(unsigned int b=0; b&lt;adamsva.getM_size() ; b++)
         {
             adamsva.setM_k1(b,adamsva.getM_h()*a-&gt;at(b));
             v-&gt;at(b)=adamsva.getM_y0(b)+(1901.*adamsva.getM_k1(b)-2774.*SpeicherMKVA[0][b]+2616.*SpeicherMKVA[1][b]-1274.*SpeicherMKVA[2][b]+251.*SpeicherMKVA[3][b])/720.;
             adamsva.setM_y0(b,v-&gt;at(b));

             SpeicherMKVA[4][b]=SpeicherMKVA[3][b];   // Verschiebung der gespeicherten Steigungswerte
             SpeicherMKVA[3][b]=SpeicherMKVA[2][b];
             SpeicherMKVA[2][b]=SpeicherMKVA[1][b];
             SpeicherMKVA[0][b]=adamsxv.getM_k1(b);   // Specherung des aktuellen Werts
         }

        myfile &lt;&lt;0.0&lt;&lt;&quot; &quot;&lt;&lt;x-&gt;at(fn)&lt;&lt;&quot; &quot;&lt;&lt;v-&gt;at(fn)&lt;&lt;&quot; &quot;&lt;&lt;a-&gt;at(fn)&lt;&lt;&quot;\n&quot;;
}
    solve.endTiming();
    myfile &lt;&lt; &quot;solved in &quot;&lt;&lt;solve.getDuration()&lt;&lt; &quot; sec\n&quot;;
    myfile.close();
    cout &lt;&lt; &quot;solved in &quot;&lt;&lt;solve.getDuration()&lt;&lt; &quot; sec\n&quot;;
}

double AdamsOrder(adams o, double **SpeicherMKVA, unsigned int j)
{
int Order=5;

      switch ( Order )
            {
               case '1':
               return o.getM_k1(j);

               case '2':
               return (3.*o.getM_k1(j)-SpeicherMKVA[0][j])/2.;

               case '3':
               return (23.*o.getM_k1(j)-16.*SpeicherMKVA[0][j]+5.*SpeicherMKVA[1][j])/12.;

               case '4':
               return (55.*o.getM_k1(j)-59.*SpeicherMKVA[0][j]+37.*SpeicherMKVA[1][j]-9.*SpeicherMKVA[2][j])/24.;

               case '5':
               return +1901./720.*o.getM_k1(j)-1387./360.*SpeicherMKVA[0][j]+109./30.*SpeicherMKVA[1][j]-637./360.*SpeicherMKVA[2][j]+251./720.*SpeicherMKVA[3][j];

               default:
               return 0;
            }

  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2440478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440478</guid><dc:creator><![CDATA[binhbob]]></dc:creator><pubDate>Fri, 30 Jan 2015 12:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 12:30:36 GMT]]></title><description><![CDATA[<p>Wie ist denn <em>SpeicherMKVA</em> definiert?</p>
<p>Ein 2D-Array zerfällt nicht (bei der angabe des Namens) in einen Doppelzeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440481</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Fri, 30 Jan 2015 12:30:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 12:33:24 GMT]]></title><description><![CDATA[<p>In <a href="https://www.c-plusplus.net/forum/330844">https://www.c-plusplus.net/forum/330844</a> gabs ein ähnliches Problem (Zweidimensionales char-Array an Funktion übergeben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440482</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Fri, 30 Jan 2015 12:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 12:40:06 GMT]]></title><description><![CDATA[<p>SpeicherMKVA wird so definiert: double SpeicherMKVA[n][j]</p>
<p>Danke,i ch werde mir es mal später durchlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440483</guid><dc:creator><![CDATA[binhbob]]></dc:creator><pubDate>Fri, 30 Jan 2015 12:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 19:00:02 GMT]]></title><description><![CDATA[<p>hmm ich hab jetzt den Code wie du gesagt hast umgeschrieben.</p>
<pre><code>double AdamsOrder(adams o, double SpeicherMKVA[][2], unsigned int j){...
}
</code></pre>
<pre><code>AdamsOrder(adamsxv,SpeicherMKXV,b);
</code></pre>
<p>Jedoch zeigt er mir immernoch beim Aufruf der Funktion die gleiche Fehlermeldung wie Oben. Ein anderer Code den ich zum probieren benutzt hab klappt da einwandfrei.</p>
<pre><code>void function(int feld[][DIM2], int dim1) {
   int i, j;

   for(i = 0; i &lt; dim1; i++) {
      for(j = 0; j &lt; DIM2; j++) {
         printf(&quot;%d; &quot;, feld[i][j]);
      }
      printf(&quot;\n&quot;);
   }
   printf(&quot;\n&quot;);
}

int main(void) {
   int val[DIM1][DIM2];
   int i, j;

   for(i = 0; i &lt; DIM1; i++)
      for(j = 0; j &lt; DIM2; j++)
         val[i][j] = i+j;

   function(val, DIM1);
   return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2440550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440550</guid><dc:creator><![CDATA[binhbob]]></dc:creator><pubDate>Fri, 30 Jan 2015 19:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 19:13:39 GMT]]></title><description><![CDATA[<p>binhbob schrieb:</p>
<blockquote>
<p>SpeicherMKVA wird so definiert: double SpeicherMKVA[n][j]</p>
</blockquote>
<p>lol</p>
<p>Gefragt war, wie die Definition aussieht. Was soll n,j sein?<br />
Laufzeitkonstanten?<br />
Compilezeitkonstanten?<br />
Variablen?</p>
<p>Lies dir die Fragen durch, bevor du unsinnige Antworten gibst die nur wieder neue Fragen aufwerfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440554</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Fri, 30 Jan 2015 19:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 19:17:50 GMT]]></title><description><![CDATA[<p>Irgendwie ist mir das zu blöd. <a href="https://www.c-plusplus.net/forum/304133">https://www.c-plusplus.net/forum/304133</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440555</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 30 Jan 2015 19:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 22:42:45 GMT]]></title><description><![CDATA[<p>Danke für eure Hilfe ich habe es nun gelöst bekommen.<br />
Das Problem war, dass die &quot;Dimension&quot; der Spalte unterschiedlich war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440567</guid><dc:creator><![CDATA[binhbob]]></dc:creator><pubDate>Fri, 30 Jan 2015 22:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 22:42:29 GMT]]></title><description><![CDATA[<p>Liest du auch mal deinen eigenen Code? Beispielsweise die Zeile 4?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2440568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440568</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 30 Jan 2015 22:42:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei der Übergabe von mehrdimensionalen Arrays on Fri, 30 Jan 2015 22:44:09 GMT]]></title><description><![CDATA[<p>Ja grad selbst gemerkt <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/2440569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440569</guid><dc:creator><![CDATA[binhbob]]></dc:creator><pubDate>Fri, 30 Jan 2015 22:44:09 GMT</pubDate></item></channel></rss>