<?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[In Datei auslesen [beantwortet]]]></title><description><![CDATA[<p>Hallo!</p>
<p>Habe mich schon durch manche Foren gewühlt, aber nach Anwendung dortiger Hilfen läuft mein Prog. trotzdem nich. :o(<br />
Vielleicht hat ja jeman dLust sich mal wieder meiner anzunehmen:<br />
Ich möchte ein prog schreiben, dass in einer rekursiven Funktion Daten in eine Datei einliest. Ich wollte die Datei vorher öffnen und dann einen Filepointer übergeben, aber natürlich scheitert es wieder an meiner Unkenntnis. Vielleicht kann mir jemand helfen:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void verteilung(int anfang, vector&lt;int&gt; brett, FILE * f);
void vectorausgabe(vector&lt;int&gt; vec);
double wertausgabe(vector&lt;int&gt; brett, int auswahl); 

int main()  {

    int i,j;
    string ausgabename = &quot;test.txt&quot;;
    vector&lt;int&gt; brett(10);
    brett[0] = 8;
    for( i = 1; i &lt; brett.size(); i++)
        brett[i] = 0;
    ofstream f;
    f.open(ausgabename.c_str(), ios::binary|ios::out);
    verteilung(0, brett, f);

}
</code></pre>
<p>In der Funktion verteilung() wollte ich dann mittels &quot;f &lt;&lt; ... &quot; die Daten in die Datei auslesen. Geht das denn so überhaupt?<br />
Auf jeden Fall wird bei mir nix compiliert.</p>
<p>Vielen Dank im Voraus!</p>
<p>lG<br />
Tonikum</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273206/in-datei-auslesen-beantwortet</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 07:45:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273206.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Sep 2010 11:32:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Fri, 03 Sep 2010 20:50:20 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Habe mich schon durch manche Foren gewühlt, aber nach Anwendung dortiger Hilfen läuft mein Prog. trotzdem nich. :o(<br />
Vielleicht hat ja jeman dLust sich mal wieder meiner anzunehmen:<br />
Ich möchte ein prog schreiben, dass in einer rekursiven Funktion Daten in eine Datei einliest. Ich wollte die Datei vorher öffnen und dann einen Filepointer übergeben, aber natürlich scheitert es wieder an meiner Unkenntnis. Vielleicht kann mir jemand helfen:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void verteilung(int anfang, vector&lt;int&gt; brett, FILE * f);
void vectorausgabe(vector&lt;int&gt; vec);
double wertausgabe(vector&lt;int&gt; brett, int auswahl); 

int main()  {

    int i,j;
    string ausgabename = &quot;test.txt&quot;;
    vector&lt;int&gt; brett(10);
    brett[0] = 8;
    for( i = 1; i &lt; brett.size(); i++)
        brett[i] = 0;
    ofstream f;
    f.open(ausgabename.c_str(), ios::binary|ios::out);
    verteilung(0, brett, f);

}
</code></pre>
<p>In der Funktion verteilung() wollte ich dann mittels &quot;f &lt;&lt; ... &quot; die Daten in die Datei auslesen. Geht das denn so überhaupt?<br />
Auf jeden Fall wird bei mir nix compiliert.</p>
<p>Vielen Dank im Voraus!</p>
<p>lG<br />
Tonikum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947294</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 03 Sep 2010 20:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Thu, 02 Sep 2010 11:48:11 GMT]]></title><description><![CDATA[<p>Sicher, das geht. Allerdings ist ofstream nicht das gleiche wie FILE*. Du musst also in deiner <code>verteilung()</code> -Funktion als letztes Argument einen kompatiblen Typ angeben, beispielsweise <code>ofstream&amp; f</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947302</guid><dc:creator><![CDATA[Calando]]></dc:creator><pubDate>Thu, 02 Sep 2010 11:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Thu, 02 Sep 2010 12:11:15 GMT]]></title><description><![CDATA[<p>Lieber Tonikum,<br />
könntest du den Quellcode für deine drei Funktionen ebenfalls posten? Als Tipp voraus: beschäftige Dich mal mit i/o-stream-Iteratoren. Diese netten Dinger erleichtern dir das C++ Leben sehr. Du kannst Sie nutzen, indem du &lt;iterator&gt; inkludierst.</p>
<p>Hier ein kleines Anwendungsbeispiel. Im gleichen Ordner wie die Datei existiert eine Datei, die drei Zahlen enthält. Man kann sie mithilfe der Iteratoren auslesen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;

void ausgabe(std::istream_iterator&lt;int&gt;&amp; begin,std::istream_iterator&lt;int&gt;&amp; end) {
	while (begin!=end) 
	std::cout &lt;&lt; *begin++ &lt;&lt; std::endl;
}

int main(int argc,char *argv[]) {
	std::ifstream infile(&quot;test.txt&quot;);
	std::istream_iterator&lt;int&gt;  input(infile);
	std::istream_iterator&lt;int&gt; eof;
	ausgabe(input,eof);
	system(&quot;Pause&quot;);
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1947313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947313</guid><dc:creator><![CDATA[satanfreze]]></dc:creator><pubDate>Thu, 02 Sep 2010 12:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Fri, 03 Sep 2010 12:46:11 GMT]]></title><description><![CDATA[<p>Vielen Dank für Eure Hilfe!<br />
Leider klappt das mit &quot;ofstream &amp; f&quot; auch nicht bei mir. Ich stell mic halt mal wieder an.</p>
<p>Hier dder komplette Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void verteilung(int anfang, vector&lt;int&gt; brett, ofstream &amp; f);
void vectorausgabe(vector&lt;int&gt; vec);
double wertausgabe(vector&lt;int&gt; brett, int auswahl); // auswahl: 0 = Fitness, 1 = Moral, 2 = Frische

double param[10][3] = {{0.0, 1.0, 0.0}, {0.2, 0.0, -1.0}, {0.2, -1.0, 0.0}, {0.3, -1.0, -1.0}, {0.1, 0.0, 0.0}, {0.0, -0.5, 1.5},
                                {-0.1, 0.0, 1.5}, {-0.2, 0.0, 3.0},{0.0, -1.0, 2.0}, {-0.1, 0.0, 1.0}};

int main()  {

    int i,j;
    string ausgabename = &quot;test.txt&quot;;
    vector&lt;int&gt; brett(10);
    brett[0] = 8;
    for( i = 1; i &lt; brett.size(); i++)
        brett[i] = 0;
    ofstream f;
    f.open(ausgabename.c_str(), ios::binary|ios::out);
    verteilung(0, brett, f);
    /* Reihenfolge: Fitness, Moral, Frische */

}

void verteilung(int anfang, vector&lt;int&gt;  vec, ofstream &amp; f)    {
    vector&lt;int&gt; brett = vec;
    f &lt;&lt; vectorausgabe(brett);
    f &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 0) &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 1) &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 2);
    while(brett[anfang] != 0 &amp;&amp; anfang != brett.size() - 1)  {
        brett[anfang]--;
        brett[anfang+1]++;
        verteilung(anfang + 1, brett, f);
    }
}

void vectorausgabe(vector&lt;int&gt; vec)   {
    f &lt;&lt; endl;
    for(int i = 0; i &lt; vec.size(); i++)
        f &lt;&lt; vec[i];
}

double wertausgabe(vector&lt;int&gt; brett, int auswahl)    {
    double sum = 0;
    for(int i = 0; i &lt; 10; i++)
        sum += brett[i]*param[i][auswahl];
    return sum;
}
</code></pre>
<p>Das mit den Iteratoren hab ich nich verstanden - muss ich wohl ein wenig in meinem Buch blättern.</p>
<p>Danke sehr!</p>
<p>Tonikum<br />
(der sogar zu doof is, eine Datei auszugeben...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947807</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 03 Sep 2010 12:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Fri, 03 Sep 2010 13:04:02 GMT]]></title><description><![CDATA[<p>Hab nochmal ein paar Fehler gefunden.<br />
Nun gibt mir das Prog aber keinen Zeilenumbruch an meine Datei weiter, sodass die Daten ganz kunterbunt im File verteilt sind:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

using namespace std;

void verteilung(int anfang, vector&lt;int&gt; brett, ofstream * f);
void vectorausgabe(vector&lt;int&gt; vec, ofstream * f);
double wertausgabe(vector&lt;int&gt; brett, int auswahl); // auswahl: 0 = Fitness, 1 = Moral, 2 = Frische

double param[10][3] = {{0.0, 1.0, 0.0}, {0.2, 0.0, -1.0}, {0.2, -1.0, 0.0}, {0.3, -1.0, -1.0}, {0.1, 0.0, 0.0}, {0.0, -0.5, 1.5},
                                {-0.1, 0.0, 1.5}, {-0.2, 0.0, 3.0},{0.0, -1.0, 2.0}, {-0.1, 0.0, 1.0}};

int main()  {

    int i,j;
    string ausgabename = &quot;test.txt&quot;;
    vector&lt;int&gt; brett(10);
    brett[0] = 8;
    for( i = 1; i &lt; brett.size(); i++)
        brett[i] = 0;
    ofstream f;
    f.open(ausgabename.c_str(), ios::binary|ios::out);
    verteilung(0, brett, &amp;f);
    /* Reihenfolge: Fitness, Moral, Frische */

}

void verteilung(int anfang, vector&lt;int&gt;  vec, ofstream * f)    {
    vector&lt;int&gt; brett = vec;
    vectorausgabe(brett, f);
    *f &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 0) &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 1) &lt;&lt; &quot;\t&quot; &lt;&lt; wertausgabe(brett, 2);
    *f &lt;&lt; endl;
    while(brett[anfang] != 0 &amp;&amp; anfang != brett.size() - 1)  {
        brett[anfang]--;
        brett[anfang+1]++;
        verteilung(anfang + 1, brett, f);
    }
}

void vectorausgabe(vector&lt;int&gt; vec, ofstream * f)   {
    *f &lt;&lt; '\n';
    for(int i = 0; i &lt; vec.size(); i++)
        *f &lt;&lt; vec[i];
}

double wertausgabe(vector&lt;int&gt; brett, int auswahl)    {
    double sum = 0;
    for(int i = 0; i &lt; 10; i++)
        sum += brett[i]*param[i][auswahl];
    return sum;
}
</code></pre>
<p>Und zwar bringt die Zeile 39 bei mi rkeine VEränderung.<br />
Hab schon '\n' probiert -geht leider auch nicht.<br />
Was mach ich denn hier schon wieder falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947813</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 03 Sep 2010 13:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Fri, 03 Sep 2010 14:09:20 GMT]]></title><description><![CDATA[<p>Also ich würde den ofstream mit dem Adress-Operator &amp; mit CallByReference übergeben:</p>
<pre><code class="language-cpp">/* ... */

using namespace std;

void verteilung(int anfang, vector&lt;int&gt; brett, ofstream&amp; f);
void vectorausgabe(vector&lt;int&gt; vec, ofstream&amp; f);

/* ... */
</code></pre>
<p>Du solltest dich mit Iteratoren auseinandersetzen. Sie sind ein fundamentales Werkzeug bei der Elementverwaltung von Containern und Streams.</p>
<p>Mir ist auch schleierhaft, was du genau bezwecken willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947845</guid><dc:creator><![CDATA[satanfreze]]></dc:creator><pubDate>Fri, 03 Sep 2010 14:09:20 GMT</pubDate></item><item><title><![CDATA[Reply to In Datei auslesen [beantwortet] on Fri, 03 Sep 2010 20:49:23 GMT]]></title><description><![CDATA[<p>Das mit der Referenz werde ich versuchen, danke.<br />
Auch das mit den Iteratoren werde ich zu beherzigen versuchen - werde aber vermutlich ewig ein Noob bleiben, so wie es aussieht.</p>
<p>Was das Programm bezweckt?<br />
Ich kann in einem anderen Sachverhalt aus 10 Parametern acht beliebig (auch mehrfach) wählen, die jeweils drei Atrribute haben und sich aufsummieren. Ich wollte so eine Auflistung der ~24.000 möglichen Ergebnisse haben, um sie nach gewissen Kriterien zu sortieren.</p>
<p>Also auf jeden Fall danke für Eure Hilfe.<br />
Dieses Forum ist immer ein toller Anlaufpunkt, wenn ich nicht weiterkomme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947988</guid><dc:creator><![CDATA[Tonikum]]></dc:creator><pubDate>Fri, 03 Sep 2010 20:49:23 GMT</pubDate></item></channel></rss>