<?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[Schwierige Aufgabe :(?]]></title><description><![CDATA[<p>Hallo Leute, ich bin zum ersten mal hier im Forum,<br />
obwohl ich öfters hier war und als stiller Leser herumgeisterte <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="😋"
    /> ).<br />
Ich habe folgendes Problem dem ich nicht gewachsen bin.<br />
Also ich habe eine Liste mit Zahlenreihen erstellt (etwa 1 Million davon als .txt gespeichert..kann man aber aendern <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="😋"
    /> ).Jede davon besteht<br />
aus 10 Zahlen(Jede der Zahlen liegt im Bereich 1-100 und werden durch Kommas getrennt) ...nennen wir diese Liste z.B Liste A ...dann habe ich noch eine zweite Liste(Liste <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> sie besteht aus 20 Zahlenrheien (Je 9+1 Zahlen von 1-100 wieder durch Kommas getrennt)die man beliebig verändern kann.<br />
Nun soll man jede Zahl aus Liste B veraendern können(von mir aus mit Texteditor <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="😋"
    />)<br />
Das Programm Soll nun die Zusatzzahl(die letzte Zahl in Jeder Reihe der Liste B nehmen) Es kann sich dabei nur um 1,2 oder 3 handeln ,handelt es sich dabei z.B um eine 3 Soll Jede Zahlenreihe aus Liste A gelöscht werden bei der 3 oder Mehr Zahlen mit der Zahlenrheie aus Liste B ist identisch sind.Ist die Zahl eine &quot;2&quot; sollen alle Reihen aus Liste A verschwinden die 2 gleiche Zahlen haben wie die Reihe aus Liste B<br />
die Rheinen aus Liste B sollen nun so nacheinander gelesen werden und die Liste A sollte immer kleiner werden.<br />
hmm...ich hoffe es hat Jemand verstanden was ich meine wenn nicht: fragt mich ruhig .Ich habe ein Programm entwickelt das diese Reihen schreibt aber ich habe keinen Plan was ich machen soll damit es die Liste nach dem oben genannten Verfahren aussortiert...(ich mach mir keine Sorgen um meine rechenleistung)<br />
Sonstiges:<br />
Ich programmiere seit kurzem mit VC++<br />
Ich bedanke mich schon dafür das ihr soweit gelesen habt <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="😉"
    /><br />
hier noch ein Bild <a href="http://www.dftx.de/sys11.bmp" rel="nofollow">www.dftx.de/sys11.bmp</a> damit ihr es besser euch vorstellen könnt...Hat jemand eine Idee wie man es realisieren könnte ?<br />
Danke für Tipps, Lösungen oder Lösungsvorschläge im Vor-raus.<br />
Und danach natürlich auch :D.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170118/schwierige-aufgabe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 14:10:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170118.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Jan 2007 22:27:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Thu, 11 Jan 2007 22:27:53 GMT]]></title><description><![CDATA[<p>Hallo Leute, ich bin zum ersten mal hier im Forum,<br />
obwohl ich öfters hier war und als stiller Leser herumgeisterte <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="😋"
    /> ).<br />
Ich habe folgendes Problem dem ich nicht gewachsen bin.<br />
Also ich habe eine Liste mit Zahlenreihen erstellt (etwa 1 Million davon als .txt gespeichert..kann man aber aendern <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="😋"
    /> ).Jede davon besteht<br />
aus 10 Zahlen(Jede der Zahlen liegt im Bereich 1-100 und werden durch Kommas getrennt) ...nennen wir diese Liste z.B Liste A ...dann habe ich noch eine zweite Liste(Liste <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> sie besteht aus 20 Zahlenrheien (Je 9+1 Zahlen von 1-100 wieder durch Kommas getrennt)die man beliebig verändern kann.<br />
Nun soll man jede Zahl aus Liste B veraendern können(von mir aus mit Texteditor <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="😋"
    />)<br />
Das Programm Soll nun die Zusatzzahl(die letzte Zahl in Jeder Reihe der Liste B nehmen) Es kann sich dabei nur um 1,2 oder 3 handeln ,handelt es sich dabei z.B um eine 3 Soll Jede Zahlenreihe aus Liste A gelöscht werden bei der 3 oder Mehr Zahlen mit der Zahlenrheie aus Liste B ist identisch sind.Ist die Zahl eine &quot;2&quot; sollen alle Reihen aus Liste A verschwinden die 2 gleiche Zahlen haben wie die Reihe aus Liste B<br />
die Rheinen aus Liste B sollen nun so nacheinander gelesen werden und die Liste A sollte immer kleiner werden.<br />
hmm...ich hoffe es hat Jemand verstanden was ich meine wenn nicht: fragt mich ruhig .Ich habe ein Programm entwickelt das diese Reihen schreibt aber ich habe keinen Plan was ich machen soll damit es die Liste nach dem oben genannten Verfahren aussortiert...(ich mach mir keine Sorgen um meine rechenleistung)<br />
Sonstiges:<br />
Ich programmiere seit kurzem mit VC++<br />
Ich bedanke mich schon dafür das ihr soweit gelesen habt <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="😉"
    /><br />
hier noch ein Bild <a href="http://www.dftx.de/sys11.bmp" rel="nofollow">www.dftx.de/sys11.bmp</a> damit ihr es besser euch vorstellen könnt...Hat jemand eine Idee wie man es realisieren könnte ?<br />
Danke für Tipps, Lösungen oder Lösungsvorschläge im Vor-raus.<br />
Und danach natürlich auch :D.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208343</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Thu, 11 Jan 2007 22:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Thu, 11 Jan 2007 23:09:09 GMT]]></title><description><![CDATA[<p>Hallo Misha,</p>
<p>Meinst Du sowas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;    // remove_if, find_if
#include &lt;utility&gt;      // std::pair

typedef std::vector&lt; int &gt; Reihe;
typedef std::pair&lt; std::vector&lt; int &gt;, int &gt; ReiheZ;

struct Matched
{
    explicit Matched( const Reihe&amp; ra ) : m_ra( ra ) {}
    bool operator()( const ReiheZ&amp; rb ) const
    {
        // Prüfen ob Reihe(Z) aus B mit Zusatzzahl zu 'm_ra' passt
        int cnt = 0;
        Reihe::const_iterator ia = m_ra.begin();
        for( Reihe::const_iterator ib = rb.first.begin(); ib != rb.first.end(); ++ib, ++ia )
        {
            if( *ia == *ib &amp;&amp; ++cnt &gt;= rb.second )
                return true;    // mindestens rb.second Zahlen aus m_ra sind gleich
        }
        return false;
    }
private:
    Reihe m_ra;
};

struct Entscheider
{
    explicit Entscheider( const std::vector&lt; ReiheZ &gt;&amp; b ) : m_b( &amp;b ) {}
    bool operator()( const Reihe&amp; r_aus_a ) const
    {
        // true; falls irgendeine Reihe aus B die aktuelle Reihe aus A löscht
        return find_if( m_b-&gt;begin(), m_b-&gt;end(), Matched( r_aus_a ) ) != m_b-&gt;end();
    }
private:
    const std::vector&lt; ReiheZ &gt;* m_b;
};

int main()
{
    using namespace std;
    std::vector&lt; Reihe &gt; a;
    std::vector&lt; ReiheZ &gt; b;
    // Listen a und b füllen
    a.erase( remove_if( a.begin(), a.end(), Entscheider( b ) ), a.end() );
    return 0;
}
</code></pre>
<p>Wann eine Reihe aus B zu einer aus A passt, habe ich nicht ganz verstanden. Deine Beschreibung scheint sich mit der aus dem Bild zu widersprechen? Ich habe mal angenommen wenn Ne{1,2,3} Zahlen aus beiden Reihen übereinstimmen, die auch an der selben Position stehen (s. Matched::operator()).</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208357</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 11 Jan 2007 23:09:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Fri, 12 Jan 2007 12:44:37 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort zur solch später Stunde.<br />
Nein,Die Position ist egal nur die Reihe nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208359</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Fri, 12 Jan 2007 12:44:37 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Thu, 11 Jan 2007 23:16:02 GMT]]></title><description><![CDATA[<p>Misha schrieb:</p>
<blockquote>
<p>Danke für die schnelle Antwort zur solch später Stunde.<br />
Nein,Die Position ist egal nur die Reihe nicht...</p>
</blockquote>
<p>ja, dann musst Du Matched::operator() noch anpassen. Ich geh' jetzt in's Bett!</p>
<p>Gute Nacht :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208362</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 11 Jan 2007 23:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Fri, 12 Jan 2007 12:45:10 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Misha schrieb:</p>
<blockquote>
<p>Danke für die schnelle Antwort zur solch später Stunde.<br />
Nein,Die Position ist egal nur die Reihe nicht...</p>
</blockquote>
<p>ja, dann musst Du Matched::operator() noch anpassen. Ich geh' jetzt in's Bett!</p>
<p>Gute Nacht :xmas1:</p>
</blockquote>
<p>Edit:<br />
Das heist :Wenn X oder mehr Zahlen aus Liste B Reihe 1 zur Liste A reihe 1 passen soll diese Reihe(Liste A Reihe 1) gelöscht werden, dann wird mit Liste B reihe 1 bei Liste A reihe 2 weiter gemacht, ist die Liste A durch ,so wird Liste B reihe 2 vorgenommen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208364</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Fri, 12 Jan 2007 12:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Sat, 13 Jan 2007 08:01:22 GMT]]></title><description><![CDATA[<p>...hmm eh länger ich dies angucke desto weniger verstehe ich das Pragramm, könntest du vielleicht es so kommentieren das auch ein Misha das versteht?<br />
Ich habe bisschen gegoogelt und nachgeschlagen aber mein Kopf ist zu klein für so viele neue Funktionen...hab kein plan wie ich jetzt die Listen in a und b reinbekommen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
meine textdateien sind so geschrieben worden<br />
12,15,11,83,26,83,44,18,58,54,<br />
51,64,1,35,67,21,83,77,11,56,<br />
.....(also immer 10 Zahlen von einem Komma getrennt)<br />
Ich dachte mir man könnte Irgendwie immer 10 Zahlen nehmen und den Umbruch weglassen ...<br />
habs in BASIC erstellt falls ein anderes Verfahren zur Speicherung von Zahlen für das obig genannte Beispiel sich besser eignet...höre ich zu.<br />
Danke nochmal, ihr seid echt Freaks um Mitternacht noch in Foren zu sitzen <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 />
...also meine Frage:Wie kann mann 2 Listen voller Zahlen (in .txt) die nur Durch Kommas getrennt sind in den obigen Lösungsvorschlag von Werner Solomon reinbringen,<br />
Es ist so das eine Reihe immer aus 10 Zahlen Besteht<br />
Danke im Vor-raus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1208685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1208685</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Sat, 13 Jan 2007 08:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Sun, 14 Jan 2007 19:03:58 GMT]]></title><description><![CDATA[<p>Misha schrieb:</p>
<blockquote>
<p>...hmm eh länger ich dies angucke desto weniger verstehe ich das Pragramm, könntest du vielleicht es so kommentieren das auch ein Misha das versteht?</p>
</blockquote>
<p>Da wir Misha nicht kennen, weiß auch niemand wo man mit dem Erklären anfangen soll. Es wäre extrem hilfreich, wenn Du konkrete Fragen stellst.</p>
<p>Misha schrieb:</p>
<blockquote>
<p>.. hab kein plan wie ich jetzt die Listen in a und b reinbekommen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
meine textdateien sind so geschrieben worden<br />
12,15,11,83,26,83,44,18,58,54,<br />
51,64,1,35,67,21,83,77,11,56,<br />
.....(also immer 10 Zahlen von einem Komma getrennt)</p>
</blockquote>
<p>Ok, das ist 'ne einigermaßen konkrete Frage.</p>
<p>Erstmal vorneweg eine Bemerkung. Diese Kommas machen immer nur Arbeit. Ich weiß nicht wer sich sowas ausdenkt; es wäre sehr viel einfacher die Zahlen einfach durch Leerzeichen und/oder Zeilenumbruch zu trennen.</p>
<p>Einlesen geht so</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;    // remove_if, find_if
#include &lt;utility&gt;      // std::pair

typedef std::vector&lt; int &gt; Reihe;
typedef std::pair&lt; std::vector&lt; int &gt;, int &gt; ReiheZ;

// -- folgendes Graffi ist nur für das trennende Komma
const int KOMMA_FLAG = std::ios_base::xalloc();
std::istream&amp; komma( std::istream&amp; in )
{
    if( in.iword( KOMMA_FLAG ) )
    {
        char k;
        if( in &gt;&gt; k &amp;&amp; k != ',' )
            in.setstate( std::ios_base::failbit );
    }
    else
    {
        in.iword( KOMMA_FLAG ) = 1;
    }
    return in;
}
std::istream&amp; start_reading( std::istream&amp; in )
{
    in.iword( KOMMA_FLAG ) = 0;
    return in;
}

// --   jetzt kommt das Einlesen einer Reihe mit 10 Zahlen
namespace std  // das ist beim VC-Compiler notwendig, da er den namespace lookup nicht korrekt beherrscht
{
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Reihe&amp; r_ )
{
    Reihe r( 10 );
    for( Reihe::iterator i = r.begin(); i != r.end(); ++i )
    {
        in &gt;&gt; komma &gt;&gt; *i;
    }
    if( in ) r.swap( r_ );
    return in;
}
// --   und hier das Einlesen der Reihe mit Zusatzzahl
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, ReiheZ&amp; rz )
{
    Reihe r( 10 );
    for( Reihe::iterator i = r.begin(); i != r.end(); ++i )
    {
        in &gt;&gt; komma &gt;&gt; *i;
    }
    if( in &gt;&gt; komma &gt;&gt; rz.second ) 
        r.swap( rz.first );
    return in;
}

}

int main()
{
    using namespace std;
    std::vector&lt; Reihe &gt; a;
    std::vector&lt; ReiheZ &gt; b;
    {
    ifstream datei( &quot;A.txt&quot; );
    copy( istream_iterator&lt; Reihe &gt;( datei ), istream_iterator&lt; Reihe &gt;(), back_inserter( a ) );
    }
    {
    ifstream datei( &quot;B.txt&quot; );
    copy( istream_iterator&lt; ReiheZ &gt;( datei ), istream_iterator&lt; ReiheZ &gt;(), back_inserter( b ) );
    }
    // usw.

    return 0;
}
</code></pre>
<p>Misha schrieb:</p>
<blockquote>
<p>Danke nochmal, ihr seid echt Freaks um Mitternacht noch in Foren zu sitzen <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>
</blockquote>
<p>.. sonst habe ich ja keine Zeit für sowas <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>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1209866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209866</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 14 Jan 2007 19:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Wed, 17 Jan 2007 17:38:04 GMT]]></title><description><![CDATA[<p>Danke,Danke, Danke das du mich nicht vergessen hast.(hab sogar versucht den Thread zu Pushen ^^,geht leider nicht,er ist festgewachsen)<br />
So und jetzt kommt die traurige Wahrheit:<br />
Ich hab nicht den geringsten Peil <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="😞"
    /><br />
Wenn ich deinen Code lese macht es einfach keinen *Klick* im meinem Kopf<br />
und die Suche nach den einzelnen Begriffen(was sie bringen usw.)hat mir nur noch mehr Kopfschmerzen bereitet.<br />
Ich habe deine beide Codeteile irgendwie zusammengebaut(besser gesagt : &quot;geschändet&quot; )<br />
Aber ich bin mir 100% sicher das ich das falsch gemacht hab:<br />
Ich schätze deine Bemühungen sehr, aber dein C++ ist zu hoch für meinen Kopf,<br />
(eigentlich C++ im allgemeinem,ader das wird mir erst jetzt klar)<br />
Darum meine Bitte: Könntest du mir bitte,bitte den GANZEN Code aufschreiben?<br />
Folgende Änderungen wurden an den Listen vorgenommen:<br />
Die Zahlen sind jezt durch Leerzeichen getrennt und die Reihen durch Umbrüche<br />
so etwa:<br />
1 2 3 4 5 6 7 8 9 0<br />
1 2 3 4 5 6 7 8 9 0<br />
Es sind immernoch immer 10 Zahlen pro Reihe<br />
Sorry nochmal für die Umstände aber ich bin mehr ein Plankton als ein Homo Sapiens Sapiens.<br />
Ich will jetz blos das ganze hinter mich bringen und wieder mit dem Thema anfangen wenn ich C++ einigermaßen beherrsche.</p>
<p>~absolute ultra low skilled beginner alias: Misha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211542</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Wed, 17 Jan 2007 17:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Thu, 18 Jan 2007 09:38:42 GMT]]></title><description><![CDATA[<p>Hallo Misha,</p>
<p>ich hab' im Augenblick kein Zeit. Ich werde versuchen Dir innerhalb der nächsten Woche zu antworten.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211827</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 18 Jan 2007 09:38:42 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Sat, 20 Jan 2007 18:32:35 GMT]]></title><description><![CDATA[<p>OK,danke, kein Problem, ich warte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1213341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1213341</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Sat, 20 Jan 2007 18:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Sun, 21 Jan 2007 14:06:04 GMT]]></title><description><![CDATA[<p>Misha schrieb:</p>
<blockquote>
<p>Ich hab nicht den geringsten Peil <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="😞"
    /><br />
Wenn ich deinen Code lese macht es einfach keinen *Klick* im meinem Kopf<br />
und die Suche nach den einzelnen Begriffen(was sie bringen usw.)hat mir nur noch mehr Kopfschmerzen bereitet.</p>
</blockquote>
<p>Hallo Misha,</p>
<p>ich kann mich nur wiederholen: Stelle konkrete Fragen; meinetwegen auch zu einzelnen Programmzeilen. Abgesehen davon; wenn Du nicht 'den geringsten Peil' hast, wie kommst Du dann zu so einem - keineswegs trivialen - Programmier-Problem? Du solltest Dich mindestens mit der Anwendung des Containers vector&lt;&gt; aus der STL und rudimentärem IO in C++ auskennen, um das zu lösen.</p>
<p>Misha schrieb:</p>
<blockquote>
<p>Ich habe deine beide Codeteile irgendwie zusammengebaut(besser gesagt : &quot;geschändet&quot; )<br />
Aber ich bin mir 100% sicher das ich das falsch gemacht hab:</p>
</blockquote>
<p>Funktioniert es denn? Falls nicht, wo liegt das Problem? Auch hier würden Dich konkrete Angaben von Deiner Seite weiterbringen. In welcher Programmier-Umgebung arbeitest Du?</p>
<p>Misha schrieb:</p>
<blockquote>
<p>Darum meine Bitte: Könntest du mir bitte,bitte den GANZEN Code aufschreiben?</p>
</blockquote>
<p>Kommt hier:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;    // remove_if, copy, find_if
#include &lt;iterator&gt;     // std::o/istream_iterator&lt;&gt;

class Reihe // dass ist eine Reihe mit 10 Zahlen
{
public:
    static const int ANZ = 10; // falls das nicht compiliert nehme: enum { ANZ = 10 };

    typedef const int* const_iterator;
    const_iterator begin() const { return m_zahlen; }
    const_iterator end() const { return m_zahlen + ANZ; }

    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Reihe&amp; r )
    {
        // lese ANZ Zahlen nach r.m_zahlen[]
        for( int i = 0; i &lt; ANZ; ++i )
            in &gt;&gt; r.m_zahlen[i];
        return in;
    }
    friend std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const Reihe&amp; r )
    {
        // Ausgabe aller Zahlen der Reihe nach 'out' mit &quot; &quot; getrennt
        std::copy( r.begin(), r.end(), std::ostream_iterator&lt; int &gt;( out, &quot; &quot; ) );
        return out;
    }
private:
    int m_zahlen[ANZ];
};

class ReiheZ // das ist eine Reihe mit Zusatzzahl
{
public:
    typedef Reihe::const_iterator const_iterator;
    const_iterator begin() const { return m_reihe.begin(); }
    const_iterator end() const { return m_reihe.end(); }
    int N() const { return m_n; }

    friend std::istream&amp; operator&gt;&gt;( std::istream&amp; in, ReiheZ&amp; rz )
    {
        // Einlesen einer Reihe 'rz.m_reihe' und Zusatzzahl 'rz.m_n'
        return in &gt;&gt; rz.m_reihe &gt;&gt; rz.m_n;
    }

private:
    Reihe m_reihe;
    int m_n; // Mindestanzahl der Zahlen, die in der zu prüfenden Reihe vorkommen müssen, um sie zu löschen
};

struct Matched
{
    explicit Matched( const Reihe&amp; ra ) : m_ra( ra ) {}
    bool operator()( const ReiheZ&amp; rb ) const
    {
        // Hier findet jetzt die Überprüfung statt, ob die Reihe, deren Kopie sich
        //  in 'm_ra' befindet, gelöscht werden soll.
        //  Das ist genau dann der Fall, wenn mindestens 'rb.N()' Zahlen aus 'm_ra'
        //  auch in 'rb' vorkommen.
        //  In diesem Fall wird 'true' zurückgeliefert.
        int cnt = 0;
        for( Reihe::const_iterator ia = m_ra.begin(); ia != m_ra.end(); ++ia ) // alle Zahlen in m_ra
        {
            // kommt die Zahl '*ia' aus 'm_ra' in 'rb' vor?
            if( std::find( rb.begin(), rb.end(), *ia ) != rb.end() )
            {
                // .. ja, die Zahl '*ia' wurde in 'rb' gefunden
                if( ++cnt &gt;= rb.N() )
                {
                    // es wurden 'rb.N()' Zahlen aus 'm_ra' in 'rb' gefunden
                    return true;
                }
            }
        }
        return false;
    }
private:
    Reihe m_ra;
};

struct Entscheider
{
    explicit Entscheider( const std::vector&lt; ReiheZ &gt;&amp; b ) : m_b( &amp;b ) {}
    bool operator()( const Reihe&amp; r_aus_a ) const
    {
        // true; falls irgendeine Reihe aus B die aktuelle Reihe 'r_aus_a' aus A löscht
        return std::find_if( m_b-&gt;begin(), m_b-&gt;end(), Matched( r_aus_a ) ) != m_b-&gt;end();
    }
private:
    const std::vector&lt; ReiheZ &gt;* m_b;
};

int main()
{
    using namespace std;
    const char* aName = &quot;A.txt&quot;;
    const char* bName = &quot;B.txt&quot;;
    const char* ergName = &quot;Aneu.txt&quot;;

    std::vector&lt; Reihe &gt; a;     // alle Reihen
    std::vector&lt; ReiheZ &gt; b;    // alle Reihen mit Zusatzzahl
    {
        ifstream datei( aName );
        // Reihen einlesen und in Container 'a' speichern
        copy( istream_iterator&lt; Reihe &gt;( datei ), istream_iterator&lt; Reihe &gt;(), back_inserter( a ) );
        cout &lt;&lt; a.size() &lt;&lt; &quot; Reihen aus '&quot; &lt;&lt; aName &lt;&lt; &quot;' gelesen &quot; &lt;&lt; endl;
    }
    {
        ifstream datei( bName );
        // Reihen mit Zusatzzahl einlesen und in Container 'b' speichern
        copy( istream_iterator&lt; ReiheZ &gt;( datei ), istream_iterator&lt; ReiheZ &gt;(), back_inserter( b ) );
        cout &lt;&lt; b.size() &lt;&lt; &quot; Reihen mit Zusatzzahl aus '&quot; &lt;&lt; bName &lt;&lt; &quot;' gelesen &quot; &lt;&lt; endl;
    }
    // alle Reihen aus 'a' entfernen, die dem Kriterium entsprechen
    a.erase( remove_if( a.begin(), a.end(), Entscheider( b ) ), a.end() );

    ofstream erg( ergName );
    // Ergebnis nach 'erg' schreiben; nach jeder Reihe ein 'newline' &quot;\n&quot;
    copy( a.begin(), a.end(), ostream_iterator&lt; Reihe &gt;( erg, &quot;\n&quot; ) );
    cout &lt;&lt; a.size() &lt;&lt; &quot; Reihen nach '&quot; &lt;&lt; ergName &lt;&lt; &quot;' geschrieben &quot; &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Wobei noch zu erwähnen ist, dass ich den Algorithmus dahingehend geändert habe, dass ich nur einmal über alle Reihen aus A laufe; das geschieht in</p>
<pre><code class="language-cpp">remove_if( a.begin(), a.end(), ...
</code></pre>
<p>und dann für eine bestimmte Reihe aus A in allen Reihen aus B nachsehen ob eine passt. das geschieht hier</p>
<pre><code class="language-cpp">bool Entscheider::operator()( const Reihe&amp; r_aus_a ) const
    {
        // true; falls irgendeine Reihe aus B die aktuelle Reihe 'r_aus_a' aus A löscht
        return find_if( m_b-&gt;begin(), m_b-&gt;end(), Matched( r_aus_a ) ) != m_b-&gt;end();
</code></pre>
<p>Und ob eine Reihe passt (matched) oder nicht entscheidet sich in Matched (s.Code)</p>
<p>Weiter habe ich Reihe und ReiheZ als eigenständige Klassen definiert; das ist sauberer als die erste Lösung mit den typedefs.</p>
<p>Sei der Inhalt der Datei A.txt</p>
<pre><code>1 2 3 4 5 6 7  8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
</code></pre>
<p>und von B.txt</p>
<pre><code>1 2 3 11 12 13 99 99 99 99    3
51 62 99 99 99 99 99 99 99 99 1
</code></pre>
<p>Dann erzeugt das Programm eine Datei Aneu.txt mit diesem Inhalt</p>
<pre><code>21 22 23 24 25 26 27 28 29 30 
31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1213738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1213738</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 21 Jan 2007 14:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Sun, 21 Jan 2007 17:44:51 GMT]]></title><description><![CDATA[<p>Es gibt noch eine Optimierungsmöglichkeit bei der main-Funktion. Misha wird's wohl nix nützen, aber vielleicht interessiert sich jemand dafür.</p>
<p>main() optimiert:</p>
<pre><code class="language-cpp">int main()
{
    using namespace std;
    const char* aName = &quot;A.txt&quot;;
    const char* bName = &quot;B.txt&quot;;
    const char* ergName = &quot;Aneu.txt&quot;;

    vector&lt; ReiheZ &gt; b;    // alle Reihen mit Zusatzzahl
    {
        ifstream datei( bName );
        // Reihen mit Zusatzzahl einlesen und in Container 'b' speichern
        copy( istream_iterator&lt; ReiheZ &gt;( datei ), istream_iterator&lt; ReiheZ &gt;(), back_inserter( b ) );
        cout &lt;&lt; b.size() &lt;&lt; &quot; Reihen mit Zusatzzahl aus '&quot; &lt;&lt; bName &lt;&lt; &quot;' gelesen &quot; &lt;&lt; endl;
    }
    ifstream a( aName );
    ofstream erg( ergName );
    // alle Reihen aus 'a' entfernen, die dem Kriterium entsprechen, und Rest nach 'erg' abspeichern
    remove_copy_if( istream_iterator&lt; Reihe &gt;( a ), istream_iterator&lt; Reihe &gt;(), 
        ostream_iterator&lt; Reihe &gt;( erg, &quot;\n&quot; ), Entscheider( b ) );
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1213910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1213910</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sun, 21 Jan 2007 17:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Mon, 22 Jan 2007 07:14:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7393">@Werner</a><br />
In diesem Fall spielt es keine Rolle, aber wenn möglich sollte man die range-insert Methoden eines Containers dem copy-Algo vorziehen. In diesem Fall muss man dann noch auf &quot;c++'s most vexing parse&quot; achten:</p>
<pre><code class="language-cpp">ifstream datei( bName );
// man beachte die Extraklammern
vector&lt; ReiheZ &gt; b( (istream_iterator&lt; ReiheZ &gt;( datei )), istream_iterator&lt; ReiheZ &gt;());

// oder besser:
istream_iterator&lt; ReiheZ &gt; beg( datei );
vector&lt; ReiheZ &gt; b( beg, istream_iterator&lt; ReiheZ &gt;());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1214185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214185</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 22 Jan 2007 07:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Mon, 22 Jan 2007 08:13:48 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>In diesem Fall spielt es keine Rolle, aber wenn möglich sollte man die range-insert Methoden eines Containers dem copy-Algo vorziehen.</p>
</blockquote>
<p>Hallo Hume,</p>
<p>Wohl dem, der eine Umgebung hat, wo das auch kompiliert. <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="😉"
    /><br />
Ich bin immer noch etwas MS-VC6-verseucht. Aber Du hast völlig recht.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1214213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214213</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 22 Jan 2007 08:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Mon, 22 Jan 2007 09:34:36 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Wohl dem, der eine Umgebung hat, wo das auch kompiliert. <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="😉"
    /><br />
Ich bin immer noch etwas MS-VC6-verseucht. Aber Du hast völlig recht.</p>
</blockquote>
<p>Ah, fehlende Member-Templates in der Standardlib-Impl. Gute alte Zeiten <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="😉"
    /><br />
Hier ist ausnahmsweise mal nicht die schwache Template-Unterstützung des VC6 schuld (der VC6 unerstützt Member-Templates, sofern sie innerhalb der Klassendefinition definiert werden), sondern die Tatsache, dass für den VC6 keine neue Version der Dinkumware-Library lizenziert wurde. Stattdessen wurde eine alte Version (bereits seit dem VC4 dabei???), ohne solche &quot;fancy features&quot;, mitgeliefert.</p>
<p>Hm, aber warum langweile ich dich eigentlich damit... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <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/1214275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1214275</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 22 Jan 2007 09:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schwierige Aufgabe :(? on Mon, 29 Jan 2007 21:57:27 GMT]]></title><description><![CDATA[<p>Danke Werner!vielen dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219471</guid><dc:creator><![CDATA[Misha]]></dc:creator><pubDate>Mon, 29 Jan 2007 21:57:27 GMT</pubDate></item></channel></rss>