<?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[Lösung von Aufgabe aus C++ Primer]]></title><description><![CDATA[<p>Könnt ihr meine Lösung bitte bewerten bzw. verbessern, da in meinem C++ Buch keine Lösungen angegeben sind.</p>
<p>Aufgabe 3.14:</p>
<blockquote>
<p>Lesen Sie Text in einen Vektor ein und speichern Sie jedes Wort der Eingabe als Vektorelemenet. Verwandeln Sie die Wörter in Großbuchstaben. Geben Sie die umgewandelten Elemente in Zeilen zu je acht Wörtern aus.</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
    string temp;
    string temp_modify;
    vector&lt;string&gt; words;

    while(getline(cin,temp) and temp != &quot;~&quot;) //&quot;~&quot; Bedingung zum Beenden von Eingabe
    {
        for(string::size_type i=0; i&lt;temp.size(); ++i)
        {
            temp_modify += toupper(temp[i]);
        }
        words.push_back(temp_modify);
        temp_modify = &quot;&quot;;
    }

    for(vector&lt;string&gt;::size_type i=0; i&lt;words.size(); ++i)
    {
        for(vector&lt;string&gt;::size_type j=0; j&lt;8; ++j) //8 Wörter pro Zeile
        {
            if( (i+j) &gt; (words.size() - 1) ) break; //Schutz vor Pufferüberlauf
            cout &lt;&lt; words[i+j] &lt;&lt; &quot; &quot;;
        }
        i += 7;
        cout &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Eure Meinung? Hättet ihr dass anderst gelöst? Kann man etwas verbessern?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230257/lösung-von-aufgabe-aus-c-primer</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 09:20:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230257.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Dec 2008 01:31:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Tue, 23 Dec 2008 01:31:23 GMT]]></title><description><![CDATA[<p>Könnt ihr meine Lösung bitte bewerten bzw. verbessern, da in meinem C++ Buch keine Lösungen angegeben sind.</p>
<p>Aufgabe 3.14:</p>
<blockquote>
<p>Lesen Sie Text in einen Vektor ein und speichern Sie jedes Wort der Eingabe als Vektorelemenet. Verwandeln Sie die Wörter in Großbuchstaben. Geben Sie die umgewandelten Elemente in Zeilen zu je acht Wörtern aus.</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
    string temp;
    string temp_modify;
    vector&lt;string&gt; words;

    while(getline(cin,temp) and temp != &quot;~&quot;) //&quot;~&quot; Bedingung zum Beenden von Eingabe
    {
        for(string::size_type i=0; i&lt;temp.size(); ++i)
        {
            temp_modify += toupper(temp[i]);
        }
        words.push_back(temp_modify);
        temp_modify = &quot;&quot;;
    }

    for(vector&lt;string&gt;::size_type i=0; i&lt;words.size(); ++i)
    {
        for(vector&lt;string&gt;::size_type j=0; j&lt;8; ++j) //8 Wörter pro Zeile
        {
            if( (i+j) &gt; (words.size() - 1) ) break; //Schutz vor Pufferüberlauf
            cout &lt;&lt; words[i+j] &lt;&lt; &quot; &quot;;
        }
        i += 7;
        cout &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Eure Meinung? Hättet ihr dass anderst gelöst? Kann man etwas verbessern?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634423</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 23 Dec 2008 01:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Tue, 23 Dec 2008 07:04:37 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Eure Meinung?</p>
</blockquote>
<p>Löst die Aufgabe, ist also in Ordnung.<br />
Manches hätte man einfacher oder eleganter lösen können, aber es ist nicht sicher, ob das im Kontext dieser Aufgabe bereits bekannt oder gewünscht war.</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>Hättet ihr dass anderst gelöst?</p>
</blockquote>
<p><a href="http://www.duden.de/suche/index.php?begriff=anderst&amp;bereich=mixed&amp;pneu=" rel="nofollow">Das Wort &quot;anderst&quot; gibt es nicht.</a> <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>
<pre><code class="language-cpp">int main() 
{ 
    std::vector&lt;std::string&gt; vs = std::vector&lt;std::string&gt;(std::istream_iterator&lt;std::string&gt;(std::cin), std::istream_iterator&lt;std::string&gt;()); 
	for( size_t i = 0; i &lt; vs.size(); ++i )
	{
	    std::transform(vs[i].begin(), vs[i].end(), vs[i].begin(), static_cast&lt;int(*)(int)&gt;(std::toupper));
	}
	for( size_t i = 0; i &lt; vs.size(); ++i )
	{
		std::cout &lt;&lt; vs[i] &lt;&lt; ' ';
		if(i%8 == 7)
		{
			std::cout &lt;&lt; std::endl;
		}
	}
}
</code></pre>
<p>Man könnte auch mit transform sofort auf cout ausgeben. Dann sind allerdings die Strings im Vector nicht umgewandelt, sondern nur die Ausgabe.</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>Kann man etwas verbessern?</p>
</blockquote>
<p>Anstatt temp_modify immer wieder zu leeren, könntest du es einfach erst in der Schleife deklarieren. Eigentlich könntest du auf temp_modify komplett verzichten und statt dessen temp &quot;in-place&quot; umwandeln.</p>
<p>Und der Vergleich (i+j) &gt; (words.size() - 1) ist etwas holprig, warum nicht einfach (i+j) =&gt; words.size()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634432</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 23 Dec 2008 07:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Tue, 23 Dec 2008 09:11:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wahrscheinlich nur eine persönliche Ästhetiksache, aber ich finde den &quot;Matrixzugriff&quot; auf words einerseits unschön/überflüssig und andererseits empfinde ich ihn als leichter lesbar mit</p>
<pre><code class="language-cpp">...
    for(vector&lt;string&gt;::size_type i=0; i&lt;spaltenAnzahl; ++i)    {
        for(vector&lt;string&gt;::size_type j=0; j&lt;zeilenAnzahl; ++j) {
...
            cout &lt;&lt; words[i*spaltenLaenge + j] &lt;&lt; &quot; &quot;;
...
</code></pre>
<p>als mit dem break/Index+=7/...</p>
<p>Aber das hier:</p>
<p>Stromberg schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
...
string::size_type
...
vector&lt;string&gt;::size_type
</code></pre>
<p>...</p>
</blockquote>
<p>finde ich ausgesprochen schönen Stil (wenn auch für ein kleines Beispiel etwas oversized). <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <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="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634458</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 23 Dec 2008 09:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 00:53:22 GMT]]></title><description><![CDATA[<p>Noch eine andere Übung (ich mach jetzt nicht extra einen neuen Thread auf):<br />
3.13</p>
<blockquote>
<p>Lesen Sie eine Reihe von Intergerzahlen in einen Vektor ein. Berechnen Sie die Summe von jeweils zwei aufeinander folgenden Elementen und geben Sie sie aus. Wenn die Anzahl der Elemente ungerade ist, teilen Sie dies dem Benutzer mit und geben den letzten Wert ohne Addition aus. [MIT ITERATOREN LÖSEN, NICHT MIT INDIZES!]</p>
</blockquote>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
    vector&lt;int&gt;::size_type elements;
    vector&lt;int&gt; values;
    cout &lt;&lt; &quot;Wieviele Elemente? &quot;;
    cin &gt;&gt; elements;

    for(vector&lt;int&gt;::size_type j = 1; j &lt;= elements; ++j)
    {
        int temp = 0;
        cin &gt;&gt; temp;
        values.push_back(temp);
    }

    cout &lt;&lt; endl;

    int temp = 0;
    short counter = 0;

    for(vector&lt;int&gt;::iterator iter = values.begin(); iter != values.end(); ++iter)
    {
        temp += *iter;
        ++counter;
        if(counter == 2)
        {
            cout &lt;&lt; temp &lt;&lt; endl;
            temp = 0;
            counter = 0;
        }
    }

    if( (elements % 2) != 0)
    {
        vector&lt;int&gt;::iterator iter = values.end();
        --iter;
        cout &lt;&lt; &quot;Anzahl der Elemente ist ungerade.&quot; &lt;&lt; endl;
        cout &lt;&lt; *iter &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Eure Meinung ist wieder gefragt.<br />
Was mit sehr gefehlt hat, ist eine Funktion oder sowas, mit der ich sehen kann wo sich der Iterator gerade befindet (gibts dass?), kam leider in meinem Buch noch nicht vor.<br />
Was mir auch noch gefehlt hat, wie kann ich einen Iterator mal mehr als ein Element erhöhen/erniedrigen? (den nur mit &quot;++/--&quot; ist dass äußerst aufwendig)<br />
Kam leider auch noch nicht in meinem Buch vor.</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634923</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 24 Dec 2008 00:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 01:18:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if(values.empty())
{
//nichts zu berechnen
}
for(vector&lt;int&gt;::const_iterator iter = values.begin(), end (values.end()), last(values.end()-1); iter != end; iter += 2)
{
 if(iter == last)
 {
  cout &lt;&lt; &quot;ungerade: &quot; &lt;&lt; *iter &lt;&lt; endl;
 }
 else
 {
  cout &lt;&lt; *iter + *(iter+1) &lt;&lt; endl;
 }
}
</code></pre>
<blockquote>
<p>Was mit sehr gefehlt hat, ist eine Funktion oder sowas, mit der ich sehen kann wo sich der Iterator gerade befindet (gibts dass?)</p>
</blockquote>
<p>ich weiß nicht, wozu man das brauchen sollte - aber es gibt so etwas:<br />
std::distance (zu finden in &lt;iterator&gt;) - musst nur aufpassen, dass er auch auf den letzten iterator kommt mit dem gegebenen startiterator - sonst siehts bissl schlecht aus ^^</p>
<blockquote>
<p>Was mir auch noch gefehlt hat, wie kann ich einen Iterator mal mehr als ein Element erhöhen/erniedrigen?</p>
</blockquote>
<p>Mit +=/-= - geht aber imho nur bei random access-containern (std::vector ^^)</p>
<pre><code class="language-cpp">for(vector&lt;int&gt;::size_type j = 0; j &lt; elements; ++j) //find es von 0 hübscher ^^
    {
        int temp; //über die initialisierung hier lässt sich sicherlich streiten - ab und an mach ich das zwar auch, aber hier ists denke ziemlich sinnlos ^^
        cin &gt;&gt; temp;
//evtl noch überprüfung auf good, ggf. flags wieder setzen oder direkt mit exceptions arbeiten...
        values.push_back(temp);
    }
</code></pre>
<p>so würd ich es jz auf die schnelle machen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634927</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 24 Dec 2008 01:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 01:38:16 GMT]]></title><description><![CDATA[<p>Die Abbruchbedingung iter != values.end() -1 verstehe ich noch nicht so ganz.<br />
Wenn ich z.B. 10 Elemente habe, dann ist iter am Anfang 0.<br />
Dann &quot;+2&quot; iter = 2.<br />
Dann &quot;+2&quot; iter = 4.<br />
Dann &quot;+2&quot; iter = 6.<br />
Dann &quot;+2&quot; iter = 8.<br />
Dann &quot;+2&quot; iter = 10. (values.end()) was doch eigentlich gar nicht möglich ist.</p>
<p>Und end()-1 wäre iter ja eigl. 9. Aber auf 9 kommt man ja nie. Ich bin verwirrt, is glaub schon zu spät für mich, kannst du mir dass bitte nochmal erklären?</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634930</guid><dc:creator><![CDATA[Stromberg_]]></dc:creator><pubDate>Wed, 24 Dec 2008 01:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 06:33:08 GMT]]></title><description><![CDATA[<p>das von unskilled crashed auch wunderbar bei ungeraded anzahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634948</guid><dc:creator><![CDATA[yep]]></dc:creator><pubDate>Wed, 24 Dec 2008 06:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 09:36:33 GMT]]></title><description><![CDATA[<p>sry, hier fehlt noch nen break:</p>
<pre><code class="language-cpp">if(iter == last) 
 { 
  cout &lt;&lt; &quot;ungerade: &quot; &lt;&lt; *iter &lt;&lt; endl; 
  break; //hier ^^
 }
</code></pre>
<p>also bei 3 Elementen sollte das so in etwa funzen:</p>
<pre><code>1.Element
  iter == last &lt;= false
  -&gt; *iter + *(iter+1) == Summe aus 1+2
-&gt; iter += 2
3.Element
  iter == last &lt;= true
  -&gt; &quot;ungerade: &quot; &lt;&lt; *iter
  -&gt; break
</code></pre>
<p>das mit dem break lag wohl daran, dass es schon ein wenig später war und so ^^<br />
naja - happy christmas :xmas2:</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634966</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 24 Dec 2008 09:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Wed, 24 Dec 2008 12:45:34 GMT]]></title><description><![CDATA[<p>Zum Einlesen übrigens noch:</p>
<pre><code class="language-cpp">#include &lt;iterator&gt;

…

std::copy(std::istream_iterator&lt;int&gt;(std::cin), std::istream_iterator&lt;int&gt;(), std::back_inserter(vec));
</code></pre>
<p>Einzeiler sind doch toll <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/1634997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634997</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 24 Dec 2008 12:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Thu, 25 Dec 2008 01:11:04 GMT]]></title><description><![CDATA[<p>Hier der 2. Teil der Übung, ist nun bloß n bisschen abgeändert.</p>
<blockquote>
<p>Ändern Sie das Programm nun so, dass es zuerst die Summe des ersten und des letzten, dann die Summe des zweiten und des vorletzten Elements ausgibt usw. [bezogen auf 1. Teil]</p>
</blockquote>
<p>Hab dass dann so, unter Einbeziehung eurer ganzen Ratschläge, Tipps..., umgesetzt.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
    vector&lt;int&gt;::size_type elements;
    vector&lt;int&gt; values;
    cout &lt;&lt; &quot;Wieviele Elemente? &quot;;
    cin &gt;&gt; elements;

    for(vector&lt;int&gt;::size_type i = 0; i&lt;elements; ++i)
    {
        int temp = 0;
        cout &lt;&lt; &quot;Wert &quot; &lt;&lt; i+1 &lt;&lt; &quot;:&quot;;
        cin &gt;&gt; temp;
        values.push_back(temp);
    }

    cout &lt;&lt; endl;

    for(vector&lt;int&gt;::const_iterator iter_begin = values.begin(), iter_end = values.end()-1;
    iter_begin != iter_end + 1; ++iter_begin, --iter_end)
    {
        if(iter_begin == iter_end)
        {
            cout &lt;&lt; &quot;Anzahl der Elemente ist ungerade.&quot; &lt;&lt; endl;
            cout &lt;&lt; &quot;Restwert: &quot; &lt;&lt; *iter_begin;
            break;
        }
        cout &lt;&lt; *iter_begin + *iter_end &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>So ists aber doch sehr gut, oder kann man daran noch etwas aussetzen? (Stil / Allg. Verbesserungen?)</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635156</guid><dc:creator><![CDATA[Stromberg_]]></dc:creator><pubDate>Thu, 25 Dec 2008 01:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Thu, 25 Dec 2008 13:40:27 GMT]]></title><description><![CDATA[<p>Und nun noch die andere Aufgabe:</p>
<blockquote>
<p>Lesen Sie Text in einen Vektor ein und speichern Sie jedes Wort der Eingabe als Vektorelemenet. Verwandeln Sie die Wörter in Großbuchstaben. Geben Sie die umgewandelten Elemente in Zeilen zu je acht Wörtern aus.</p>
</blockquote>
<p>Aber diesmal darf man es nur mit Iteratoren lösen, nicht mit Indizes.</p>
<p>Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;cctype&gt;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main()
{
    vector&lt;string&gt; words;
    string temp;
    while(getline(cin,temp) and temp != &quot;~&quot;)
    {
        words.push_back(temp);
    }

    for(vector&lt;string&gt;::iterator iter = words.begin(); iter != words.end(); ++iter)
    {
        for(string::iterator string_iter = (*iter).begin(); string_iter != (*iter).end(); ++string_iter)
        {
            *string_iter = toupper(*string_iter);
        }

        cout &lt;&lt; *iter &lt;&lt; &quot; &quot;;
        if((distance(words.begin(),iter) + 1) % 8 == 0) cout &lt;&lt; endl; //immer nach 8 Wörtern Zeilenumbruch
    }

    return 0;
}
</code></pre>
<p>Eure Meinung? Wie hätte ihr dass gelöst? .....</p>
<p>MfG<br />
Stromberg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635254</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Thu, 25 Dec 2008 13:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Thu, 25 Dec 2008 20:33:25 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">for(vector&lt;int&gt;::size_type i = 0; i&lt;elements; ++i)
    {
        int temp = 0;
        cout &lt;&lt; &quot;Wert &quot; &lt;&lt; i+1 &lt;&lt; &quot;:&quot;;
        cin &gt;&gt; temp;
        values.push_back(temp);
    }
</code></pre>
</blockquote>
<p>=&gt;</p>
<pre><code class="language-cpp">//cin.exceptions setzen + try/catch drum packen oder fehler-flags nach jeder eingabe prüfen
    for(vector&lt;int&gt;::size_type i = 0; i &lt; elements;)
    {
        cout &lt;&lt; &quot;Wert #&quot; &lt;&lt; ++i &lt;&lt; &quot;:&quot;; //unser i+1
        int temp;
        cin &gt;&gt; temp;
        values.push_back(temp);
    }
</code></pre>
<blockquote>
<pre><code class="language-cpp">for(vector&lt;int&gt;::const_iterator iter_begin = values.begin(), iter_end = values.end()-1; iter_begin != iter_end + 1; ++iter_begin, --iter_end)
</code></pre>
</blockquote>
<p>1. Wer hat das vorgeschlagen?<br />
2. Was willst du dort machen?</p>
<p><code>return 0;</code> ist zwar nicht falsch aber warum schreibst du es mit hin?</p>
<blockquote>
<pre><code class="language-cpp">(*iter).begin()
</code></pre>
</blockquote>
<p>Wie wärs statt dessen mit <code>iter-&gt;begin()</code> - dann sieht man vll auch noch durch?! ^^</p>
<blockquote>
<pre><code class="language-cpp">for(vector&lt;string&gt;::iterator iter = words.begin(); iter != words.end(); ++iter)
</code></pre>
</blockquote>
<p>Hier wird jedes mal wieder words.end() aufgerufen... Ist bei Vektor &quot;nur&quot; data+elements - aber trotzdem sinnlos, weil vermeidbar - glaube auch nicht, dass das rausoptimiert wird...</p>
<blockquote>
<pre><code class="language-cpp">for(vector&lt;string&gt;::iterator iter = words.begin(); iter != words.end(); ++iter)
    {
        for(string::iterator string_iter = (*iter).begin(); string_iter != (*iter).end(); ++string_iter)
        {
            *string_iter = toupper(*string_iter);
        }

        cout &lt;&lt; *iter &lt;&lt; &quot; &quot;;
        if((distance(words.begin(),iter) + 1) % 8 == 0) cout &lt;&lt; endl; //immer nach 8 Wörtern Zeilenumbruch
    }
</code></pre>
</blockquote>
<p>Ich weiß zwar, dass es so performanter ist, aber ich würde IMMER die eingabe von der verarbeitung und die wiederrum auch von der ausgabe trennen - die geschwindigkeits-einbußen sollten zu vernachlässigen sein, aber man könnte es dann schön in aufgabenbereiche aufsplitten - und es gehört halt einfach nicht zusammen ^^ (ausahmen sind nat., wenn man n elemente addieren soll diese aber danach nicht mehr braucht - aber ich finds trotzdem hässlich so was zu mischen ^^)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635486</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 25 Dec 2008 20:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Fri, 26 Dec 2008 00:07:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(vector&lt;int&gt;::const_iterator iter_begin = values.begin(), iter_end = values.end()-1; iter_begin != iter_end + 1; ++iter_begin, --iter_end)
</code></pre>
<p>Ich habe mir dass so gedacht. Die Aufgabenstellugn war hier doch neu, man sollte das erste und dass letzte Feld addieren, das zweite und das vorletzte...u.s.w.<br />
Somit lass ich einen Iterator von vorne (iter_begin) und einen von hinten (iter_end) ablaufen, und addiere die beiden.</p>
<p>Wie soll ich dass dann verbessern?</p>
<pre><code class="language-cpp">for(vector&lt;string&gt;::iterator iter = words.begin(); iter != words.end(); ++iter)
</code></pre>
<p>so</p>
<pre><code class="language-cpp">const vector&lt;string&gt;::const_iterator end = words.end()
for(.....; iter != end;.......)
</code></pre>
<p>??? Oder wie meinst du dass?<br />
Ich kann mir aber nicht vorstellen, dass jedesmal words.end() neu aufgerufen wird, ich glaub schon dass der Compiler des wegoptimiert.</p>
<p>MfG<br />
Stromberg</p>
<p>PS: Danke für deine Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635603</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Fri, 26 Dec 2008 00:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Lösung von Aufgabe aus C++ Primer on Fri, 26 Dec 2008 09:18:52 GMT]]></title><description><![CDATA[<p>Zum Rückwärtsdurchgehen verwendet man üblicherweise container::reverse_iterator.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635676</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 26 Dec 2008 09:18:52 GMT</pubDate></item></channel></rss>