<?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[Hilfe beim übersetzen vom D code in c++]]></title><description><![CDATA[<p>Hi, habe aus dem Internet folgenden D Code</p>
<pre><code>T[2][] fourier(T)(T[] input, float bitrate) {
    auto samples = input.length;
    auto f = fft(input);
    T[2][] r = new T[2][f.length];
    for(int i = 0; i &lt; samples; i++) {
        T y = cast(T)(f[i].re * f[i].re + f[i].im * f[i].im);
        T x = cast(T)(1.0 * i * bitrate / samples);

        r[i] = [x, y];
    }
    return r;
}
</code></pre>
<p>welchen ich in C++ Code übersetzen möchte. Bei meinem Versuch bin ich so weit gekommen</p>
<pre><code>void fourier(double input[], int bitrate){
   complex&lt;double&gt; data[4096];
   for (int i = 0; i&lt; 4096; i++)
      data[i] = input[i];

   complex&lt;double&gt;* fft;
   fft = MyDFT(data,  4096);

   for (int i = 0; i&lt;4096; i++){
        float y = (float)(fft[i].real() * fft[i].real() +  fft[i].imag() * fft[i].imag());
        float x = (float)(1.0 * i * bitrate / 4096);
        rpub[0][i] = x;
        rpub[1][i] = y;
   }
}
</code></pre>
<p>4096 ist die Arraylänge und ist vorgegeben.<br />
rpub ist das Rückgabearray und global deklariert. Das programm kompiliert und läuft, wird aber nach einigen Sekunden getötet.<br />
was läuft da schief und vorallem was kann ich besser machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325342/hilfe-beim-übersetzen-vom-d-code-in-c</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 18:47:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325342.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Apr 2014 14:55:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 14:56:20 GMT]]></title><description><![CDATA[<p>Hi, habe aus dem Internet folgenden D Code</p>
<pre><code>T[2][] fourier(T)(T[] input, float bitrate) {
    auto samples = input.length;
    auto f = fft(input);
    T[2][] r = new T[2][f.length];
    for(int i = 0; i &lt; samples; i++) {
        T y = cast(T)(f[i].re * f[i].re + f[i].im * f[i].im);
        T x = cast(T)(1.0 * i * bitrate / samples);

        r[i] = [x, y];
    }
    return r;
}
</code></pre>
<p>welchen ich in C++ Code übersetzen möchte. Bei meinem Versuch bin ich so weit gekommen</p>
<pre><code>void fourier(double input[], int bitrate){
   complex&lt;double&gt; data[4096];
   for (int i = 0; i&lt; 4096; i++)
      data[i] = input[i];

   complex&lt;double&gt;* fft;
   fft = MyDFT(data,  4096);

   for (int i = 0; i&lt;4096; i++){
        float y = (float)(fft[i].real() * fft[i].real() +  fft[i].imag() * fft[i].imag());
        float x = (float)(1.0 * i * bitrate / 4096);
        rpub[0][i] = x;
        rpub[1][i] = y;
   }
}
</code></pre>
<p>4096 ist die Arraylänge und ist vorgegeben.<br />
rpub ist das Rückgabearray und global deklariert. Das programm kompiliert und läuft, wird aber nach einigen Sekunden getötet.<br />
was läuft da schief und vorallem was kann ich besser machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396436</guid><dc:creator><![CDATA[Gnomecoder]]></dc:creator><pubDate>Sat, 26 Apr 2014 14:56:20 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 15:06:32 GMT]]></title><description><![CDATA[<p>Warte, ich seh mal eben in meiner Glaskugel nach - ups, Akku leer.</p>
<p>Du erwartest doch jetzt nicht ernsthaft, dass dir jemand aus diesem Nichts an Informationen eine Lösung zaubert, oder?</p>
<p>Benutze einen Debugger!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396438</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 26 Apr 2014 15:06:32 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 15:08:57 GMT]]></title><description><![CDATA[<p>Naja, die beiden Codeschnipsel haben nicht wirklich was gemeinsam, ausser dass beide eine Schleife haben.</p>
<p>Wenn der D-Code klappt und richtig ist, wieso transformierst du den nicht 1-zu-1 nach C++ und nutzt den da?</p>
<p>Und was du besser machen kannst:<br />
- Keine globalen Variablen nutzen.<br />
- Den Fehler, dass dein Programm &quot;getötet&quot; wird entfernen.<br />
- Den Algorithmus ruhig generisch wie in dem D-Code halten.</p>
<p>Ich selbst hab noch nie eine Fourier-Transformation geschrieben, daher kann ich nichts zur Programmlogik sagen, aber mir scheint als ob deine Funktion mehr macht als der D-Code, und daher werfe ich mal den Tip ein: &quot;One Function, one Purpose&quot;!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396440</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 26 Apr 2014 15:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 15:11:46 GMT]]></title><description><![CDATA[<p>haha, der glaskugelspruch.<br />
in den 10 zeilen Code die da sind kann man doch sehen ob/wo da Mist gebaut wurde? Die Funktion wird permanent aufgerufen, muss da Speicher freigegeben werden? (hab ewig kein C++ programmiert, und sonst auch nur als Anfänger)<br />
Mein restlicher Programmcode wird wahrscheinlich auch nicht weiter helfen aber kann ich gerne posten.<br />
Debugger ist nen bisschen schwierig weil ich nur die Konsole zum programmieren habe, geht bei dem Projekt grad nicht anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396441</guid><dc:creator><![CDATA[Gnomecoder]]></dc:creator><pubDate>Sat, 26 Apr 2014 15:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 15:21:03 GMT]]></title><description><![CDATA[<p>Gnomecoder schrieb:</p>
<blockquote>
<p>in den 10 zeilen Code die da sind kann man doch sehen ob/wo da Mist gebaut wurde?</p>
</blockquote>
<p>Ja? An welcher stelle kann ich z.B. sehen, ob fft ein Nullpointer ist?</p>
<p>Gnomecoder schrieb:</p>
<blockquote>
<p>Die Funktion wird permanent aufgerufen, muss da Speicher freigegeben werden?</p>
</blockquote>
<p>Moment, ich schau mal in meine ... Ach, das hatten wir ja schon</p>
<p>Gnomecoder schrieb:</p>
<blockquote>
<p>Debugger ist nen bisschen schwierig weil ich nur die Konsole zum programmieren habe, geht bei dem Projekt grad nicht anders.</p>
</blockquote>
<p>Wo ist da der Widerspruch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396444</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 26 Apr 2014 15:21:03 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe beim übersetzen vom D code in c++ on Sat, 26 Apr 2014 15:32:51 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Gnomecoder schrieb:</p>
<blockquote>
<p>Debugger ist nen bisschen schwierig weil ich nur die Konsole zum programmieren habe, geht bei dem Projekt grad nicht anders.</p>
</blockquote>
<p>Wo ist da der Widerspruch?</p>
</blockquote>
<p>Da ist kein Widerspruch, die beiden Aussagen hängen einfach nicht zusammen <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="😃"
    /> <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>Dann stell mal dein Programm (was ja, so wie du sprichst, nicht so groß sein dürfte) insofern um, als dass du nur Container aus der STL nutzt und rohe Zeiger mal komplett rausfliegen. Und bau mal überall Assertions ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396446</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 26 Apr 2014 15:32:51 GMT</pubDate></item></channel></rss>