<?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[Array an Funktion übergeben]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein kleines Problem bei der Übergabe eines Arrays an eine Funktion!</p>
<p>Die Funktion sieht so aus:</p>
<pre><code class="language-cpp">float g_mittel(float mess[], int x){
	float hilf1=0,y;
	int i;
	for (i=1;i&lt;x;i++){
	hilf1=hilf1+mess[i];
	}
	y=pow(hilf1,1/(x-1));
	return y;
}
</code></pre>
<p>Der Aufruf der Funktion im Hauptprogramm lautet</p>
<pre><code class="language-cpp">float mess[20];
printf(&quot;\n\nGeometrisches Mittel: %3.f\n\n&quot;,g_mittel(mess,i));
</code></pre>
<p>Irgendwie wird mir aber nur der erste Wert des Arrays übergeben! Kann mir jemand sagen wo der Feheler liegt?</p>
<p>Ich bedank mich schon mal im voraus!</p>
<p>Gruß<br />
Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260081/array-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 12:55:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260081.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 Jan 2010 19:05:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array an Funktion übergeben on Sun, 31 Jan 2010 19:05:54 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein kleines Problem bei der Übergabe eines Arrays an eine Funktion!</p>
<p>Die Funktion sieht so aus:</p>
<pre><code class="language-cpp">float g_mittel(float mess[], int x){
	float hilf1=0,y;
	int i;
	for (i=1;i&lt;x;i++){
	hilf1=hilf1+mess[i];
	}
	y=pow(hilf1,1/(x-1));
	return y;
}
</code></pre>
<p>Der Aufruf der Funktion im Hauptprogramm lautet</p>
<pre><code class="language-cpp">float mess[20];
printf(&quot;\n\nGeometrisches Mittel: %3.f\n\n&quot;,g_mittel(mess,i));
</code></pre>
<p>Irgendwie wird mir aber nur der erste Wert des Arrays übergeben! Kann mir jemand sagen wo der Feheler liegt?</p>
<p>Ich bedank mich schon mal im voraus!</p>
<p>Gruß<br />
Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848211</guid><dc:creator><![CDATA[Schunki]]></dc:creator><pubDate>Sun, 31 Jan 2010 19:05:54 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Sun, 31 Jan 2010 19:25:05 GMT]]></title><description><![CDATA[<p>Du ignorierst die erste Stelle des Arrays, vergisst, dass Ganzzahldivision Nachkommastellen abschneidet und bildest die Summe statt dem Produkt.</p>
<pre><code class="language-cpp">double g_mittel(float mess[], int x){
    double produkt = 1;
    for (int i = 0;i &lt; x;i++){
    produkt *= mess[i];
    }
    return pow(produkt, 1.0/(x - 1));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1848225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848225</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 31 Jan 2010 19:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Sun, 31 Jan 2010 19:25:39 GMT]]></title><description><![CDATA[<p>Schunki schrieb:</p>
<blockquote>
<p>Hallo!</p>
</blockquote>
<p>Tach auch!</p>
<p>Schunki schrieb:</p>
<blockquote>
<p>Ich habe ein kleines Problem bei der Übergabe eines Arrays an eine Funktion!</p>
</blockquote>
<p>Sach blos! Das geht vielen anderen auch so. Ich bin mir fast sicher, dass es dazu auch ein paar Einträge bzgl &quot;Array-Übergabe&quot;, Arrays und Zeiger in der FAQ gibt. <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>Schunki schrieb:</p>
<blockquote>
<p>Die Funktion sieht so aus:</p>
<pre><code class="language-cpp">float g_mittel(float mess[], int x){
	float hilf1=0,y;
	int i;
	for (i=1;i&lt;x;i++){
	hilf1=hilf1+mess[i];
	}
	y=pow(hilf1,1/(x-1));
	return y;
}
</code></pre>
</blockquote>
<p>Aha. Komische Funktion. Du fängst mit Index 1 an (das zweite Element) und machst da ne Ganzzahldivision. Soll das eine &quot;geometrische Mittelung&quot; werden? Probier mal folgendes:</p>
<pre><code class="language-cpp">float g_mittel(float const* zeiger, int elemente)
{
  float prod = 1.f;
  for (int k=0; k&lt;elemente; ++k) {
    prod *= zeiger[k];
  }
  return std::pow(prod,1.f/elemente);
}
</code></pre>
<p>Schunki schrieb:</p>
<blockquote>
<p>Der Aufruf der Funktion im Hauptprogramm lautet</p>
<pre><code class="language-cpp">float mess[20];
printf(&quot;\n\nGeometrisches Mittel: %3.f\n\n&quot;,g_mittel(mess,i));
</code></pre>
</blockquote>
<p>Du musst in das Array auch schon etwas reinschreiben, wa?</p>
<pre><code class="language-cpp">float mess[] = {10,1000};
float gm = g_mittel(mess,2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1848226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848226</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 31 Jan 2010 19:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Sun, 31 Jan 2010 19:26:13 GMT]]></title><description><![CDATA[<p>Dein Problem wurde ja schon gelöst, von daher mal ein Rat: Nutze std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1848227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848227</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 31 Jan 2010 19:26:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array an Funktion übergeben on Sun, 31 Jan 2010 19:48:39 GMT]]></title><description><![CDATA[<p>Hatte gerade Lust, es generisch und mit std::accumulate zu probieren. Hier ist das Ergebnis:</p>
<pre><code class="language-cpp">#include &lt;cmath&gt;
#include &lt;functional&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
#include &lt;numeric&gt;

#include &lt;iostream&gt;
#include &lt;vector&gt;

template&lt;typename T&gt; struct tag {};

template&lt;typename Iter, typename Accumulator&gt;
Accumulator geomean(Iter begin, Iter end, tag&lt;Accumulator&gt;)
{
   using std::pow;
   return pow(
      std::accumulate(
         begin, end, Accumulator(1),
         std::multiplies&lt;Accumulator&gt;()
      ),
      Accumulator(1)/std::distance(begin,end)
   );
}

template&lt;typename Iter&gt;
inline
typename std::iterator_traits&lt;Iter&gt;::value_type
geomean(Iter begin, Iter end)
{
   return geomean(begin,end,
      tag&lt;typename std::iterator_traits&lt;Iter&gt;::value_type&gt;());
}

int main()
{
  std::vector&lt;float&gt; dings;
  dings.push_back(10);
  dings.push_back(1000);
  float  gm1 = geomean(dings.begin(),dings.end());
  double gm2 = geomean(dings.begin(),dings.end(),tag&lt;double&gt;());
  std::cout &lt;&lt; gm1 &lt;&lt; &quot;, &quot; &lt;&lt; gm2 &lt;&lt; '\n';
}
</code></pre>
<p>Ja, ich weiß. Das ist totaler Overkill. <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/1848240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1848240</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 31 Jan 2010 19:48:39 GMT</pubDate></item></channel></rss>