<?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[Fussball_Em-Daten in Vektor schreiben]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich hoffe ihr könnt mir hier helfen, denn ich kann den Fehler in meiner Arbeit einfach nicht finden...habe schon 3 mal Schreibtischtest gemacht, kann aber den Fehler einfach nicht sehen....er muss irgendwo beim Einlesen der Daten in den Vektor passieren, denke ich...Ich weiß es ist viel zu lesen, aber ich komme hier echt nicht weiter -,-</p>
<p>Ich hoffe jemand von euch kann mir helfen, bin hier schon am verzweifeln...<br />
Folgende Aufgabenstellung gilt es zu lösen:</p>
<p>-------------------------------------------------------------------<br />
Schreiben Sie mit Hilfe des Scanners ein C++ Programm,<br />
das die Ergebnisse der EM-Vorrundenspiele einliest, in einer entsprechenden Datenstruktur speichert und anschließend ausgibt.<br />
Eingabebeispiel:</p>
<p>( &quot;Polen&quot;: 2:1, 3:2, 1:1<br />
&quot;Griechenland&quot;: 1:2, 0:1, 2:0<br />
&quot;Russland&quot;: 0:0, 2:3, 0:2<br />
&quot;Tschechien&quot;: 0:0, 1:0, 1:1<br />
)<br />
( &quot;Niederlande&quot;: 1:1, 3:1, 3:0<br />
&quot;Dänemark&quot;: 1:1, 3:1, 1:0<br />
&quot;Deutschland&quot;: 2:2, 1:3, 0:1<br />
&quot;Portugal&quot;: 2:2, 1:3, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f607.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_halo"
      title="0:3"
      alt="😇"
    /><br />
)</p>
<p>Pro Mannschaft werden folgende Informationen ausgegeben: Platzierung, Name der Mannschaft, Anzahl der Spiele, Anzahl der geschossenen Tore, Tordifferenz, Punkte. Die Ausgabe soll also in folgender Form dargestellt werden:</p>
<p>Gruppe A<br />
--------<br />
1 Polen 3 6 2 7<br />
2 Tschechien 3 2 1 5<br />
3 Griechenland 3 3 0 3<br />
4 Russland 3 2 -3 1</p>
<p>Gruppe B<br />
--------<br />
1 Niederlande 3 7 5 7<br />
2 Dänemark 3 5 3 7<br />
3 Deutschland 3 3 -3 1<br />
4 Portugal 3 3 -5 1</p>
<p>------------------------------------------------------ENDE DER ANGABE</p>
<p>wie ich hier Tordifferenz ermittle etc ist erstmal unwichtig, das stimmt sicher ist ja ned schwer! Ich haeb aber ein Problem mit dem Einlesen in den Vektor allgemein!<br />
Aktuell sieht meine Ausgabe noch etwa so aus ( die Funktion, welche die mannschaften nach Rängen sortiert fehlt hier noch, deshalb ist hier die Reihenfolge der Mannschaften noch anders als oben beschrieben):</p>
<p>Gruppe A<br />
--------<br />
1Polen 3 6 2 7<br />
2Griechenland 3 3 0 3<br />
3Russland 3 2 -3 1<br />
4 31717986916 0 3</p>
<p>Gruppe B<br />
--------<br />
1Niederlande 3 7 5 7<br />
2Dõnemark 3 5 3 7<br />
3Deutschland 3 3 -3 1<br />
4 31717986916 0 3</p>
<p>WICHTIG!:<br />
Wie man sehen kann wird bei mir jeweils die letze Nation nicht eingelesen...<br />
oder liegts an der Ausgabe?<br />
Ich poste euch jetzt einmal die verantwortlichen Funktionen meiner Lösung:</p>
<p>-----------------------------------------------------------------<br />
Grundsätzlicher Aufbau meiner Daten:<br />
Header:</p>
<p>struct PairOfValues{<br />
int FirstValue;<br />
int SecondValue;<br />
};</p>
<p>struct OneNation{<br />
std::string Nation;<br />
PairOfValues FirstMatch;<br />
PairOfValues SecondMatch;<br />
PairOfValues ThirdMatch;<br />
};</p>
<p>class OneGroup {</p>
<p>public:<br />
// Default - CTOR<br />
OneGroup();</p>
<p>//DTOR<br />
~OneGroup();</p>
<p>void SetNations(OneNation const Nation, int NationCounter);<br />
OneNation GetNations(int NationCounter);</p>
<p>private:<br />
OneNation mNation1;<br />
OneNation mNation2;<br />
OneNation mNation3;<br />
OneNation mNation4;<br />
};</p>
<p>// Vektor enthält alle Gruppenobjekte, also alle Informationen aus dem Eingabestrom<br />
typedef std::vector &lt;OneGroup&gt; DataVector;</p>
<p>// ------------------Funktionen---------------------</p>
<p>// GetData<br />
void GetData(std::string Datapath, DataVector &amp; Vect);</p>
<p>// Print<br />
void Print(std::ostream &amp; ost, DataVector Vect);</p>
<p>// ------------------Konstanten---------------------</p>
<p>int const NumberOfMatchesTotal = 3;</p>
<p>int const MinMemberCounterSize = 1;<br />
int const MaxMemberCounterSize = 4;</p>
<p>int const MinMatchCounterSize = 1;<br />
int const MatchCounterSize2 = 2;<br />
int const MatchCounterSize3 = 3;<br />
int const MatchCounterSize4 = 4;<br />
int const MatchCounterSize5 = 5;<br />
int const MaxMatchCounterSize = 6;</p>
<p>--------------------------------------------------------------------HEADER ENDE</p>
<p>HIER LIEGT IRGENDWO DER FEHLER BEGRABEN:<br />
--------------------------------------------------------------------<br />
Print-Funktion und ReadData<br />
--------------------------------------------------------------------</p>
<p>void GetData(std::string Datapath, DataVector &amp; Vect)<br />
{<br />
ifstream File(Datapath);</p>
<p>if (!File) {<br />
throw std::string(&quot;File does not exist at all!&quot;);<br />
}<br />
scanner scan(File);</p>
<p>OneGroup Group; // Gruppe erstellen<br />
OneNation Nation; // Nation erstellen</p>
<p>int MemberCounter = 0;<br />
int MatchCounter = 0;</p>
<p>while (!scan.eof ())<br />
{<br />
if(scan.symbol_is_string() || scan.symbol_is_integer()){</p>
<p>if(scan.symbol_is_string()){ // String in nation aufnehmen<br />
Nation.Nation = scan.get_string();<br />
++MemberCounter;<br />
//scan.next_symbol();<br />
}</p>
<p>// Struktur füllen<br />
if(scan.symbol_is_integer()) // NO MAGIC NUMBERS! <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="😃"
    /><br />
{<br />
++MatchCounter;</p>
<p>if(MatchCounter == MinMatchCounterSize){<br />
Nation.FirstMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize2){<br />
Nation.FirstMatch.SecondValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize3){<br />
Nation.SecondMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize4){<br />
Nation.SecondMatch.SecondValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize5){<br />
Nation.ThirdMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MaxMatchCounterSize){<br />
Nation.ThirdMatch.SecondValue = scan.get_integer();<br />
}<br />
}</p>
<p>// schreibe Nation auf entsprechenden PrivateMember<br />
if(MatchCounter == MaxMatchCounterSize){<br />
Group.SetNations(Nation, MemberCounter);<br />
MatchCounter = 0;<br />
}</p>
<p>// Gruppe in Vektor einfüllen<br />
if(MemberCounter == MaxMemberCounterSize){<br />
Vect.push_back(Group);<br />
cout &lt;&lt; &quot;Gruppe in Vektor legen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Size des Vektors: &quot; &lt;&lt; Vect.size() &lt;&lt; endl;<br />
MemberCounter = 0;<br />
}<br />
}<br />
scan.next_symbol();<br />
}<br />
File.close();<br />
}</p>
<p>void Print(std::ostream &amp; ost, DataVector Vect){</p>
<p>char const chGroup = 'A';</p>
<p>ost &lt;&lt; endl;</p>
<p>for(size_t counter = 0; counter &lt; Vect.size(); ++counter){</p>
<p>char letter = (char) chGroup + counter; // cooler Trick <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>ost &lt;&lt; &quot;Gruppe &quot; &lt;&lt; letter &lt;&lt; endl &lt;&lt; &quot;--------&quot; &lt;&lt; endl;</p>
<p>// was hier noch fehlt: Sortiere jeweils die Objekte nach Rang -----&gt; Funtion schreiben!!</p>
<p>// Alle Mannschaften auf Outstream schreiben laut Angabe<br />
for (int cnt = MinMemberCounterSize; cnt &lt;= MaxMemberCounterSize; ++cnt){<br />
OneNation Nat = Vect[counter].GetNations(cnt);<br />
ost &lt;&lt; setfill(' ') &lt;&lt; right &lt;&lt; setw(0) &lt;&lt; cnt;<br />
ost &lt;&lt; setw(15) &lt;&lt; left &lt;&lt; Nat.Nation;<br />
ost &lt;&lt; setw(4) &lt;&lt; right &lt;&lt; NumberOfMatchesTotal;<br />
ost &lt;&lt; setw(4) &lt;&lt; NumberOfGoals(Nat);<br />
ost &lt;&lt; setw(4) &lt;&lt; DifferenceOfGoals(Nat);<br />
ost &lt;&lt; setw(4) &lt;&lt; SumUpPoints(Nat) &lt;&lt; endl;<br />
}<br />
ost &lt;&lt; endl;<br />
}<br />
ost &lt;&lt; endl;<br />
}</p>
<p>--------------------------------------------------------------------------ENDE</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303374/fussball_em-daten-in-vektor-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 11:57:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303374.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 May 2012 09:27:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 09:27:36 GMT]]></title><description><![CDATA[<p>Hallo Leute!</p>
<p>Ich hoffe ihr könnt mir hier helfen, denn ich kann den Fehler in meiner Arbeit einfach nicht finden...habe schon 3 mal Schreibtischtest gemacht, kann aber den Fehler einfach nicht sehen....er muss irgendwo beim Einlesen der Daten in den Vektor passieren, denke ich...Ich weiß es ist viel zu lesen, aber ich komme hier echt nicht weiter -,-</p>
<p>Ich hoffe jemand von euch kann mir helfen, bin hier schon am verzweifeln...<br />
Folgende Aufgabenstellung gilt es zu lösen:</p>
<p>-------------------------------------------------------------------<br />
Schreiben Sie mit Hilfe des Scanners ein C++ Programm,<br />
das die Ergebnisse der EM-Vorrundenspiele einliest, in einer entsprechenden Datenstruktur speichert und anschließend ausgibt.<br />
Eingabebeispiel:</p>
<p>( &quot;Polen&quot;: 2:1, 3:2, 1:1<br />
&quot;Griechenland&quot;: 1:2, 0:1, 2:0<br />
&quot;Russland&quot;: 0:0, 2:3, 0:2<br />
&quot;Tschechien&quot;: 0:0, 1:0, 1:1<br />
)<br />
( &quot;Niederlande&quot;: 1:1, 3:1, 3:0<br />
&quot;Dänemark&quot;: 1:1, 3:1, 1:0<br />
&quot;Deutschland&quot;: 2:2, 1:3, 0:1<br />
&quot;Portugal&quot;: 2:2, 1:3, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f607.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_halo"
      title="0:3"
      alt="😇"
    /><br />
)</p>
<p>Pro Mannschaft werden folgende Informationen ausgegeben: Platzierung, Name der Mannschaft, Anzahl der Spiele, Anzahl der geschossenen Tore, Tordifferenz, Punkte. Die Ausgabe soll also in folgender Form dargestellt werden:</p>
<p>Gruppe A<br />
--------<br />
1 Polen 3 6 2 7<br />
2 Tschechien 3 2 1 5<br />
3 Griechenland 3 3 0 3<br />
4 Russland 3 2 -3 1</p>
<p>Gruppe B<br />
--------<br />
1 Niederlande 3 7 5 7<br />
2 Dänemark 3 5 3 7<br />
3 Deutschland 3 3 -3 1<br />
4 Portugal 3 3 -5 1</p>
<p>------------------------------------------------------ENDE DER ANGABE</p>
<p>wie ich hier Tordifferenz ermittle etc ist erstmal unwichtig, das stimmt sicher ist ja ned schwer! Ich haeb aber ein Problem mit dem Einlesen in den Vektor allgemein!<br />
Aktuell sieht meine Ausgabe noch etwa so aus ( die Funktion, welche die mannschaften nach Rängen sortiert fehlt hier noch, deshalb ist hier die Reihenfolge der Mannschaften noch anders als oben beschrieben):</p>
<p>Gruppe A<br />
--------<br />
1Polen 3 6 2 7<br />
2Griechenland 3 3 0 3<br />
3Russland 3 2 -3 1<br />
4 31717986916 0 3</p>
<p>Gruppe B<br />
--------<br />
1Niederlande 3 7 5 7<br />
2Dõnemark 3 5 3 7<br />
3Deutschland 3 3 -3 1<br />
4 31717986916 0 3</p>
<p>WICHTIG!:<br />
Wie man sehen kann wird bei mir jeweils die letze Nation nicht eingelesen...<br />
oder liegts an der Ausgabe?<br />
Ich poste euch jetzt einmal die verantwortlichen Funktionen meiner Lösung:</p>
<p>-----------------------------------------------------------------<br />
Grundsätzlicher Aufbau meiner Daten:<br />
Header:</p>
<p>struct PairOfValues{<br />
int FirstValue;<br />
int SecondValue;<br />
};</p>
<p>struct OneNation{<br />
std::string Nation;<br />
PairOfValues FirstMatch;<br />
PairOfValues SecondMatch;<br />
PairOfValues ThirdMatch;<br />
};</p>
<p>class OneGroup {</p>
<p>public:<br />
// Default - CTOR<br />
OneGroup();</p>
<p>//DTOR<br />
~OneGroup();</p>
<p>void SetNations(OneNation const Nation, int NationCounter);<br />
OneNation GetNations(int NationCounter);</p>
<p>private:<br />
OneNation mNation1;<br />
OneNation mNation2;<br />
OneNation mNation3;<br />
OneNation mNation4;<br />
};</p>
<p>// Vektor enthält alle Gruppenobjekte, also alle Informationen aus dem Eingabestrom<br />
typedef std::vector &lt;OneGroup&gt; DataVector;</p>
<p>// ------------------Funktionen---------------------</p>
<p>// GetData<br />
void GetData(std::string Datapath, DataVector &amp; Vect);</p>
<p>// Print<br />
void Print(std::ostream &amp; ost, DataVector Vect);</p>
<p>// ------------------Konstanten---------------------</p>
<p>int const NumberOfMatchesTotal = 3;</p>
<p>int const MinMemberCounterSize = 1;<br />
int const MaxMemberCounterSize = 4;</p>
<p>int const MinMatchCounterSize = 1;<br />
int const MatchCounterSize2 = 2;<br />
int const MatchCounterSize3 = 3;<br />
int const MatchCounterSize4 = 4;<br />
int const MatchCounterSize5 = 5;<br />
int const MaxMatchCounterSize = 6;</p>
<p>--------------------------------------------------------------------HEADER ENDE</p>
<p>HIER LIEGT IRGENDWO DER FEHLER BEGRABEN:<br />
--------------------------------------------------------------------<br />
Print-Funktion und ReadData<br />
--------------------------------------------------------------------</p>
<p>void GetData(std::string Datapath, DataVector &amp; Vect)<br />
{<br />
ifstream File(Datapath);</p>
<p>if (!File) {<br />
throw std::string(&quot;File does not exist at all!&quot;);<br />
}<br />
scanner scan(File);</p>
<p>OneGroup Group; // Gruppe erstellen<br />
OneNation Nation; // Nation erstellen</p>
<p>int MemberCounter = 0;<br />
int MatchCounter = 0;</p>
<p>while (!scan.eof ())<br />
{<br />
if(scan.symbol_is_string() || scan.symbol_is_integer()){</p>
<p>if(scan.symbol_is_string()){ // String in nation aufnehmen<br />
Nation.Nation = scan.get_string();<br />
++MemberCounter;<br />
//scan.next_symbol();<br />
}</p>
<p>// Struktur füllen<br />
if(scan.symbol_is_integer()) // NO MAGIC NUMBERS! <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="😃"
    /><br />
{<br />
++MatchCounter;</p>
<p>if(MatchCounter == MinMatchCounterSize){<br />
Nation.FirstMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize2){<br />
Nation.FirstMatch.SecondValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize3){<br />
Nation.SecondMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize4){<br />
Nation.SecondMatch.SecondValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MatchCounterSize5){<br />
Nation.ThirdMatch.FirstValue = scan.get_integer();<br />
}<br />
else if(MatchCounter == MaxMatchCounterSize){<br />
Nation.ThirdMatch.SecondValue = scan.get_integer();<br />
}<br />
}</p>
<p>// schreibe Nation auf entsprechenden PrivateMember<br />
if(MatchCounter == MaxMatchCounterSize){<br />
Group.SetNations(Nation, MemberCounter);<br />
MatchCounter = 0;<br />
}</p>
<p>// Gruppe in Vektor einfüllen<br />
if(MemberCounter == MaxMemberCounterSize){<br />
Vect.push_back(Group);<br />
cout &lt;&lt; &quot;Gruppe in Vektor legen&quot; &lt;&lt; endl;<br />
cout &lt;&lt; &quot;Size des Vektors: &quot; &lt;&lt; Vect.size() &lt;&lt; endl;<br />
MemberCounter = 0;<br />
}<br />
}<br />
scan.next_symbol();<br />
}<br />
File.close();<br />
}</p>
<p>void Print(std::ostream &amp; ost, DataVector Vect){</p>
<p>char const chGroup = 'A';</p>
<p>ost &lt;&lt; endl;</p>
<p>for(size_t counter = 0; counter &lt; Vect.size(); ++counter){</p>
<p>char letter = (char) chGroup + counter; // cooler Trick <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>ost &lt;&lt; &quot;Gruppe &quot; &lt;&lt; letter &lt;&lt; endl &lt;&lt; &quot;--------&quot; &lt;&lt; endl;</p>
<p>// was hier noch fehlt: Sortiere jeweils die Objekte nach Rang -----&gt; Funtion schreiben!!</p>
<p>// Alle Mannschaften auf Outstream schreiben laut Angabe<br />
for (int cnt = MinMemberCounterSize; cnt &lt;= MaxMemberCounterSize; ++cnt){<br />
OneNation Nat = Vect[counter].GetNations(cnt);<br />
ost &lt;&lt; setfill(' ') &lt;&lt; right &lt;&lt; setw(0) &lt;&lt; cnt;<br />
ost &lt;&lt; setw(15) &lt;&lt; left &lt;&lt; Nat.Nation;<br />
ost &lt;&lt; setw(4) &lt;&lt; right &lt;&lt; NumberOfMatchesTotal;<br />
ost &lt;&lt; setw(4) &lt;&lt; NumberOfGoals(Nat);<br />
ost &lt;&lt; setw(4) &lt;&lt; DifferenceOfGoals(Nat);<br />
ost &lt;&lt; setw(4) &lt;&lt; SumUpPoints(Nat) &lt;&lt; endl;<br />
}<br />
ost &lt;&lt; endl;<br />
}<br />
ost &lt;&lt; endl;<br />
}</p>
<p>--------------------------------------------------------------------------ENDE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210760</guid><dc:creator><![CDATA[Mattam]]></dc:creator><pubDate>Sat, 12 May 2012 09:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 09:42:45 GMT]]></title><description><![CDATA[<p>Lies bitte ganz ganz dringend mal den ersten Link in meiner Signatur und stell deine Frage noch mal so, dass man auch etwas damit anfangen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210761</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 12 May 2012 09:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 09:47:13 GMT]]></title><description><![CDATA[<p>Bitte benutze die cpp-Code-Tags.</p>
<p>Dann lese ich´s durch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210762</guid><dc:creator><![CDATA[cfdghdsgsegs]]></dc:creator><pubDate>Sat, 12 May 2012 09:47:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 09:58:04 GMT]]></title><description><![CDATA[<p>Sry hier noch einmal der ganze Post mit Tags und Form</p>
<p>-------------------------------------</p>
<p>Hallo Leute!</p>
<p>Ich hoffe ihr könnt mir hier helfen, denn ich kann den Fehler in meiner Arbeit einfach nicht finden...habe schon 3 mal Schreibtischtest gemacht, kann aber den Fehler einfach nicht sehen....er muss irgendwo beim Einlesen der Daten in den Vektor passieren, denke ich...Ich weiß es ist viel zu lesen, aber ich komme hier echt nicht weiter -,-</p>
<p>Ich hoffe jemand von euch kann mir helfen, bin hier schon am verzweifeln...<br />
Folgende Aufgabenstellung gilt es zu lösen:</p>
<p>-------------------------------------------------------------------ANGABE<br />
Schreiben Sie mit Hilfe des Scanners ein C++ Programm,<br />
das die Ergebnisse der EM-Vorrundenspiele einliest, in einer entsprechenden Datenstruktur speichert und anschließend ausgibt.<br />
Eingabebeispiel:</p>
<p>( &quot;Polen&quot;: 2:1, 3:2, 1:1<br />
&quot;Griechenland&quot;: 1:2, 0:1, 2:0<br />
&quot;Russland&quot;: 0:0, 2:3, 0:2<br />
&quot;Tschechien&quot;: 0:0, 1:0, 1:1<br />
)<br />
( &quot;Niederlande&quot;: 1:1, 3:1, 3:0<br />
&quot;Dänemark&quot;: 1:1, 3:1, 1:0<br />
&quot;Deutschland&quot;: 2:2, 1:3, 0:1<br />
&quot;Portugal&quot;: 2:2, 1:3, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f607.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_halo"
      title="0:3"
      alt="😇"
    /><br />
)</p>
<p>Pro Mannschaft werden folgende Informationen ausgegeben: Platzierung, Name der Mannschaft, Anzahl der Spiele, Anzahl der geschossenen Tore, Tordifferenz, Punkte. Die Ausgabe soll also in folgender Form dargestellt werden:</p>
<p>Gruppe A<br />
--------<br />
1 Polen 3 6 2 7<br />
2 Tschechien 3 2 1 5<br />
3 Griechenland 3 3 0 3<br />
4 Russland 3 2 -3 1</p>
<p>Gruppe B<br />
--------<br />
1 Niederlande 3 7 5 7<br />
2 Dänemark 3 5 3 7<br />
3 Deutschland 3 3 -3 1<br />
4 Portugal 3 3 -5 1</p>
<p>------------------------------------------------------ENDE DER ANGABE</p>
<p>wie ich hier Tordifferenz ermittle etc ist erstmal unwichtig, das stimmt sicher ist ja ned schwer! Ich haeb aber ein Problem mit dem Einlesen in den Vektor allgemein!<br />
Aktuell sieht meine Ausgabe noch etwa so aus ( die Funktion, welche die mannschaften nach Rängen sortiert fehlt hier noch, deshalb ist hier die Reihenfolge der Mannschaften noch anders als oben beschrieben):</p>
<p>Gruppe A<br />
--------<br />
1Polen 3 6 2 7<br />
2Griechenland 3 3 0 3<br />
3Russland 3 2 -3 1<br />
4 31717986916 0 3</p>
<p>Gruppe B<br />
--------<br />
1Niederlande 3 7 5 7<br />
2Dõnemark 3 5 3 7<br />
3Deutschland 3 3 -3 1<br />
4 31717986916 0 3</p>
<p>WICHTIG!:<br />
Wie man sehen kann wird bei mir jeweils die letze Nation nicht eingelesen...<br />
oder liegts an der Ausgabe?<br />
Ich poste euch jetzt einmal die verantwortlichen Funktionen meiner Lösung:</p>
<p>-----------------------------------------------------------------<br />
Grundsätzlicher Aufbau meiner Daten:</p>
<p><strong>Header:</strong></p>
<pre><code class="language-cpp">struct PairOfValues{
int FirstValue;
int SecondValue;
};

struct OneNation{
std::string Nation;
PairOfValues FirstMatch;
PairOfValues SecondMatch;
PairOfValues ThirdMatch;
};

class OneGroup {

public:
// Default - CTOR
OneGroup();

//DTOR
~OneGroup();

void SetNations(OneNation const Nation, int NationCounter);
OneNation GetNations(int NationCounter);

private:
OneNation mNation1;
OneNation mNation2;
OneNation mNation3;
OneNation mNation4;
};

// Vektor enthält alle Gruppenobjekte, also alle Informationen aus dem Eingabestrom
typedef std::vector &lt;OneGroup&gt; DataVector;

// ------------------Funktionen---------------------

// GetData
void GetData(std::string Datapath, DataVector &amp; Vect);

// Print
void Print(std::ostream &amp; ost, DataVector Vect);

// ------------------Konstanten---------------------

int const NumberOfMatchesTotal = 3;

int const MinMemberCounterSize = 1;
int const MaxMemberCounterSize = 4;

int const MinMatchCounterSize = 1;
int const MatchCounterSize2 = 2;
int const MatchCounterSize3 = 3;
int const MatchCounterSize4 = 4;
int const MatchCounterSize5 = 5;
int const MaxMatchCounterSize = 6;
</code></pre>
<p>--------------------------------------------------------------------HEADER ENDE</p>
<p><strong>HIER LIEGT IRGENDWO DER FEHLER BEGRABEN:</strong></p>
<pre><code class="language-cpp">--------------------------------------------------------------------
Print-Funktion und ReadData
--------------------------------------------------------------------

void GetData(std::string Datapath, DataVector &amp; Vect)
{
ifstream File(Datapath);

if (!File) {
throw std::string(&quot;File does not exist at all!&quot;);
}
scanner scan(File);

OneGroup Group; // Gruppe erstellen
OneNation Nation; // Nation erstellen

int MemberCounter = 0;
int MatchCounter = 0;

while (!scan.eof ())
{
if(scan.symbol_is_string() || scan.symbol_is_integer()){

if(scan.symbol_is_string()){ // String in nation aufnehmen
Nation.Nation = scan.get_string();
++MemberCounter;
//scan.next_symbol();
}

// Struktur füllen
if(scan.symbol_is_integer()) // NO MAGIC NUMBERS! =D
{
++MatchCounter;

if(MatchCounter == MinMatchCounterSize){
Nation.FirstMatch.FirstValue = scan.get_integer();
}
else if(MatchCounter == MatchCounterSize2){
Nation.FirstMatch.SecondValue = scan.get_integer();
}
else if(MatchCounter == MatchCounterSize3){
Nation.SecondMatch.FirstValue = scan.get_integer();
}
else if(MatchCounter == MatchCounterSize4){
Nation.SecondMatch.SecondValue = scan.get_integer();
}
else if(MatchCounter == MatchCounterSize5){
Nation.ThirdMatch.FirstValue = scan.get_integer();
}
else if(MatchCounter == MaxMatchCounterSize){
Nation.ThirdMatch.SecondValue = scan.get_integer();
}
}

// schreibe Nation auf entsprechenden PrivateMember
if(MatchCounter == MaxMatchCounterSize){
Group.SetNations(Nation, MemberCounter);
MatchCounter = 0;
}

// Gruppe in Vektor einfüllen
if(MemberCounter == MaxMemberCounterSize){
Vect.push_back(Group);
cout &lt;&lt; &quot;Gruppe in Vektor legen&quot; &lt;&lt; endl;
cout &lt;&lt; &quot;Size des Vektors: &quot; &lt;&lt; Vect.size() &lt;&lt; endl;
MemberCounter = 0;
}
}
scan.next_symbol();
}
File.close();
}

// Print erhält einen befüllten Vektor und schreibt auf einen Outstream
void Print(std::ostream &amp; ost, DataVector Vect){

char const chGroup = 'A';

ost &lt;&lt; endl;

for(size_t counter = 0; counter &lt; Vect.size(); ++counter){

char letter = (char) chGroup + counter; // cooler Trick ;)

ost &lt;&lt; &quot;Gruppe &quot; &lt;&lt; letter &lt;&lt; endl &lt;&lt; &quot;--------&quot; &lt;&lt; endl;

// was hier noch fehlt: Sortiere jeweils die Objekte nach Rang -----&gt; Funtion schreiben!!

// Alle Mannschaften auf Outstream schreiben laut Angabe
for (int cnt = MinMemberCounterSize; cnt &lt;= MaxMemberCounterSize; ++cnt){
OneNation Nat = Vect[counter].GetNations(cnt);
ost &lt;&lt; setfill(' ') &lt;&lt; right &lt;&lt; setw(0) &lt;&lt; cnt;
ost &lt;&lt; setw(15) &lt;&lt; left &lt;&lt; Nat.Nation;
ost &lt;&lt; setw(4) &lt;&lt; right &lt;&lt; NumberOfMatchesTotal;
ost &lt;&lt; setw(4) &lt;&lt; NumberOfGoals(Nat);
ost &lt;&lt; setw(4) &lt;&lt; DifferenceOfGoals(Nat);
ost &lt;&lt; setw(4) &lt;&lt; SumUpPoints(Nat) &lt;&lt; endl;
}
ost &lt;&lt; endl;
}
ost &lt;&lt; endl;
}
</code></pre>
<p>--------------------------------------------------------------------------ENDE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210766</guid><dc:creator><![CDATA[Mattam]]></dc:creator><pubDate>Sat, 12 May 2012 09:58:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 10:30:57 GMT]]></title><description><![CDATA[<p>Ach ja eventuell auch noch interessant sind die klasseninternen Funktionen SetNations und GetNations....</p>
<p>sehen folgendermaßen aus:</p>
<pre><code class="language-cpp">// NationCounter gibt an auf welchen Private-Member geschrieben wird
void OneGroup::SetNations(OneNation const Nation, int NationCounter){
	if (NationCounter == 1){
		this -&gt; mNation1 = Nation;
	}
	else if (NationCounter == 2){
		this -&gt; mNation2 = Nation;
	}
	else if (NationCounter == 3){
		this -&gt; mNation3 = Nation;
	}
	else if (NationCounter == 4){
		this -&gt; mNation4 = Nation;
	}
	else {
		cout &lt;&lt; &quot;Fehler bei der Funktion: SetNations) kein passendes Unterobjekt gefunden&quot; &lt;&lt; endl;
	}
}

// NationCounter gibt an, welcher Private-Member returniert werden soll
OneNation OneGroup::GetNations(int NationCounter){
	if (NationCounter == 1){
		return this -&gt; mNation1;
	}
	else if (NationCounter == 2){
		return this -&gt; mNation2;
	}
	else if (NationCounter == 3){
		return this -&gt; mNation3;
	}
	else if (NationCounter == 4){
		return this -&gt; mNation4;
	}
	else {	
		cout &lt;&lt; &quot;Fehler bei der Funktion: GetNations) kein passendes Unterobjekt gefunden&quot; &lt;&lt; endl;
		return mNation1;		// um etwas zu returnen
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2210776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210776</guid><dc:creator><![CDATA[Mattam]]></dc:creator><pubDate>Sat, 12 May 2012 10:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 11:53:33 GMT]]></title><description><![CDATA[<p>Die klasse kenne ich nicht.</p>
<pre><code class="language-cpp">scanner scan(file)
</code></pre>
<p>sieht selbstgeschrieben aus und wäre interessant den code davon zu sehen. Wenn es eine klasse aus der Standardbib ist dann wüsste ich gern was ich dafür includen muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210811</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Sat, 12 May 2012 11:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 14:45:52 GMT]]></title><description><![CDATA[<p>Der Scanner ist tatsächlich selbstgeschrieben, allerdings nicht von mir, sondern von einem unserer vortragenden Dozenten.</p>
<p>Dort liegt der Fehler aber ohnehin nicht, denn ich habe mit dem Scanner schon oft gearbeitet bislang ohne Probleme!</p>
<p>Es sind eingie Files und ein header-Include notwendig um ihn verwenden zu können.</p>
<p>Die von mir in diesem Beispiel verwendeten Funktionen des Scanners sind:</p>
<p>scan.next_symbol():<br />
liest das nächste Symbol ein (leerzeichen werden überlesen)</p>
<p>scan.symbol_is_integer():<br />
Prüft, ob aktuell betrachtetes Symbol ein Integer ist</p>
<p>scan.symbol_is_string():<br />
prüft, ob string</p>
<p>scan.eof():<br />
prüft ob das Ende des Inputs erreicht ist</p>
<p>------------------------------------<br />
einzulesende Backus-Naur-Form (lautet vom Aufbau IMMER gleich)</p>
<p>(<br />
&quot;Polen&quot; : 2 : 1 , 3 : 2 , 1 : 1<br />
&quot;Griechenland&quot; : 1 : 2 , 0 : 1 , 2 : 0<br />
&quot;Russland&quot; : 0 : 0 , 2 : 3 , 0 : 2<br />
&quot;Tschechien&quot; : 0 : 0 , 1 : 0 , 1 : 1<br />
)</p>
<p>(<br />
&quot;Niederlande&quot; : 1 : 1 , 3 : 1 , 3 : 0<br />
&quot;Dänemark&quot; : 1 : 1 , 3 : 1 , 1 : 0<br />
&quot;Deutschland&quot; : 2 : 2 , 1 : 3 , 0 : 1<br />
&quot;Portugal&quot; : 2 : 2 , 1 : 3, 0 : 3<br />
)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210853</guid><dc:creator><![CDATA[Mattam]]></dc:creator><pubDate>Sat, 12 May 2012 14:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 14:48:05 GMT]]></title><description><![CDATA[<p>Es handelt sich glaube ich eher um einen Logikfehler beim Einlesen in den Vektor oder bei der Ausgabe, da IMMER lediglich das letze Element(Mannschaft) einer Gruppe nicht eingetragen wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210854</guid><dc:creator><![CDATA[Mattam]]></dc:creator><pubDate>Sat, 12 May 2012 14:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 14:53:36 GMT]]></title><description><![CDATA[<p>Dann geh doch mal mit einem Debugger durch das Programm. Dann kannst du sehen, ob der Fehler beim Ausgeben oder beim Einlesen liegt, da du direkt in die Datentstrukturen gucken kannst. Wenn du dann weißt, wo das Problem liegt, kannst du an der fraglichen Stelle genauer den Programmverlauf ansehen und nachvollziehen wann und warum das Programm vom von dir erwarteten Ablauf abweicht.</p>
<p>Für uns hingegen ist dein Problem praktisch nicht nachvollziehbar. Du zeigst viel zu viel Code, der vermutlich größtenteils irrelevant ist, trotzdem sind uns die entscheidenden Klassen nicht bekannt und compilieren und selber ausprobieren ist auch nicht drin. Da können wir nur Hilfe zur Selbsthilfe geben, siehe erster Absatz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210855</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 12 May 2012 14:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fussball_Em-Daten in Vektor schreiben on Sat, 12 May 2012 14:56:16 GMT]]></title><description><![CDATA[<p>Ich denke auch nicht das die scanner-klasse das problem ist, jedoch würde ich es gerne Compilieren und dann mit dem debugger durchgehen, so findet der Fehler sich schnell.</p>
<p>SeppJ war schneller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2210857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2210857</guid><dc:creator><![CDATA[Dudeldu]]></dc:creator><pubDate>Sat, 12 May 2012 14:56:16 GMT</pubDate></item></channel></rss>