<?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[Importer:Error:WasEmpty]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:</p>
<p>Ich habe das Grundgerüst einer Funktion gegeben. Die Funktion soll (unbekannte) Werte einlesen und davon den Mittelwert berechnen und zurückliefern. Mein Problem dabei ist, dass die Funktion nur einen Parameter enthält und ich nicht weiß wie ich damit das Array befüllen soll.</p>
<p>Hier das Grundgerüst: (hier darf nichts verändert werden!)</p>
<p>double funktion(double wert)<br />
{<br />
double mittelwert=.0;<br />
#define Fenster 15</p>
<p>return mittelwert;<br />
}</p>
<p>Meine Lösung bis jetzt:</p>
<p>double funktion(double wert)<br />
{<br />
double mittelwert=.0;<br />
#define Fenster 15<br />
int i;<br />
double x[Fenster];<br />
double summe=.0;</p>
<p>for(i=wert;i&lt;Fenster;i++){</p>
<p>summe += x[i];<br />
}</p>
<p>mittelwert = summe/Fenster;<br />
return mittelwert;<br />
}</p>
<p>Ja wäre nett wenn mir jemand zumindest einen Hinweis geben könnte, wie ich das Problem hier lösen kann.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321471/importer-error-wasempty</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 13:38:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321471.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Nov 2013 16:33:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 12 Nov 2013 20:54:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Problem:</p>
<p>Ich habe das Grundgerüst einer Funktion gegeben. Die Funktion soll (unbekannte) Werte einlesen und davon den Mittelwert berechnen und zurückliefern. Mein Problem dabei ist, dass die Funktion nur einen Parameter enthält und ich nicht weiß wie ich damit das Array befüllen soll.</p>
<p>Hier das Grundgerüst: (hier darf nichts verändert werden!)</p>
<p>double funktion(double wert)<br />
{<br />
double mittelwert=.0;<br />
#define Fenster 15</p>
<p>return mittelwert;<br />
}</p>
<p>Meine Lösung bis jetzt:</p>
<p>double funktion(double wert)<br />
{<br />
double mittelwert=.0;<br />
#define Fenster 15<br />
int i;<br />
double x[Fenster];<br />
double summe=.0;</p>
<p>for(i=wert;i&lt;Fenster;i++){</p>
<p>summe += x[i];<br />
}</p>
<p>mittelwert = summe/Fenster;<br />
return mittelwert;<br />
}</p>
<p>Ja wäre nett wenn mir jemand zumindest einen Hinweis geben könnte, wie ich das Problem hier lösen kann.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365160</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Tue, 12 Nov 2013 20:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 12 Nov 2013 16:45:30 GMT]]></title><description><![CDATA[<p>Ganz sicher, dass es nicht <code>double funktion(double *wert)</code> ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365161</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Tue, 12 Nov 2013 16:45:30 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 12 Nov 2013 19:18:18 GMT]]></title><description><![CDATA[<p>Um sinnvoll zu sein muss die Angabe genauer sein.<br />
Entweder du unterschlägst uns hier jetzt einiges, oder die Angabe ist Topfen.</p>
<p>Eine Möglichkeit wäre z.B. mit statischen Variablen zu arbeiten. Ich hoffe dass das nicht gemeint ist, aber bei dem was ich gelernt habe von Lehrern/Professoren zu erwarten würde es mich auch nicht wundern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365195</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Nov 2013 19:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 12 Nov 2013 20:53:37 GMT]]></title><description><![CDATA[<p>Nein ich habe nichts unterschlagen, wert ist kein Zeiger und auch sonst stimmt alles, habs eben nochmal überprüft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365228</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Tue, 12 Nov 2013 20:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 12 Nov 2013 21:17:36 GMT]]></title><description><![CDATA[<p>Also in der Angabe steht dass die Funktion Werte <em>einlesen</em> soll, die Funktions-Signatur die vorgegeben ist enthält aber einen Parameter der <em>&quot;wert&quot;</em> heisst?<br />
Das beisst sich doch. Sollen die Werte jetzt eingelesen werden oder werden sie übergeben?</p>
<p>Davon abgesehen glaub' ich dir nicht dass du die Angabe hier vollständig wiedergegeben hast. So schlecht kann keine Angabe sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365237</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Nov 2013 21:17:36 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Wed, 13 Nov 2013 08:24:45 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>So schlecht kann keine Angabe sein.</p>
</blockquote>
<p>Ich fürchte schon, wenn die ANgabe von demselben C++-Analphabeten stammt, der das hier verzapft hat:</p>
<pre><code class="language-cpp">#define Fenster 15
int i;
double x[Fenster];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2365259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365259</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 13 Nov 2013 08:24:45 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 20:54:53 GMT]]></title><description><![CDATA[<p>Also hier noch ein paar Zusatzinfos die ich auf Nachfrage erhalten habe:</p>
<p>die Signatur muss in jedem Fall eingehalten werden. Die Funktion bekommt regelmäßig fortlaufend Werte, zum Beispiel alle 10 ms Messwerte welche von einem Timer-getriggerten ADC digitalisiert wurden. Die Aufgabe besteht darin Unregelmäßigkeiten/Störungen/Sprünge die in dem Wertestrom vorkommen können zu filtert bzw. glätten. Die Anzahl der Messwerte, wie oft die kommen, wo und wie diese abgelegt sind und was damit gemacht wird soll/muss dem Entwickler der Funktion egal sein (Geheimnisprinzip/Modularisierung). Der &quot;Anwender&quot; der Funktion hat die gegebene Schnittstelle (Signatur) und stopft nacheinander alle seine Werte da rein und erhält für jeden Wert den er übergibt einen gefilterten Wert zurück. Wie die Funktion das macht ist ihm eigentlich egal (dito. Geheimnisprinzip). Der Entwickler der Funktion legt die Fenstergröße (Anzahl der Werte über die der Mittelwert gebildet wird) fest und muss dafür sorgen, dass er sich nur die Werte welche im Fenster liegen &quot;merkt&quot; um den Mittelwert zu berechnen.</p>
<p>Hoffe das hilft bei der Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365572</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Thu, 14 Nov 2013 20:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 22:08:11 GMT]]></title><description><![CDATA[<p>Jetzt, wo die Aufgabe klar ist, verstehe ich nicht mehr so ganz, was dir daran noch unklar ist. Du brauchst ein statisches Array, in das du nach und nach die Werte reinschreibst. Wenn das Array voll ist, musst du dir was überlegen ... Stichwort Ringpuffer. Und dann halt immer den Mittelwert ausrechnen und zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365585</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 14 Nov 2013 22:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 22:17:30 GMT]]></title><description><![CDATA[<p>c++123 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">double funktion(double wert)
{
  double mittelwert=.0;
#define Fenster 15
  int i;
  double x[Fenster];
  double summe=.0;

  for(i=wert;i&lt;Fenster;i++){

    summe += x[i];
  }

  mittelwert = summe/Fenster;
  return mittelwert;
}
</code></pre>
</blockquote>
<p>Okay: um Missverstaendnissen vorzubeugen: es geht um C++, nicht C?</p>
<p>Dann sieht das ja schon gar nicht so schlecht aus. Geht aber hier und da ein bisschen verquer - wie du sicherlich schon bemerkt hast.</p>
<p>Sagen wir, Du hast folgende Situation:</p>
<pre><code class="language-cpp">double values[10] = { 0., 1., 2., 3., 4., 5., 6., 7., 8., 9. };
</code></pre>
<p>Schreib mal eine funktionierende Version Deines Algorithmus' zur Mittelwertbestimmung fuer das Array <code>values</code> . Zur Kontrolle: Ergebnis ist 4.5.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365587</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 14 Nov 2013 22:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 22:32:12 GMT]]></title><description><![CDATA[<p>@Furble: Ich denke, es geht um eine gleitende Mittelwertbildung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365588</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 14 Nov 2013 22:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 22:48:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25894">@Caligulaminus</a>:<br />
prinzipiell hat Bashar ja schon alles gesagt.<br />
Aber wenn ich mir den Code oben ansehe funktioniert noch nicht mal der einfache Durchschnitt - wie soll es da erst werden, wenn das Array unterschiedlich groß ist, bzw. sich Werte im Array aendern.<br />
Eine einfache Teilaufgabe (schreib eine Funktion, die den Mittelwert eines Arrays errechnet) schien mir da ein passender erster Schritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365589</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Thu, 14 Nov 2013 22:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Thu, 14 Nov 2013 23:42:41 GMT]]></title><description><![CDATA[<p>Furble Wurble schrieb:</p>
<blockquote>
<p>[..]Eine einfache Teilaufgabe (schreib eine Funktion, die den Mittelwert eines Arrays errechnet) schien mir da ein passender erster Schritt.</p>
</blockquote>
<p>OK</p>
<pre><code>double funktion(double wert)
{
  for(int i = wert;...
</code></pre>
<p>Das hat mich verwirrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2365593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2365593</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 14 Nov 2013 23:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Sun, 17 Nov 2013 20:18:08 GMT]]></title><description><![CDATA[<p>Ja es handelt sich um c++.</p>
<p>Hier mein Code, ich habe ihn in main() geschrieben um das Programm ausführen zu können und es ist 4.5 rausgekommen:</p>
<p>double values[10] = {0,1,2,3,4,5,6,7,8,9};<br />
double summe = 0, mittelwert;<br />
int i;</p>
<p>for(i=0; i&lt;10; i++)<br />
{</p>
<p>summe += values[i];</p>
<p>}</p>
<p>mittelwert = summe/10;<br />
cout &lt;&lt; &quot;Mittelwert: &quot; &lt;&lt; mittelwert &lt;&lt; endl;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366060</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Sun, 17 Nov 2013 20:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Sun, 17 Nov 2013 22:35:08 GMT]]></title><description><![CDATA[<p>Ich find die Aufgabe uebrigens nicht so gelungen - weil Du entweder globale Variablen oder etwas fortgeschritteneres Knowhow von C++ brauchst.</p>
<p>Egal. Das Problem ist, dass Deine Funktion ja eigentlich kein &quot;Gedaechtnis&quot; fuer die vorherigen Werte hat - wenn Du dort Variablen anlegst werden die am Ende der Funktion wieder getilgt und beim naechsten mal neu angelegt.</p>
<p>Variablen ueber mehrere Funktionsaufrufe zu behalten geht allerdings, wenn Du sie als static deklarierst - hat Bashar ja auch schon gesagt.</p>
<p>Hier z.B. eine Funktion, die bei jedem Aufruf einen Wert in ein Array schreibt, bzw. wenn das Array voll ist dieses ausgibt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;

void insert(int i){
  static int arr[3]={};             // ein static array
  static auto p = std::begin(arr);  // ein static Iterator auf dessen Anfang
  if(p!=std::end(arr))
  	*p++=i;
  else
    for(int ii : arr)
      std::cout &lt;&lt; ii &lt;&lt; ' ';
}

int main(){
	insert(10);
	insert(20);
	insert(30);
	insert(40);
}
</code></pre>
<p>Ausgabe</p>
<pre><code>10 20 30
</code></pre>
<p>D.h. sowohl arr als auch p wurden nur einmal initialisiert und behielten danach ueber mehrere Funktionsaufrufe ihre Werte.</p>
<p>Das ist prinzipiell alles was Du brauchst.<br />
Deine Aufgabe ist schwerer, weil komplexer, aber mit etwas Gehirnschmalz schaffbar.</p>
<p>Wenn Du irgendwann die Werte in Deinem Array shiften musst, koennten <code>rotate()</code> oder <code>move()</code> aus <code>&lt;algorithm&gt;</code> interessant sein.</p>
<p>PS: oben benutze ich C++11 - es geht aber prinzipiell genau so auch in C++98.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366073</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sun, 17 Nov 2013 22:35:08 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Mon, 18 Nov 2013 14:11:19 GMT]]></title><description><![CDATA[<p>@Furble Wurble<br />
hmmm globale Variablen geht ja nicht weil es ja hier nur um eine Funktion geht. Von static habe ich schon gelesen, aber die ganzen anderen Sachen sind mir komplett neu, steht also nicht in meinen Unterlagen, wesewegen es mich verwundert dass es so gehen soll.</p>
<p>Ich habe mal deinen Code kopiert, aber bein kompilieren traten eine Menge Fehlermeldungen auf.</p>
<p>Hier nochmal eine Anmerkung vom Aufgabensteller:<br />
also wie die aktuellen wert ins array[15] stopfen ... oder besser gesagt auf welche der fünfzehn speicherzellen soll der aktuelle wert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366186</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Mon, 18 Nov 2013 14:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Mon, 18 Nov 2013 16:57:02 GMT]]></title><description><![CDATA[<p>c++123 schrieb:</p>
<blockquote>
<p>@Furble Wurble<br />
hmmm globale Variablen geht ja nicht weil es ja hier nur um eine Funktion geht. Von static habe ich schon gelesen, aber die ganzen anderen Sachen sind mir komplett neu, steht also nicht in meinen Unterlagen, wesewegen es mich verwundert dass es so gehen soll.</p>
<p>Ich habe mal deinen Code kopiert, aber bein kompilieren traten eine Menge Fehlermeldungen auf.</p>
</blockquote>
<p>Zur Erklaerung: vor zwei Jahren wurde einige Veraenderungen an C++ vorgenommen (C++11). Wenn Dein Skript das nicht widerspiegelt und Dein Compiler das nicht kompiliert(*) sind beide nicht mehr bleeding edge. <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 />
Aber das ist nicht schlimm.</p>
<p>Hier das gleiche nochmal mit Features, die z.T. seit 40 Jahren funktionieren:</p>
<pre><code class="language-cpp">// gleicher Code, C++98 Version

#include &lt;iostream&gt;
#include &lt;iterator&gt;

void insert(int i){
  const size_t N = 3;
  static int arr[N]={}; // ein static array
  static int* p = arr;  // ein static int* auf dessen Anfang
  if(p!=arr+N)
    *p++=i;
  else
    for(const int* pp=arr; pp!=arr+N; ++pp)
      std::cout &lt;&lt; *pp &lt;&lt; ' ';
}

int main(){
    insert(10);
    insert(20);
    insert(30);
    insert(40);
}
</code></pre>
<p>Jetzt lesbarer?</p>
<p>c++123 schrieb:</p>
<blockquote>
<p>Hier nochmal eine Anmerkung vom Aufgabensteller:<br />
also wie die aktuellen wert ins array[15] stopfen ... oder besser gesagt auf welche der fünfzehn speicherzellen soll der aktuelle wert?</p>
</blockquote>
<p>Das ist doch Dir ueberlassen, wo Du den Wert einfuegst!? Wichtig ist halt, dass Du den Wert, den Du 15 Durchlaeufe vorher eingelesen hast nicht mehr in die Mittelwertberechnung einbeziehst. Ich koennte mit diesen ominoesen Tipps nichts anfangen...</p>
<p>Wie gesagt:<br />
Prinzipiell kannst Du das Geruest oben aufbohren um die Aufgabe zu erledigen.</p>
<p>Ich ueberlege, wie ich noch helfen kann, aber wenn ich jetzt eine Mittelwertberechnung ueber den Bereich <code>[&amp;arr[0], p)</code> einfuege kann ich auch gleich eine Komplettloesung schreiben, oder?<br />
Wenn's immer noch nicht klingelt musst Du mir verraten, was Du bisher gelernt hast...</p>
<p>(*) Beim Compiler gibts evtl. einen Schalter, der C++11 Support aktiviert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366219</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Mon, 18 Nov 2013 16:57:02 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 19 Nov 2013 11:38:33 GMT]]></title><description><![CDATA[<p>Furble Wurble erst mal Danke für die Große Mühe die du dir machst! <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>
<p>Ja den zweiten code kann ich besser nachvollziehen, aber auch noch nicht 100%.</p>
<p>Zeile 7: Ich gehe davon aus, dass das gleichwertig mit dem gegebenen #define Fenster 15 ist.</p>
<p>Zeile 8: Das Array wurde mit static definiert, warum habt ihr ja schon geschrieben.</p>
<p>Zeile 9: Ein Zeiger wurde auf das Array initialisiert. (Ist Static hier aus dem selben Grund Pflicht wie beim Array selbst?)</p>
<p>Zeile 10: Eine if-Bedingung wurde formuliert mit der Bedingung: Wenn p ungleich Array+Arraygröße, also bei deinem Bsp., p ungleich 3.</p>
<p>Zeile 11: Wenn die if-Bedinung erfüllt ist wird der Zeiger inkrementiert und dem Funktionsparameter, hier i, zugeordnet.</p>
<p>Zeile 12/13: Falls die if-Bedinung nicht erfüllt ist geht es in eine for-Schleife. Den Schleifenkopf verstehe ich nicht, vor allem warum wird hier als pp und unten *pp geschrieben, anstatt p und *p?</p>
<p>Tja als Lehrmaterial hatten wir hauptsächlich das Buch C++ Programmieren mit einfachen Beispielen von Dirk Louis. Es enthält würde ich sagen so die Basics ohne in die Tiefe zu gehen. In unseren Lehrheften ging es dann eher um C. Hier kamen auch dann noch Themen wie Zeiger und mehrdimensionale Felder, was im Buch z.B. fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366327</guid><dc:creator><![CDATA[c++123]]></dc:creator><pubDate>Tue, 19 Nov 2013 11:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Importer:Error:WasEmpty on Tue, 19 Nov 2013 12:45:07 GMT]]></title><description><![CDATA[<p>c++123 schrieb:</p>
<blockquote>
<p>Zeile 7: Ich gehe davon aus, dass das gleichwertig mit dem gegebenen #define Fenster 15 ist.</p>
</blockquote>
<p>Ja. Makros sind im großen und ganzen verpönt. Z.B. weil die den globalen Namensraum 'verschmutzen'.<br />
N hingegen ist nur innerhalb der Funktion <code>insert()</code> gueltig.<br />
Siehe z.B. hier:</p>
<pre><code class="language-cpp">void func(){
#define FENSTER 15;
}

int main(){
  return FENSTER; // huh? Makro FENSTER hier auch gueltig
}
</code></pre>
<p>c++123 schrieb:</p>
<blockquote>
<p>Zeile 9: Ein Zeiger wurde auf das Array initialisiert. (Ist Static hier aus dem selben Grund Pflicht wie beim Array selbst?)[...]<br />
Zeile 10: Eine if-Bedingung wurde formuliert mit der Bedingung: Wenn p ungleich Array+Arraygröße, also bei deinem Bsp., p ungleich 3.</p>
</blockquote>
<p>Der Zeiger p gibt ja bei jedem Funktionsaufruf die Stelle an, an die eingefügt wird. Er ist sozusagen Einfügemarke und Füllstandsindikator. Damit wir den Marker über mehrere Funktionsaufrufe nicht verlieren muss der auch static sein.<br />
Wenn p an der Stelle arr+N angelangt ist, &quot;ist das array voll&quot;. p wird nicht gleich drei sein, sondern irgendeinen Wert haben (je nachdem wo arr im Speicher liegt).<br />
Z.B. Wenn arr an der Adresse 100 im Speicher liegt:</p>
<pre><code>100  101  102  103 ...
+----+----+----+---~
| xx | yy | zz |
+----+----+----+---~
^              ^
|              |
arr            p
</code></pre>
<p>Das Array ist also voll, wenn der Zeiger auf &quot;eins hinter das Array&quot; zeigt - das ist ganz typisch für die Arbeit mit Sequenzen in C++.</p>
<p>c++123 schrieb:</p>
<blockquote>
<p>Zeile 11: Wenn die if-Bedinung erfüllt ist wird der Zeiger inkrementiert und dem Funktionsparameter, hier i, zugeordnet.</p>
</blockquote>
<p>Obacht: Die Zuweisung wird auf den dereferenzierten Zeiger angewandt. Danach wird der Zeiger inkrementiert. Ganz klassisch - wird auf jeden Fall irgendwo z. Thema Zeiger und arrays in Deinem Buch behandelt.</p>
<p>c++123 schrieb:</p>
<blockquote>
<p>Zeile 12/13: Falls die if-Bedinung nicht erfüllt ist geht es in eine for-Schleife. Den Schleifenkopf verstehe ich nicht, vor allem warum wird hier als pp und unten *pp geschrieben, anstatt p und *p?</p>
</blockquote>
<p>pp ist eine neue Variable. Die auch p zu nennen wäre verwirrend. Der Schleifenkopf beinhaltet kein Geheimnis. Sieht immer so oder ähnlich aus. <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>Für Deine Aufgabe kannst Du jetzt ein array nehmen und einen Zeiger - ganz so wie oben.<br />
Wenn Du einen neuen Wert bekommst schreibst Du den an die Stelle auf die der Zeiger zeigt und bewegst den Zeiger weiter.<br />
Dann berechnest Du den Mittelwert der jetzt im Array stehenden Zahlen und gibst ihn zurück.</p>
<p>Etwas dusselig ist jetzt die Stelle, wenn Dein Array voll ist. Du könntest dann vor dem einfügen alle Zahlen im Array eins nach vorne schieben, d.h. der erste Wert fiele aus der Berechnung raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2366342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2366342</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 19 Nov 2013 12:45:07 GMT</pubDate></item></channel></rss>