<?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[globale array-einträge werden immer wieder auf Null gesetzt]]></title><description><![CDATA[<p>Hallo:</p>
<p>Ich habe ein C++-Problem, dass mich langsam verzweifeln lässt.<br />
Ich definiere am Anfang (ganz oben ausserhalb von main() und<br />
allen Prozeduren und Funktionen) ein globales Array mit</p>
<p>#define npsi 1000<br />
double *psi = new double[npsi];</p>
<p>So. Nun will in dieses Array in einer Schleife im main() Programm<br />
Werte hineinschreiben:</p>
<p>int main(int argc, char *argv[]) {</p>
<p>...</p>
<p>for (double t = 0; t &lt; t_end; t += dt) {</p>
<p>...</p>
<p>Y[2]=...</p>
<p>...</p>
<p>temp = (int) (npsi*t/t_end);<br />
psi[temp] = Y[2];<br />
for (int i=1; i&lt;=temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;</p>
<p>...</p>
<p>}</p>
<p>}</p>
<p>t ist die Zeit, die abläuft, und temp der Index, der<br />
aus t berehnet wird. In psi[temp soll dann der Wert Y[2]<br />
hineingeschrieben werden, während die Zeit t läuft.<br />
Direkt hinter diesen beiden Anweisungen gebe ich nun<br />
probehalber das bisher geschriebene Array aus.</p>
<p>Komischerweise wird nur der letzte Wert psi[temp]<br />
richtig angezeigt, psi[1] bis psi[temp-1] sind<br />
Nullen!!!! D.h. eine Zeile des Output sieht z.B. so aus:</p>
<p>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.66395e-09</p>
<p>Wo liegt mein Fehler? Ich möchte auf dieses globale<br />
Array hinterher aus Funktionen und Prozeduren zugreifen<br />
und die Werte auslesen, aber es sind alles Nullen.</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157491/globale-array-einträge-werden-immer-wieder-auf-null-gesetzt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 04:01:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157491.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Aug 2006 13:38:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 13:38:54 GMT]]></title><description><![CDATA[<p>Hallo:</p>
<p>Ich habe ein C++-Problem, dass mich langsam verzweifeln lässt.<br />
Ich definiere am Anfang (ganz oben ausserhalb von main() und<br />
allen Prozeduren und Funktionen) ein globales Array mit</p>
<p>#define npsi 1000<br />
double *psi = new double[npsi];</p>
<p>So. Nun will in dieses Array in einer Schleife im main() Programm<br />
Werte hineinschreiben:</p>
<p>int main(int argc, char *argv[]) {</p>
<p>...</p>
<p>for (double t = 0; t &lt; t_end; t += dt) {</p>
<p>...</p>
<p>Y[2]=...</p>
<p>...</p>
<p>temp = (int) (npsi*t/t_end);<br />
psi[temp] = Y[2];<br />
for (int i=1; i&lt;=temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;</p>
<p>...</p>
<p>}</p>
<p>}</p>
<p>t ist die Zeit, die abläuft, und temp der Index, der<br />
aus t berehnet wird. In psi[temp soll dann der Wert Y[2]<br />
hineingeschrieben werden, während die Zeit t läuft.<br />
Direkt hinter diesen beiden Anweisungen gebe ich nun<br />
probehalber das bisher geschriebene Array aus.</p>
<p>Komischerweise wird nur der letzte Wert psi[temp]<br />
richtig angezeigt, psi[1] bis psi[temp-1] sind<br />
Nullen!!!! D.h. eine Zeile des Output sieht z.B. so aus:</p>
<p>0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.66395e-09</p>
<p>Wo liegt mein Fehler? Ich möchte auf dieses globale<br />
Array hinterher aus Funktionen und Prozeduren zugreifen<br />
und die Werte auslesen, aber es sind alles Nullen.</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124924</guid><dc:creator><![CDATA[_Andi_]]></dc:creator><pubDate>Sat, 26 Aug 2006 13:38:54 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 14:09:46 GMT]]></title><description><![CDATA[<p>Das ist kein globales Array, sondern ein globaler pointer, und das sollte eigentlich ein Compilerfehler geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124939</guid><dc:creator><![CDATA[Thomas ** 0]]></dc:creator><pubDate>Sat, 26 Aug 2006 14:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 14:53:52 GMT]]></title><description><![CDATA[<p>Nun habe ich das globale Array so definiert:</p>
<p>#define npsi 1000<br />
double psi[npsi];</p>
<p>Aber das Resultat ist dasselbe. Alle Einträge bis auf den<br />
letzten sind Null beim Durchlauf der Schleife.</p>
<p>Irgendwelche Vorschläge? Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124959</guid><dc:creator><![CDATA[_Andi_]]></dc:creator><pubDate>Sat, 26 Aug 2006 14:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 14:59:15 GMT]]></title><description><![CDATA[<p>Ja,</p>
<pre><code class="language-cpp">for (int i=1; i&lt;=temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;
</code></pre>
<p>ist falsch. Arrays werden immer von 0 bis Anzahl der Elemente -1 durchlaufen, also wenn dann:</p>
<pre><code class="language-cpp">for (int i=0; i&lt;temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1124961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124961</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sat, 26 Aug 2006 14:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 15:05:14 GMT]]></title><description><![CDATA[<p>Vellas schrieb:</p>
<blockquote>
<p>Ja,</p>
<pre><code class="language-cpp">for (int i=1; i&lt;=temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;
</code></pre>
<p>ist falsch. Arrays werden immer von 0 bis Anzahl der Elemente -1 durchlaufen, also wenn dann:</p>
<pre><code class="language-cpp">for (int i=0; i&lt;temp; i++) cout &lt;&lt; psi[i] &lt;&lt; &quot; &quot;;
</code></pre>
</blockquote>
<p>temp selbst ist ein gültiger index, der ursprüngliche code ist soweit richtig (aber bei 0 anfangen zu zählen). der fehler ist vermutlich in einem ausgelassenen code-teil zu suchen. der debugger ist dein freund <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Thomas (: schrieb:</p>
<blockquote>
<p>Das ist kein globales Array, sondern ein globaler pointer, und das sollte eigentlich ein Compilerfehler geben.</p>
</blockquote>
<p>welchen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124964</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 26 Aug 2006 15:05:14 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 15:08:08 GMT]]></title><description><![CDATA[<p>Oh stimmt, ich habe die Zeile darüber übersehen. <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/1124968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124968</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sat, 26 Aug 2006 15:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 17:35:01 GMT]]></title><description><![CDATA[<p>Ok, ich bin Fortran 77 Programmierer (Schleifen fangen dort mit 1 an),<br />
habe mich nur mal in C++ versucht. Aber der Fehler kann doch nicht<br />
mein Schleifenindex sein! Also, Leute, was soll das?</p>
<p>Ich habe den gesamten Code mal online gestellt, die mathematischen<br />
Details sind nebensächlich es geht nur um das globale Array<br />
psi[npsi], in das ich es nicht vermag, Werte hineinzuschreiben und<br />
für immer dort zu speichern.</p>
<p>Hier ist der Code:</p>
<p><a href="http://www.rzuser.uni-heidelberg.de/~aernst/chemevo3.C" rel="nofollow">http://www.rzuser.uni-heidelberg.de/~aernst/chemevo3.C</a></p>
<p>Wenn irgendjemand die Lösung findet, spendiere ich ein Bier.</p>
<p>Viele Grüße,</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125068</guid><dc:creator><![CDATA[_Andi_]]></dc:creator><pubDate>Sat, 26 Aug 2006 17:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 18:32:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">double Psigeb(double t) {
  int temp;
  if (t&lt;0) t = 0.0;
  temp = (int) (npsi*t/t_end); 
  while ((psi[temp]=0.0)&amp;&amp;(temp&gt;0)) temp--;
  return psi[temp];
}
</code></pre>
<p>das soll sicher keine zuweisung sein.</p>
<p>und auch hier</p>
<pre><code class="language-cpp">double Phi(double m) {
    if (m&lt;0.08) return 2.01587*pow(m,-0.3);
    else if (m&lt;0.5) 0.16127*pow(m,-1.3);
    else if (m&lt;1.0) 0.08063*pow(m,-2.3); 
    else return 0.08063*pow(m,-2.7); 
}
</code></pre>
<p>fehlt noch etwas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125091</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 26 Aug 2006 18:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to globale array-einträge werden immer wieder auf Null gesetzt on Sat, 26 Aug 2006 19:16:01 GMT]]></title><description><![CDATA[<p>Tausend Dank! Nun klappt es! Ich war kurz davor, das Programm in Fortran oder Java<br />
neu zu schreiben, da ich den ganzen Nachmittag vergeblich nach dem<br />
Fehler gesucht habe und ich wirklich nicht sehr firm in C++ bin.</p>
<p>An welche Adresse kann ich den Sixpack schicken? Mir fällt ein Stein vom<br />
Herzen. <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>
<p>Gruss,</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125115</guid><dc:creator><![CDATA[_Andi_]]></dc:creator><pubDate>Sat, 26 Aug 2006 19:16:01 GMT</pubDate></item></channel></rss>