<?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[Array-Übergabe an eine Funktion - Wie?]]></title><description><![CDATA[<p>Moin, moin.<br />
Bin momentan total vernagelt!<br />
Grundsatzfrage: Wie übergebe ich einer Funktion einen Array und bzw. wie überrede ich diese Funktion, mir einen Array zurück zu liefern?</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;   //wg. der Ausgabe in eine Datei
#include &quot;anagramm.h&quot;  //Funktionsdeklaration	

char Puffer[255];
char arrDateiname[12];
char arrWort[13];
int Laenge;
int Anzahl;
int Zeichenzahl;

int main()
	{
	//cout &lt;&lt; &quot;Dateiname nach DOS-Regeln? \n&quot;;
	//cin.get(arrDateiname,11);
	//cout &lt;&lt; &quot;Angegebener Dateiname: &quot; &lt;&lt; arrDateiname &lt;&lt; &quot;\n\n&quot;;
</code></pre>
<p>Das funktioniert irgendwie nicht (deshalb als Kommentar): Springt nach der Ausgabe des Dateinamens sofort zu return 0; ohne eine Eingabe des Wortes zu Ermöglichen.</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Geben Sie ein Wort ein (max. 12 Stellen!):\n&quot;;
	cin.get(arrWort,13);
	cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
	Laenge = sizeof(arrWort);
	Zeichenzahl= 0;
	for (Anzahl = 0; Anzahl &lt; Laenge; Anzahl++)
		if (arrWort[Anzahl] &gt; 0)
		cout &lt;&lt; arrWort[Anzahl];
		else
		break;
		Zeichenzahl = Anzahl;
		cout &lt;&lt; &quot;\n&quot; &lt;&lt; &quot;Anzahl der Zeichen: &quot; &lt;&lt; Zeichenzahl &lt;&lt;&quot;\n&quot;;
		cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
		// An dieser Stelle werden die ermittelten Werte an die Funktion
		// &quot;Anagrammermittlung&quot; übergeben (theoretisch!).
		Anagrammermittlung(arrWort, Zeichenzahl);
	return 0;
	}
</code></pre>
<p>Die momentane Funktionsdeklaration heißt:<br />
char Anagrammermittlung(char arrWort, int Zeichenzahl);</p>
<p>Ziel: Ich will die Ausgabe von diesem Programm hier:</p>
<pre><code class="language-cpp">#pragma warning(disable: 4786)

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;functional&gt;

using namespace std ;

void main()
{
    typedef vector&lt;string&gt; StrVector ;
    typedef StrVector::iterator StrVectorIt ;
    typedef ostream_iterator&lt;string&gt; StrOstreamIt;

	int VECTOR_SIZE = 3 ;

    StrVector arrWort(VECTOR_SIZE) ;
    StrVectorIt Start, Ende, Zeichen ;
    StrOstreamIt Ausgabe(cout, &quot; &quot;) ;

    Start = arrWort.begin() ;
    Ende = arrWort.end() ;

    arrWort[0] = &quot;1&quot; ;
    arrWort[1] = &quot;2&quot; ;
    arrWort[2] = &quot;3&quot; ;
    //arrWort[3] = &quot;4&quot; ;
    //arrWort[4] = &quot;5&quot; ;
    //arrWort[5] = &quot;6&quot; ;
    //arrWort[6] = &quot;7&quot; ;
    //arrWort[7] = &quot;8&quot; ;
	//arrWort[8] = &quot;9&quot; ;

    cout &lt;&lt; &quot;Zeichenkette vor der Errechnung der Permutationen: \n&quot; &lt;&lt; &quot;Die Eingabe lautete: &quot; ;
	for(Zeichen = Start; Zeichen != Ende; Zeichen++)
        cout &lt;&lt; *Zeichen &lt;&lt; &quot; &quot;;
		cout &lt;&lt; &quot;\n\n&quot; ;

	cout &lt;&lt; &quot;Ausgabe aller moeglichen Permutationen: &quot; &lt;&lt; &quot;\n&quot; ;
	while ( next_permutation(Start, Ende) )
		{
		copy(Start, Ende, Ausgabe) ;
		cout &lt;&lt; &quot;\n&quot;;
		}
}
</code></pre>
<p>von der Eingabe her verändern und die Ausgabe in eine Datei umleiten um sie Drucken zu können.</p>
<p>Danke schon mal!</p>
<p>P.S.: Es mag sein, daß es anders/einfacher etc. geht. Aber ich möchte als Gelegenheits-CPP'ler gerne eigene Wege ausprobieren.</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/135997/array-übergabe-an-eine-funktion-wie</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:25:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135997.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Feb 2006 16:29:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 16:29:59 GMT]]></title><description><![CDATA[<p>Moin, moin.<br />
Bin momentan total vernagelt!<br />
Grundsatzfrage: Wie übergebe ich einer Funktion einen Array und bzw. wie überrede ich diese Funktion, mir einen Array zurück zu liefern?</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;   //wg. der Ausgabe in eine Datei
#include &quot;anagramm.h&quot;  //Funktionsdeklaration	

char Puffer[255];
char arrDateiname[12];
char arrWort[13];
int Laenge;
int Anzahl;
int Zeichenzahl;

int main()
	{
	//cout &lt;&lt; &quot;Dateiname nach DOS-Regeln? \n&quot;;
	//cin.get(arrDateiname,11);
	//cout &lt;&lt; &quot;Angegebener Dateiname: &quot; &lt;&lt; arrDateiname &lt;&lt; &quot;\n\n&quot;;
</code></pre>
<p>Das funktioniert irgendwie nicht (deshalb als Kommentar): Springt nach der Ausgabe des Dateinamens sofort zu return 0; ohne eine Eingabe des Wortes zu Ermöglichen.</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Geben Sie ein Wort ein (max. 12 Stellen!):\n&quot;;
	cin.get(arrWort,13);
	cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
	Laenge = sizeof(arrWort);
	Zeichenzahl= 0;
	for (Anzahl = 0; Anzahl &lt; Laenge; Anzahl++)
		if (arrWort[Anzahl] &gt; 0)
		cout &lt;&lt; arrWort[Anzahl];
		else
		break;
		Zeichenzahl = Anzahl;
		cout &lt;&lt; &quot;\n&quot; &lt;&lt; &quot;Anzahl der Zeichen: &quot; &lt;&lt; Zeichenzahl &lt;&lt;&quot;\n&quot;;
		cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
		// An dieser Stelle werden die ermittelten Werte an die Funktion
		// &quot;Anagrammermittlung&quot; übergeben (theoretisch!).
		Anagrammermittlung(arrWort, Zeichenzahl);
	return 0;
	}
</code></pre>
<p>Die momentane Funktionsdeklaration heißt:<br />
char Anagrammermittlung(char arrWort, int Zeichenzahl);</p>
<p>Ziel: Ich will die Ausgabe von diesem Programm hier:</p>
<pre><code class="language-cpp">#pragma warning(disable: 4786)

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;
#include &lt;functional&gt;

using namespace std ;

void main()
{
    typedef vector&lt;string&gt; StrVector ;
    typedef StrVector::iterator StrVectorIt ;
    typedef ostream_iterator&lt;string&gt; StrOstreamIt;

	int VECTOR_SIZE = 3 ;

    StrVector arrWort(VECTOR_SIZE) ;
    StrVectorIt Start, Ende, Zeichen ;
    StrOstreamIt Ausgabe(cout, &quot; &quot;) ;

    Start = arrWort.begin() ;
    Ende = arrWort.end() ;

    arrWort[0] = &quot;1&quot; ;
    arrWort[1] = &quot;2&quot; ;
    arrWort[2] = &quot;3&quot; ;
    //arrWort[3] = &quot;4&quot; ;
    //arrWort[4] = &quot;5&quot; ;
    //arrWort[5] = &quot;6&quot; ;
    //arrWort[6] = &quot;7&quot; ;
    //arrWort[7] = &quot;8&quot; ;
	//arrWort[8] = &quot;9&quot; ;

    cout &lt;&lt; &quot;Zeichenkette vor der Errechnung der Permutationen: \n&quot; &lt;&lt; &quot;Die Eingabe lautete: &quot; ;
	for(Zeichen = Start; Zeichen != Ende; Zeichen++)
        cout &lt;&lt; *Zeichen &lt;&lt; &quot; &quot;;
		cout &lt;&lt; &quot;\n\n&quot; ;

	cout &lt;&lt; &quot;Ausgabe aller moeglichen Permutationen: &quot; &lt;&lt; &quot;\n&quot; ;
	while ( next_permutation(Start, Ende) )
		{
		copy(Start, Ende, Ausgabe) ;
		cout &lt;&lt; &quot;\n&quot;;
		}
}
</code></pre>
<p>von der Eingabe her verändern und die Ausgabe in eine Datei umleiten um sie Drucken zu können.</p>
<p>Danke schon mal!</p>
<p>P.S.: Es mag sein, daß es anders/einfacher etc. geht. Aber ich möchte als Gelegenheits-CPP'ler gerne eigene Wege ausprobieren.</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987669</guid><dc:creator><![CDATA[AranankA]]></dc:creator><pubDate>Mon, 06 Feb 2006 16:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 16:46:23 GMT]]></title><description><![CDATA[<p>Arrays übergibst du nicht als 'char', sondern als 'char[]' (oder 'char*'). (zurückliefern kannst du sie nur als 'char*', wobei du aufpassen mußt, daß der entsprechende Speicherbereich nach Funktionsende noch gültig ist).</p>
<p>(PS: Und die Länge eines eingegebenen Wortes bestimmst du besser mit strlen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987694</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Feb 2006 16:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 16:57:33 GMT]]></title><description><![CDATA[<p>Probiere ich sofort ...<br />
strlen (#include &lt;string.h&gt;) mag er nicht. Was spricht gegen sizeof?</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987710</guid><dc:creator><![CDATA[AranankA]]></dc:creator><pubDate>Mon, 06 Feb 2006 16:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 17:01:41 GMT]]></title><description><![CDATA[<p>AranankA schrieb:</p>
<blockquote>
<p>Probiere ich sofort ...<br />
strlen (#include &lt;string.h&gt;) mag er nicht.</p>
</blockquote>
<p>Wie äußerst sich &quot;mag er nicht&quot;?</p>
<blockquote>
<p>Was spricht gegen sizeof?</p>
</blockquote>
<p>Das wird zur Compilezeit ausgewertet - also zählt es auch Leerfelder mit, wenn deine Eingabe kürzer als 13 Zeichen war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987717</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Feb 2006 17:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 18:00:13 GMT]]></title><description><![CDATA[<p>Hatte einen Syntaxfehler drin, jetz klappt &quot;strlen&quot;. Darum nun so:</p>
<pre><code class="language-cpp">#include &lt;fstream.h&gt;	//wg. der Ausgabe in eine datei
#include &quot;anagramm.h&quot;	//Funktionsdeklaration	
#include &lt;string.h&gt;

char Puffer[255];
char arrDateiname[12];
char arrWort[13];
int Laenge;
int Anzahl;

int main()
	{
	       //cout &lt;&lt; &quot;Dateiname nach DOS-Regeln? \n&quot;;
	       //cin.get(arrDateiname,11);
	       //cout &lt;&lt; &quot;Angegebener Dateiname: &quot; &lt;&lt; arrDateiname &lt;&lt; &quot;\n\n&quot;;
//Springt sofort zu return 0; und beendet das Programm

	cout &lt;&lt; &quot;Geben Sie ein Wort ein (max. 12 Stellen!):\n&quot;;
	cin.get(arrWort,13);
	cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
	Laenge = strlen(arrWort);
		// An dieser Stelle werden die ermittelten Werte an die Funktion
		// &quot;Anagrammermittlung&quot; übergeben. (theoretisch!)
		Anagrammermittlung(arrWort[], Zeichenzahl);
	return 0;
	}
</code></pre>
<p>Dafür nun: Keine Eingabe mehr möglich, wenn erste Eingabe ausgewertet &amp;<br />
Keine Übergabe von Werten, nur Fehlermeldungen von wegen &quot;error C2059: Syntaxfehler : ']'<br />
Irgendwie klappt das nicht. Momentane Deklaration:<br />
int Anagrammermittlung(char arrWort[], int Zeichenzahl);<br />
Zurückgeben soll die Funktion nix; die Ausgabe erfolgt von ihr aus.</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987801</guid><dc:creator><![CDATA[AranankA]]></dc:creator><pubDate>Mon, 06 Feb 2006 18:00:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 19:18:26 GMT]]></title><description><![CDATA[<p>AranankA schrieb:</p>
<blockquote>
<p>Grundsatzfrage: Wie übergebe ich einer Funktion einen Array und bzw. wie überrede ich diese Funktion, mir einen Array zurück zu liefern?</p>
</blockquote>
<p>Grundsatzantwort: am besten gar nicht. Das ist ernst gemeint. Du erleichterst Dir Dein Programmiererleben ungemein, wenn Du z.B. statt der Arrays</p>
<pre><code class="language-cpp">char arrDateiname[12];
char arrWort[13];
</code></pre>
<p>std::string's benutzt. Übergeben werden diese dann mit</p>
<pre><code class="language-cpp">void Anagrammermittlung( const std::string&amp; wort );
</code></pre>
<p>Um die ganzen Längen-Informationen wie z.B. 'Anzahl', 'Zeichenanzahl' usw. brauchst Du Dich nicht mehr kümmern. Die fallen einfach weg.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987912</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 06 Feb 2006 19:18:26 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 19:29:36 GMT]]></title><description><![CDATA[<p>Das klingt gut und wird sofort angewendet. Langsam war ich nämlich am Verzweifeln.</p>
<p>Bleibt noch die Frage: Warum kann ich nach der Eingabe des Dateinamens das eigentliche Wort nicht mehr eingeben (sieh die auskommentierte Stelle).<br />
Das Programm beendet sich nach der Eingabe selber.</p>
<pre><code class="language-cpp">int main()
    {
//cout &lt;&lt; &quot;Dateiname nach DOS-Regeln? \n&quot;;
//cin.get(arrDateiname,11);
//cout &lt;&lt; &quot;Angegebener Dateiname: &quot; &lt;&lt; arrDateiname &lt;&lt; &quot;\n\n&quot;;

//Springt sofort zu return 0; und beendet das Programm
//Somit wird:

    cout &lt;&lt; &quot;Geben Sie ein Wort ein (max. 12 Stellen!):\n&quot;; //nie erreicht.
    cin.get(arrWort,13);
    cout &lt;&lt; arrWort &lt;&lt; &quot;\n&quot;;
.
.
.
</code></pre>
<p>Frage nur, warum?</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/987938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987938</guid><dc:creator><![CDATA[AranankA]]></dc:creator><pubDate>Mon, 06 Feb 2006 19:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Mon, 06 Feb 2006 20:16:52 GMT]]></title><description><![CDATA[<p>AranankA schrieb:</p>
<blockquote>
<p>Bleibt noch die Frage: Warum kann ich nach der Eingabe des Dateinamens das eigentliche Wort nicht mehr eingeben (sieh die auskommentierte Stelle).<br />
Das Programm beendet sich nach der Eingabe selber.</p>
</blockquote>
<p>nicht ganz! Dein Programm läuft 'nur' über das nächste 'get' einfach drüber weg, liest keine Daten ein und das war's dann. Das liegt daran, dass</p>
<pre><code class="language-cpp">basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n)
</code></pre>
<p>zu den sogenannten 'unformatted input functions' gehört. Ich benutze die Dinger nicht, daher mußte ich auch erst nachschauen.<br />
Diese Methode beendet das Lesen u.a. dann, wenn sie auf ein LF (ASCII-Code: 0xa; Zeilenende) trifft. Und zwar - und das ist entscheidend - ohne (!) das LF zu lesen. D.h. jeder weiter Aufruf von get hört sofort wieder mit dem Lesen auf, weil er auf das LF Deiner ersten Eingabe stößt und kommt mit 0 Bytes zurück.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988049</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 06 Feb 2006 20:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Tue, 07 Feb 2006 07:23:34 GMT]]></title><description><![CDATA[<p>Du könntest ja statt get() getline() verwenden, das schluckt afaik das \n am Ende der Eingabe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988181</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 07 Feb 2006 07:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Array-Übergabe an eine Funktion - Wie? on Tue, 07 Feb 2006 08:49:55 GMT]]></title><description><![CDATA[<p>THX. Dann mache ich es mit Visual.</p>
<p>mfg</p>
<p>AranankA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988241</guid><dc:creator><![CDATA[AranankA]]></dc:creator><pubDate>Tue, 07 Feb 2006 08:49:55 GMT</pubDate></item></channel></rss>