<?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[Einzelne Zeilen Filtern]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich bin ein ziemlicher Anfänger in Sachen programmieren und habe folgende Aufgabe erhalten:</p>
<p>Ich habe die KOMPLETTE Oscardatenbank erhalten, mit 6.8 Millionen Zeilen. Diese Muss ich nach den Ausgaben filtern (Jahr, Name der Nominierten plus Kategorie, gewinner und zusätliche Auszeichnungen, die Fliesstexte beinhalten). Die Ausgabedatei sollte schlussendlich wieder als .csv-Datei eingelesen werden können, um sie dann wieder in eine Datenbank einzuspielen. Ich darf keine SQL-Abfragen benutzen, sondern muss ein Programm mit C++ dafür entwerfen. Das Einlesen und Ausgeben habe ich schon hingekriegt. Wie bereits erwähnt muss ich nur noch die Datei Filtern</p>
<p>Ich hoffe, ihr könnt mir ein Paar Tipps geben, wie das funktionieren könnte.</p>
<p>Gruss</p>
<p>Gabe</p>
<p>Hier ist der Programm-Code:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
#include &lt;iostream&gt;
using namespace std;

int main (void)
{
  FILE *datei;
  char line[500];
   int i ;
   i = 500;

  datei = fopen (&quot;oscardateien.txt&quot;, &quot;r&quot;);
  char c = 'test';
  FILE * ausgabe = fopen(&quot;ausgabe.txt&quot;,&quot;w+&quot;);

  while(!feof(datei))
    {
        //fseek(datei, i ,SEEK_SET);
        fgets(line,i,datei);  //zeilen weise lesen mit fgets...
         cout &lt;&lt; line &lt;&lt; endl;
         fprintf(ausgabe,line,c);

    }

    fclose (datei);

  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>Die Oscar-Datei ist seeeehr gross, darum werde ich sie hier nicht reinkopieren sondern ich gebe euch den Link, wo ihr sie ausgeben könnnt.</p>
<p><a href="http://awardsdatabase.oscars.org/ampas_awards/BasicSearchInput.jsp" rel="nofollow">http://awardsdatabase.oscars.org/ampas_awards/BasicSearchInput.jsp</a></p>
<p>Einfach 1927-2012 eingeben und Abfragen. Sollten ungefähr 6.8 Millionen Zeilen sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302008/einzelne-zeilen-filtern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 17:17:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302008.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Apr 2012 12:28:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 12:28:04 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich bin ein ziemlicher Anfänger in Sachen programmieren und habe folgende Aufgabe erhalten:</p>
<p>Ich habe die KOMPLETTE Oscardatenbank erhalten, mit 6.8 Millionen Zeilen. Diese Muss ich nach den Ausgaben filtern (Jahr, Name der Nominierten plus Kategorie, gewinner und zusätliche Auszeichnungen, die Fliesstexte beinhalten). Die Ausgabedatei sollte schlussendlich wieder als .csv-Datei eingelesen werden können, um sie dann wieder in eine Datenbank einzuspielen. Ich darf keine SQL-Abfragen benutzen, sondern muss ein Programm mit C++ dafür entwerfen. Das Einlesen und Ausgeben habe ich schon hingekriegt. Wie bereits erwähnt muss ich nur noch die Datei Filtern</p>
<p>Ich hoffe, ihr könnt mir ein Paar Tipps geben, wie das funktionieren könnte.</p>
<p>Gruss</p>
<p>Gabe</p>
<p>Hier ist der Programm-Code:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;windows.h&gt;
#include &lt;iostream&gt;
using namespace std;

int main (void)
{
  FILE *datei;
  char line[500];
   int i ;
   i = 500;

  datei = fopen (&quot;oscardateien.txt&quot;, &quot;r&quot;);
  char c = 'test';
  FILE * ausgabe = fopen(&quot;ausgabe.txt&quot;,&quot;w+&quot;);

  while(!feof(datei))
    {
        //fseek(datei, i ,SEEK_SET);
        fgets(line,i,datei);  //zeilen weise lesen mit fgets...
         cout &lt;&lt; line &lt;&lt; endl;
         fprintf(ausgabe,line,c);

    }

    fclose (datei);

  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
<p>Die Oscar-Datei ist seeeehr gross, darum werde ich sie hier nicht reinkopieren sondern ich gebe euch den Link, wo ihr sie ausgeben könnnt.</p>
<p><a href="http://awardsdatabase.oscars.org/ampas_awards/BasicSearchInput.jsp" rel="nofollow">http://awardsdatabase.oscars.org/ampas_awards/BasicSearchInput.jsp</a></p>
<p>Einfach 1927-2012 eingeben und Abfragen. Sollten ungefähr 6.8 Millionen Zeilen sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200138</guid><dc:creator><![CDATA[gabe]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 12:31:25 GMT]]></title><description><![CDATA[<p>Wenn man mal davon absieht, dass Zeile 15 falsch ist und so nicht kompilieren dürfte, solltest du dir die C++ Standard-Library, vor allem die Filestreams ansehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200139</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 12:33:37 GMT]]></title><description><![CDATA[<p>Was du da machst ist C mit <code>cin</code> und <code>cout</code> . (Buchstäblich!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200140</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 12:45:13 GMT]]></title><description><![CDATA[<p>Ich bitte euch mir auch zu helfen, als mich nur zu kritisieren...ich habe ja bereits gesagt, dass ich noch Anfänger bin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200145</guid><dc:creator><![CDATA[gabe]]></dc:creator><pubDate>Mon, 09 Apr 2012 12:45:13 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 15:33:16 GMT]]></title><description><![CDATA[<p>gabe schrieb:</p>
<blockquote>
<p>Ich bitte euch mir auch zu helfen, als mich nur zu kritisieren...ich habe ja bereits gesagt, dass ich noch Anfänger bin.</p>
</blockquote>
<p>Dann sei doch froh, dass man dich jetzt auf den rechten Weg führen möchte, bevor es zu spät ist! Diese C/C++-Mischung ist eine ganz gefährliche Angewohnheit, die man nur schwer wieder los wird. Das solltest du schleunigst abstellen. Es ist schlecht, wenn man C machen möchte, da man die Portabilität von C verliert und es ist noch schlechter, wenn man C++ machen möchte, da die C und die C++-Sprachmittel sich gar nicht gut vertragen und da es in C++ in der Regel sicherere Lösungen gibt, die man in C normalerweise umständlich selber programmieren müsste.</p>
<p>Zu deiner Frage: Ich habe keine Ahnung was deine Frage ist. Du sagst du hast eine Datenbank eingelesen und möchtest nun Zeilen Filtern. Aha. <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="😕"
    /> Was meinst du mit filtern? Wie liegen deine Daten vor? Was möchtest du wissen? Womit hast du Schwierigkeiten? Lies dir mal den ersten Link in meiner Signatur durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200206</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 09 Apr 2012 15:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 17:37:13 GMT]]></title><description><![CDATA[<p>Nun, wenn du sowas wie Datenbank-Verwaltung machen willst, gibt es da sicher Libs für (oder so) ^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200259</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 09 Apr 2012 17:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 19:20:17 GMT]]></title><description><![CDATA[<p>Es tut mir leid wegen den Mischungen, die habe ich zum Teil selbst geschrieben, zum Teil aus Vorlagen meiner Dozenten entnommen. Die Datei ist eben sehr gross, darum würde es nicht viel Sinn machen sie zu zeigen, wie ich ja bereits geschrieben habe, müsstest du bei der Oscar-Datenbank alle Datensätze ausgeben und das machst du, indem du das Datum von 1927 bis 2011 eingibst. Dann kommt eine Ausgabe der Datenbank mit allen Inhalten. Die möchte ich gerne nach Attribut gefiltert habe ich zeige mal ein kleiner Aussschnitt:</p>
<blockquote>
<p>1927/28 (1st)<br />
ACTOR</p>
<p>Richard Barthelmess -- The Noose {&quot;Nickie Elkins&quot;}; and The Patent Leather Kid {&quot;The Patent Leather Kid&quot;}<br />
*<br />
Emil Jannings -- The Last Command {&quot;General Dolgorucki [Grand Duke Sergius Alexander]&quot;}; and The Way of All Flesh {&quot;August Schilling&quot;}<br />
ACTRESS</p>
<p>Louise Dresser -- A Ship Comes In {&quot;Mrs. Pleznik&quot;}<br />
*<br />
Janet Gaynor -- 7th Heaven {&quot;Diane&quot;}; Street Angel {&quot;Angela&quot;}; and Sunrise {&quot;The Wife&quot;}</p>
<p>Gloria Swanson -- Sadie Thompson {&quot;Sadie Thompson&quot;}</p>
</blockquote>
<p>Hier möchte ich zum beispiel zum Jahr die Kategorie, die namen und wer gewonnen hat. Also das heisst, das Programm soll den Text nach Attributen suchen und die dann Ausgaben. Ich dachte da zum Beispiel an die Regel:</p>
<p>Gib die Zeile aus, die 2 Zeilen vor &quot;ACTOR&quot; steht (dann sollte das Jahr ausgegeben werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200297</guid><dc:creator><![CDATA[gabe]]></dc:creator><pubDate>Mon, 09 Apr 2012 19:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 19:57:45 GMT]]></title><description><![CDATA[<p>Das solltest du ganz anders anpacken. Nicht so auf das Dateiformat fixiert. Wenn du keine Datenbank benutzen möchtest, dann programmier eine Datenbank nach. Das braucht auch keine professionelle Lösung zu sein, 6.8 Millionen Zeilen ist datenmengenmäßig ein Scherz für heutige Computer. Das geht ganz locker, indem man die Daten in einem vector speichert und vielleicht noch ein paar maps als Suchindizes dazu anlegt. Selbst Brute-Force-Suche sollte für einen Menschen nicht mehr wahrnehmbar schnell gehen. Dazu musst du die Daten natürlich vernünftig organisieren. Du sprichst doch selbst schon von Datensätzen, wenn du dein Zeilenfilterproblem beschreibst. Mach den nächsten Schritt und organisier die Daten in einer schönen Klasse mit Einlesefunktion und dann kannst du die Standardbibliothek wie oben angedeutet die ganze schwere Arbeit machen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200306</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 09 Apr 2012 19:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 20:42:03 GMT]]></title><description><![CDATA[<p>gabe schrieb:</p>
<blockquote>
<p>Es tut mir leid wegen den Mischungen, die habe ich zum Teil selbst geschrieben, zum Teil aus Vorlagen meiner Dozenten entnommen. Die Datei ist eben sehr gross, darum würde es nicht viel Sinn machen sie zu zeigen, wie ich ja bereits geschrieben habe, müsstest du bei der Oscar-Datenbank alle Datensätze ausgeben und das machst du, indem du das Datum von 1927 bis 2011 eingibst. Dann kommt eine Ausgabe der Datenbank mit allen Inhalten. Die möchte ich gerne nach Attribut gefiltert habe ich zeige mal ein kleiner Aussschnitt:</p>
<blockquote>
<p>1927/28 (1st)<br />
ACTOR</p>
<p>Richard Barthelmess -- The Noose {&quot;Nickie Elkins&quot;}; and The Patent Leather Kid {&quot;The Patent Leather Kid&quot;}<br />
*<br />
Emil Jannings -- The Last Command {&quot;General Dolgorucki [Grand Duke Sergius Alexander]&quot;}; and The Way of All Flesh {&quot;August Schilling&quot;}<br />
ACTRESS</p>
<p>Louise Dresser -- A Ship Comes In {&quot;Mrs. Pleznik&quot;}<br />
*<br />
Janet Gaynor -- 7th Heaven {&quot;Diane&quot;}; Street Angel {&quot;Angela&quot;}; and Sunrise {&quot;The Wife&quot;}</p>
<p>Gloria Swanson -- Sadie Thompson {&quot;Sadie Thompson&quot;}</p>
</blockquote>
<p>Hier möchte ich zum beispiel zum Jahr die Kategorie, die namen und wer gewonnen hat. Also das heisst, das Programm soll den Text nach Attributen suchen und die dann Ausgaben. Ich dachte da zum Beispiel an die Regel:</p>
<p>Gib die Zeile aus, die 2 Zeilen vor &quot;ACTOR&quot; steht (dann sollte das Jahr ausgegeben werden).</p>
</blockquote>
<p>Bastel dir doch sowas wie eine Klasse &quot;Jahr&quot;. Die Beinhaltet das Jahr ( <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="😃"
    /> ), eine <code>std::map&lt;Name, std::map&lt;NameDesFilms, NameDerRolle&gt;&gt;</code> , und einige Filtermethoden die darüber iterieren (nimm aber besser gleich <code>unordered_map</code> s, wenn du weißt wie man sie einbindet).</p>
<p>Dazu kannst du ja auch einen überladenen Einlese-Operator nehmen, um aus der Standardeingabe oder einer Datei zu parsen.<br />
Und am Ende nimmst du dann einen <code>std::vector</code> Und legst da alle Jahre rein (oder eine <code>map</code> -&gt; <code>std::map&lt;Jahr, KlasseMitEntsprechendemJahr&gt;</code> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200316</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 09 Apr 2012 20:42:03 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Mon, 09 Apr 2012 20:43:00 GMT]]></title><description><![CDATA[<p>Ich habe keine AHnung wovon du redest :). Aber unordert-map kann ich ja vielleicht mal googeln danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200319</guid><dc:creator><![CDATA[gabe]]></dc:creator><pubDate>Mon, 09 Apr 2012 20:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeilen Filtern on Tue, 10 Apr 2012 14:56:28 GMT]]></title><description><![CDATA[<p>gabe schrieb:</p>
<blockquote>
<p>Ich habe keine AHnung wovon du redest :). Aber unordert-map kann ich ja vielleicht mal googeln danke.</p>
</blockquote>
<p>Ja, vergiss das mit den <code>unordered_map</code> s mal besser ganz schnell und mach es so, wie SeppJ es gesagt hat, ich dachte, du wärst viel weiter... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200506</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 10 Apr 2012 14:56:28 GMT</pubDate></item></channel></rss>