<?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[while oder for - schleife ohne definiertes Ende]]></title><description><![CDATA[<p>Hallo, bin neu hier und hoffe auf eure Unterstützung.<br />
Vorweg, meine Kenntnisse sind bisher mehr als bescheiden.<br />
Nun zu meinem Problem.<br />
Ich möchte alle 500ms eine Messwert aufnehmen, solange der Wert größer z.b. 5 ist. Wenn der Messwert kleine 5 ist soll die Messreihe wieder beendet werden.</p>
<p>Danach soll der Spitzenwert ausgegeben werden, was ich denke ich hinbekommen sollte.</p>
<p>Meine Überlegung ist jetzt, dass ich hier</p>
<pre><code>for(int i=0;i&lt;?;i++)
</code></pre>
<p>i begrenzen muss, da ich sonst eine Endlosschleife habe.</p>
<p>Kann ich das durch eine weitere Variable begrenzen, die ich vorher in einer whileschleife die Anzahl der Messwerte mitzählen lasse?</p>
<p>Ich hoffe ihr könnt meine Frage nachvollziehen<br />
Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/318315/while-oder-for-schleife-ohne-definiertes-ende</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 10:51:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318315.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Jul 2013 09:04:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 09:04:43 GMT]]></title><description><![CDATA[<p>Hallo, bin neu hier und hoffe auf eure Unterstützung.<br />
Vorweg, meine Kenntnisse sind bisher mehr als bescheiden.<br />
Nun zu meinem Problem.<br />
Ich möchte alle 500ms eine Messwert aufnehmen, solange der Wert größer z.b. 5 ist. Wenn der Messwert kleine 5 ist soll die Messreihe wieder beendet werden.</p>
<p>Danach soll der Spitzenwert ausgegeben werden, was ich denke ich hinbekommen sollte.</p>
<p>Meine Überlegung ist jetzt, dass ich hier</p>
<pre><code>for(int i=0;i&lt;?;i++)
</code></pre>
<p>i begrenzen muss, da ich sonst eine Endlosschleife habe.</p>
<p>Kann ich das durch eine weitere Variable begrenzen, die ich vorher in einer whileschleife die Anzahl der Messwerte mitzählen lasse?</p>
<p>Ich hoffe ihr könnt meine Frage nachvollziehen<br />
Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337390</guid><dc:creator><![CDATA[giebl0n]]></dc:creator><pubDate>Mon, 08 Jul 2013 09:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 09:17:54 GMT]]></title><description><![CDATA[<p>giebl0n schrieb:</p>
<blockquote>
<p>Ich möchte alle 500ms eine Messwert aufnehmen, solange der Wert größer z.b. 5 ist. Wenn der Messwert kleine 5 ist soll die Messreihe wieder beendet werden.</p>
<p>Danach soll der Spitzenwert ausgegeben werden, was ich denke ich hinbekommen sollte.</p>
<p>Meine Überlegung ist jetzt, dass ich hier</p>
<pre><code>for(int i=0;i&lt;?;i++)
</code></pre>
<p>i begrenzen muss, da ich sonst eine Endlosschleife habe.</p>
<p>Kann ich das durch eine weitere Variable begrenzen, die ich vorher in einer whileschleife die Anzahl der Messwerte mitzählen lasse?</p>
</blockquote>
<p>Du hast geschrieben, du willst es beenden, wenn ein Messwert kleiner 5 ist. Dann machst du einfach, <code>i&gt;4</code> . Natürlich kannst du auch eine Variable nehmen. <code>int lower_bound = 4</code> und dann <code>i&gt;lower_bound</code> .</p>
<p>Was du für deine Aufgabe brauchst:<br />
1. std::this_thread::sleep_for<br />
2. std::vector<br />
3. std::std::max_element</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337391</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 08 Jul 2013 09:17:54 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 11:12:00 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>2. std::vector<br />
3. std::std::max_element</p>
</blockquote>
<p>.. unnötig.</p>
<p>Einfacher:</p>
<pre><code>float maximaler_messwert = hole_messwert(); // Vorbelegung
    for( float messwert; (messwert = hole_messwert()) &gt;= 5.f; std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) ) )
    {
        if( messwert &gt; maximaler_messwert )
        {
            maximaler_messwert = messwert;
        }
    }
    // -&gt; maximaler_messwert
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2337419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337419</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 08 Jul 2013 11:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 12:22:34 GMT]]></title><description><![CDATA[<p>Hallo giebl0n,<br />
ja du kannst es mit der Variabel begrenzen, die du vorher für die Anzahl der Messwerte mitzählen lässt. Sie muss dann aber außerhalb der while-Schleife definiert sein, da sie sonst nur in der Schleife existiert.</p>
<pre><code>int anzahlMesswerte;
while (...)
{
  ...
  anzahlMesswerte++;
}

for (int i = 0; i &lt; anzahlMesswerte; i++)
{
  ...
}
</code></pre>
<p>Wenn du die Variabel nach der for-Schleife nicht mehr und i in der Schleife nicht brauchst, kannst du die Variabel in der for-Schleife auch wieder runter zählen.</p>
<pre><code>for ( ; anzahlMesswerte &gt; 0; --anzahlMesswerte)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2337435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337435</guid><dc:creator><![CDATA[schleife]]></dc:creator><pubDate>Mon, 08 Jul 2013 12:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 17:52:16 GMT]]></title><description><![CDATA[<p>giebl0n schrieb:</p>
<blockquote>
<p>Meine Überlegung ist jetzt, dass ich hier</p>
<pre><code>for(int i=0;i&lt;?;i++)
</code></pre>
<p>i begrenzen muss, da ich sonst eine Endlosschleife habe.</p>
</blockquote>
<p>Du kannst auch <code>for (int i = 0; ; i++)</code> schreiben, also die Bedingung einfach weglassen.<br />
Und die Schleife dann explizit mit <code>break</code> abbrechen. Finde ich oft übersichtlicher als immer unbedingt dafür zu sorgen dass die Abbruchbedingung im Schleifenkopf stehen kann.<br />
Also z.B.</p>
<pre><code class="language-cpp">for (int i = 0; ; i++)
{
    float messwert = hole_messwert();
    if (messwert &lt; minimaler_messwert)
        break;
    // ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2337509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337509</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 08 Jul 2013 17:52:16 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Mon, 08 Jul 2013 17:40:16 GMT]]></title><description><![CDATA[<p>Werner_logoff schrieb:</p>
<blockquote>
<pre><code>for( float messwert; (messwert = hole_messwert()) &gt;= 5.f; std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) ) )
</code></pre>
</blockquote>
<p>Immer wenn du sowas schreibst tötet Gott ein Kätzchen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Aber mal ehrlich: findest du das übersichtlich? Liest du gerne Code der so geschrieben ist?<br />
Schon klar dass das total subjektiv ist, je nachdem was für Code man selbst schreibt und was man halt gewohnt ist, aber ich würde das wirklich eher mit <code>break</code> schreiben, und auch das Sleep in den Schleifenrumpf ziehen.<br />
Anstatt den Wert einer geklammerten Zuweisung mit einem Grenzwert zu vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337513</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 08 Jul 2013 17:40:16 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Tue, 09 Jul 2013 05:20:04 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn du [...] i in der Schleife nicht brauchst[...]</p>
<pre><code>for ( ; anzahlMesswerte &gt; 0; --anzahlMesswerte)
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code>while( anzahlMesswerte-- )
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a>: Was wenn die erste Messung, deren Ergebnis du als Vorbelegung in <code>maximaler_messwert</code> speicherst, bereits unter 5 liegt? Überhaupt kann man mit deiner Version die Messreihe nicht vernünftig speichern, bzw. da kommt ein extra Einfüge-Statement vor die Schleife.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>: <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="👍"
    /> Das wollte ich auch schreiben. Die Schleife ist der pure Wahnsinn.</p>
<blockquote>
<p>Schon klar dass das total subjektiv ist, je nachdem was für Code man selbst schreibt und was man halt gewohnt ist, aber ich würde das wirklich eher mit break schreiben, und auch das Sleep in den Schleifenrumpf ziehen.</p>
</blockquote>
<p>Ja, genau! Dachte, ich bin der einzige.</p>
<pre><code>#include &lt;random&gt;
#include &lt;chrono&gt;

using namespace std;

float hole_messwert()
{
	static ranlux48 engine( chrono::system_clock::now().time_since_epoch().count() );
	static uniform_int_distribution&lt;int&gt; distribution{4, 10};
	return distribution(engine);
}

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

int main()
{
	float maximaler_messwert = numeric_limits&lt;float&gt;::min(); // Vorbelegung

	vector&lt;float&gt; messwerte;

    for(;;)
    {
    	float const messwert = hole_messwert();

    	if( messwert &lt; 5.f )
			break;

	messwerte.emplace_back( messwert );

        if( messwert &gt; maximaler_messwert )
            maximaler_messwert = messwert;

        this_thread::sleep_for( chrono::milliseconds( 500 ) );
    }

	copy( begin(messwerte), end(messwerte), ostream_iterator&lt;float&gt;(cout, &quot; &quot;) );
    cout &lt;&lt; &quot;\nMaximaler Messwert: &quot; &lt;&lt; maximaler_messwert;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2337596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337596</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 09 Jul 2013 05:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Tue, 09 Jul 2013 10:31:52 GMT]]></title><description><![CDATA[<p>Ist es erlaubt, dass includes irgendwo stehen? Dachte, sie müssen immer ganz am Anfang stehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337642</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Tue, 09 Jul 2013 10:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Tue, 09 Jul 2013 10:44:51 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Ist es erlaubt, dass includes irgendwo stehen? Dachte, sie müssen immer ganz am Anfang stehen?</p>
</blockquote>
<p>Ist doch nur eine Textersetzung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337644</guid><dc:creator><![CDATA[qweasdyxc]]></dc:creator><pubDate>Tue, 09 Jul 2013 10:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to while oder for - schleife ohne definiertes Ende on Tue, 09 Jul 2013 10:59:22 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Werner_logoff schrieb:</p>
<blockquote>
<pre><code>for( float messwert; (messwert = hole_messwert()) &gt;= 5.f; std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) ) )
</code></pre>
</blockquote>
<p>Immer wenn du sowas schreibst tötet Gott ein Kätzchen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Ich hab den Eindruck, dass so mancher sich von der guten Usability der STL manchmal dazu verleiten lässt, solche tödlichen Einzeiler zu schreiben.... <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2337645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2337645</guid><dc:creator><![CDATA[It0101]]></dc:creator><pubDate>Tue, 09 Jul 2013 10:59:22 GMT</pubDate></item></channel></rss>