<?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[richtige Datenübergabe?]]></title><description><![CDATA[<p>Hi,</p>
<p>habe mal wieder ein Problem, nach dem ich mein Progrämmchen etwas modelliert habe. Habe hier die Funktion Zaehler():</p>
<pre><code>[cpp]
//Fukntion die Aufgaben des Users zählt
void Zaehler(SINT wahl) {
	//...
	//Variable a gibt die Aufgaben die User rechnen will an
	for(int a = 0; a &lt;= anzahl; a++) {
		if(a &lt; anzahl &amp;&amp; wahl == 1) {
			Add(); //hier wied Add() aufgerufen, [b]Add enthält richtige![/b]
		}
		//....
	}
	//Hier wird eine kleine Zusammenfassung ausgegeben
        //Anzahl stammt aus Funktion [b]richtige soll aus Add() kommen[/b]
	cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;
	//.....
}
[/cpp]
</code></pre>
<p>Diese Funktion ruft die Funktion Add() auf, die eine Variable richtige enthält.</p>
<pre><code>[cpp]
//Funktion zum Addieren, dann wird testen aufgerufen
void Add() {
	SINT richtige = 0; //Variable die die richtigen Ergebnisse zählt
	//...
	if(Test(z,ergebnis) == true) {
		richtige++; 
	}
}
[/cpp]
</code></pre>
<p>Bei jedem richtigen Ergebnis wird richtige um 1 erhöht. Nun möchte ich die Variable richtige an die aufrufende Funktion Zaehler() zurück geben. Dann müsste die Funktion Add() doch so aussehen oder?</p>
<pre><code>[cpp]
SINT Add() {
    //...
    return richtige;
}
[/cpp]
</code></pre>
<p>Warum, kann ich richtige jetzt nicht in Zähler nutzen? Hoffe ihr könnt mir helfen. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150563/richtige-datenübergabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 18:23:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150563.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Jun 2006 22:35:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 22:45:06 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>habe mal wieder ein Problem, nach dem ich mein Progrämmchen etwas modelliert habe. Habe hier die Funktion Zaehler():</p>
<pre><code>[cpp]
//Fukntion die Aufgaben des Users zählt
void Zaehler(SINT wahl) {
	//...
	//Variable a gibt die Aufgaben die User rechnen will an
	for(int a = 0; a &lt;= anzahl; a++) {
		if(a &lt; anzahl &amp;&amp; wahl == 1) {
			Add(); //hier wied Add() aufgerufen, [b]Add enthält richtige![/b]
		}
		//....
	}
	//Hier wird eine kleine Zusammenfassung ausgegeben
        //Anzahl stammt aus Funktion [b]richtige soll aus Add() kommen[/b]
	cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;
	//.....
}
[/cpp]
</code></pre>
<p>Diese Funktion ruft die Funktion Add() auf, die eine Variable richtige enthält.</p>
<pre><code>[cpp]
//Funktion zum Addieren, dann wird testen aufgerufen
void Add() {
	SINT richtige = 0; //Variable die die richtigen Ergebnisse zählt
	//...
	if(Test(z,ergebnis) == true) {
		richtige++; 
	}
}
[/cpp]
</code></pre>
<p>Bei jedem richtigen Ergebnis wird richtige um 1 erhöht. Nun möchte ich die Variable richtige an die aufrufende Funktion Zaehler() zurück geben. Dann müsste die Funktion Add() doch so aussehen oder?</p>
<pre><code>[cpp]
SINT Add() {
    //...
    return richtige;
}
[/cpp]
</code></pre>
<p>Warum, kann ich richtige jetzt nicht in Zähler nutzen? Hoffe ihr könnt mir helfen. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079777</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sat, 17 Jun 2006 22:45:06 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 22:57:24 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>weil du die Rückgabe von Add irgendwo zuwesien mußt, damit das irgendeinen Effekt hat.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079785</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 17 Jun 2006 22:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 22:59:38 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du dir nochmal ein Tutorial oder ein Buch durchlesen. Das gehört zu den Grundlagen.</p>
<p>Du musst den Rückgabewert einer Variablen zuweisen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int add() {
  int wert = 0;
  // mach was mit wert
  return wert;
}

int main() {
  int bla = add();
  std::cout &lt;&lt; bla;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1079788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079788</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sat, 17 Jun 2006 22:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 23:03:23 GMT]]></title><description><![CDATA[<p>danke für den tipp,</p>
<p>bin ja noch am lernen. hab seit 2 wochen nen Buch. Habe das Motto: learning by doing! <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>
<p>Bis dann!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079790</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sat, 17 Jun 2006 23:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 23:06:58 GMT]]></title><description><![CDATA[<p>timkon schrieb:</p>
<blockquote>
<p>Habe das Motto: learning by doing! <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>
</blockquote>
<p>Liest erst und programmier dann nach. <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 />
Ansonsten ist das Motto gut. <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/1079791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079791</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sat, 17 Jun 2006 23:06:58 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sat, 17 Jun 2006 23:58:13 GMT]]></title><description><![CDATA[<p>Das Problem ist jetzt nur, wenn ich</p>
<pre><code>[cpp]
//Fukntion die Aufgaben des Users zählt
void Zaehler(SINT wahl) {
	SINT anzahl; //Variable die, die Menge der Aufgaben angibt
	cout &lt;&lt; &quot;Wie viele Aufgaben moechtest du rechnen? &quot;;
	cin &gt;&gt; anzahl;
	//Variable a gibt die Aufgaben die User rechnen will an
	for(int a = 0; a &lt;= anzahl; a++) {
		if(a &lt; anzahl &amp;&amp; wahl == 1) { 
			SINT richtig = Add();
		}
		else if(a &lt; anzahl &amp;&amp; wahl == 2) {

		}
		else if(a &lt; anzahl &amp;&amp; wahl == 3) {

		}
		else if(a == anzahl) {
			//Hier wird eine Zusammenfassung ausgegeben mit anschließender Frage
			cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;
			SINT weiter;
			cout &lt;&lt; &quot;\nNeu Aufgaben [1] - Ende [2]\n&quot;;
			cout &lt;&lt; &quot;\nDeine Auswahl: &quot;;
			cin &gt;&gt; weiter;
			if(weiter == 1) {
				system(&quot;cls&quot;);
			}
			else if(weiter == 2) {
				exit(0);
			}
		}
	}
}
[/cpp]
</code></pre>
<p>schreibe, muss ich das in der if-Anweisung machen. Da ich von dort Add aufrufe. Jetzt habe ich richtige in der If-Anweisung un der for-Schleife zur Verfügung, aber nicht außerhalb dieser. Ich möchte richtige aber erst ausgeben, wenn if und for abgearbeitet sind.<br />
Außerhalb von if und for scheint richtig, dann nicht mehr vorhanden, weil er dann entweder gar nicht zählt oder nur falsch.</p>
<p>Es kommt dann der Fehler: error C2065: 'richtige' : undeclared identifier<br />
???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079798</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sat, 17 Jun 2006 23:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 00:00:59 GMT]]></title><description><![CDATA[<p>Dann musst du &quot;richtige&quot; ein wenig globaler machen. In deinem Fall würde es reichen &quot;richtige&quot; vor dem if-Block, aber im for-Block zu deklarieren:</p>
<pre><code class="language-cpp">int main() {
  for(int i=0; i&lt;...; ++i) {
     int richtige = 0;
     if(...) {
        richtige = add();
     }
  }
}
</code></pre>
<p>Außerdem sehe ich das du &quot;richtig&quot; statt &quot;richtige&quot; geschrieben hast (nur so als Hinweis).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079800</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sun, 18 Jun 2006 00:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 00:17:56 GMT]]></title><description><![CDATA[<p>Irgendwas läuft glaub ich grad falsch. <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>
<p>Hier ist Zaehler(), die Funktion ruft in for und if Add() auf.</p>
<pre><code>[cpp]
//Fukntion die Aufgaben des Users zählt
void Zaehler(SINT wahl) {
	SINT anzahl; //Variable die, die Menge der Aufgaben angibt
	cout &lt;&lt; &quot;Wie viele Aufgaben moechtest du rechnen? &quot;;
	cin &gt;&gt; anzahl;
	//Variable a gibt die Aufgaben die User rechnen will an
	for(int a = 0; a &lt;= anzahl; a++) {
		if(a &lt; anzahl &amp;&amp; wahl == 1) {
			SINT richtige = Add();	//[b]Hier ist dann richtige aus Add()[/b]
		}
		//....
		else {
			//Hier wird eine Zusammenfassung ausgegeben mit anschließender Frage
			cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;
			SINT weiter;
			cout &lt;&lt; &quot;\nNeu Aufgaben [1] - Ende [2]\n&quot;;
			cout &lt;&lt; &quot;\nDeine Auswahl: &quot;;
			cin &gt;&gt; weiter;
			if(weiter == 1) {
				system(&quot;cls&quot;);
			}
			else if(weiter == 2) {
				exit(0);
			}
		}
	}
}
[/cpp]
</code></pre>
<p>Add() sieht bei mir jetzt so aus:</p>
<pre><code>[cpp]
SINT Add() {
	SINT richtige = 0; //Variable die die richtigen Ergebnisse zählt
	unsigned int x,y; //Variablen der Zahlen für Aufgaben
	Zahlen(x,y);      //die Aufgabenzahlen werden geholt
	SINT ergebnis; //Eingabevariable des Ergebnis vom User
	cout &lt;&lt; &quot;\n&quot; &lt;&lt; x &lt;&lt; &quot; + &quot; &lt;&lt; y &lt;&lt; &quot; = &quot;;
	cin &gt;&gt; ergebnis;
	SINT z = x+y; //Richtiges Ergebnis z wird ab Test() übergeben
	//Funktion Test wird aufgerufen und testet das Ergebnis
	if(Test(z,ergebnis) == true) {
		richtige++; 
	}
	return richtige;
}
[/cpp]
</code></pre>
<p>Es funktioniert schon alles richtig mit der Datenübergabe, aber ich habe die Variable richtige dann am falschen Ort. Nämlich hier (Ausschnit aus Zaehler):</p>
<pre><code>[cpp]
//...
for(int a = 0; a &lt;= anzahl; a++) {
        if(a &lt; anzahl &amp;&amp; wahl == 1) {
            SINT richtige = Add();    //Hier ist dann richtige aus Add()
        } 
//...
[/cpp]
</code></pre>
<p>Bräuchte sie aber hier, außerhalb von for und if, bräuchte sie ind er ganzen Funktoin Zaehler.</p>
<pre><code>[cpp]
//...
else {
			//Hier wird eine Zusammenfassung ausgegeben mit anschließender Frage
			cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;
//...
[/cpp]
</code></pre>
<p>Bin ich zu blöd dazu oder was is los? <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="🙂"
    /> Schwere Sache :)!</p>
<p>Danke für Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079802</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sun, 18 Jun 2006 00:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 00:27:57 GMT]]></title><description><![CDATA[<p>Das else ist doch noch im for-Block. Wo ist da das Problem? Mach es so wie ich es geschrieben habe. Und wenn richtige auch außerhalb des for-Blocks benötigt wird, dann deklarier es auch vor dem for-Block:</p>
<pre><code class="language-cpp">int main() {
  int richtige = 0;
  for(int i=0; i&lt;...; ++i) {
     if(...) {
        richtige = add();
     }
  }
  std::cout &lt;&lt;  richtige;
}
</code></pre>
<p>Wie gesagt, du solltest erstmal in deinem Buch bis zu der entsptrechenden Stelle lesen, dann würden sicher auch weniger Probleme auftreten. Die meisten Bücher zeigen in welchen Gültigkeitsbereichen eine Variable zugreifbar ist und wann nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079803</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sun, 18 Jun 2006 00:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 00:46:47 GMT]]></title><description><![CDATA[<p>Ok is ja gut :), also es funktioniert jetzt... fast. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Aber ich habe festgestellt, dass richtige immer 1 bleibt.</p>
<p>Ich rufe Add() auf, das Ergebnis aus Add() wird an eine Funktion Test übergeben, die dann true oder false zurück liefert.</p>
<p>So, jetzt hat Test true geliefert, also ist richtige = 1. Ist ja auch korrekt. Dann beginnt das Spiel innerhalb der Vorschleife, von vorne zB. 3 mal. Da die Funktion Test dann wieder true liefert (bei richtigem Ergebnis) ist richtige dann wieder 1. Es erhöht sich nicht, habe ich das richtig erklärt/vertanden?</p>
<p>Kann man das irgendwie ändern?</p>
<pre><code>[cpp]
void Mul() {
	int richtige = 0; //Variable die die richtigen Ergebnisse zählt 
	//...
	//Schleife for wird so oft durchlaufen wie der User vorgibt
	for(int i = 0; i &lt;= anzahl; i++) {
		if(i &lt; anzahl) {
			//...
			if(Test(z,ergebnis) == true) //Funktion Test wird aufgerufen
                richtige++; 
		}
		else if(i == anzahl) {
			cout &lt;&lt; &quot;Du hast von &quot; &lt;&lt; anzahl &lt;&lt; &quot; Aufgaben &quot; &lt;&lt; richtige &lt;&lt; &quot; richtig beantwortet.\n&quot;;

		}
	}
} 

[/cpp]
</code></pre>
<p>Hier wird es zB erhöht, da die Funktion nicht verlassen wird.<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079804</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sun, 18 Jun 2006 00:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 00:55:45 GMT]]></title><description><![CDATA[<p>Dann musst du richtige in der Funktion statisch machen oder du machst die Variable global oder du übergibst die Variable jedes mal neu. Du initialisierst sie immer mit 0, wenn du sie dann erhöhst ist sie auch immer 1.</p>
<p>Du könntest aus Add() sowas machen:</p>
<pre><code class="language-cpp">int Add(int richtige) {
  if(...) ++richtige;

  return richtige;
}

int main() {
  int richtige = 0;
  richtige = Add(richtige); // Wenn if true ergibt ist richtige jetzt 1
  richtige = Add(richtige); // Wenn if nochmal true ergibt ist richtige jetzt 2
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1079805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079805</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sun, 18 Jun 2006 00:55:45 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 01:10:03 GMT]]></title><description><![CDATA[<p>Supi, besten Dank! Jetzt bin ich zufrieden und hab wieder ne Menge gelernt, <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="🙂"
    /> klasse!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079806</guid><dc:creator><![CDATA[timkon]]></dc:creator><pubDate>Sun, 18 Jun 2006 01:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to richtige Datenübergabe? on Sun, 18 Jun 2006 06:01:03 GMT]]></title><description><![CDATA[<p>Oder lies mal was über Pointer und Referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079817</guid><dc:creator><![CDATA[KennerDerDinger]]></dc:creator><pubDate>Sun, 18 Jun 2006 06:01:03 GMT</pubDate></item></channel></rss>