<?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[Es funktioniert nicht so, wie ich es will]]></title><description><![CDATA[<p>Hallo, und zwar wollte ich euch mal fragen, ob ihr mir helfen könnt.</p>
<p>Ich hab eine Aufgabe bekommen, ich hab sie auch soweit gelöst (Menu + Swap), aber mein Problem ist, die Aufgabe 1 &amp; 2.</p>
<p>Und zwar ist bei mir der Fall, dass, egal welche Zahlen ich eingebe (!), immer derselbe Wert (Zeiger/Referenz) rauskommt (Bei mir im Code ist es die Funktion 2).<br />
Und laut der Aufgabe soll das nicht so sein, oder?</p>
<p>Ich hab wirklich alles versucht,ich bin mit mein Wissen am Ende,....</p>
<p>Entweder kommt nicht das raus, was ich will oder es kommt immer ein Fehler (sobald ich versuche, es so zu ändern, wie es verlangt wurde).</p>
<p>Ich wäre euch sehr dankbar, wenn ihr mir helfen könntet.<br />
Hier die Aufgabe:</p>
<p>Es soll ein Programm erstellt werden, in dem dann das<br />
Verhalten von Variablen und zugehörigen Zeigervariablen mittels Funktionen demonstriert<br />
werden soll. In dem Programm sind daher 2 Variable (z.B. a,b) eines ausgewählten Typs zu<br />
deklarieren und geeignet zu initialisieren, sowie 2 Zeigervariable auf diesen Typ (z.B. pa und<br />
pb), welche anfänglich auf die beiden Variablen verweisen.<br />
Dann sind folgende Funktionen zu erstellen, wobei die Variablen bzw. Zeigervariablen als<br />
Parameter zu übergeben sind (keine globalen Größen!!). Legen Sie jeweils die passende<br />
Übergabetechnik (Call by Value/Reference) fest.</p>
<ol>
<li>
<p>2 Funktionen mit dem (gleichen) Namen inputValue zur Eingabe der Werte der beiden<br />
Variablen über Tastatur. Die eine Funktion hat dabei Referenzen als Parameter , die<br />
andere hat die beiden Zeigervariablen als Parameter.</p>
</li>
<li>
<p>2 Funktionen mit dem (gleichen) Namen outputValue zur Anzeige der Werte der beiden<br />
Variablen am Bildschirn. Die eine Funktion hat dabei die Variablen selbst als Parameter,<br />
die andere hat die beiden Zeigervariablen als Parameter.</p>
</li>
</ol>
<p>Das Programm main soll dann ein Menue enthalten, in welchem der Nutzer wiederholt eine der<br />
Funktionen auswählen und aufrufen bzw. das Programm beenden kann.<br />
Für alle Funktionen (ohne main) sind Entwurf und Testplan zu erstellen.</p>
<p>Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void inputValue(int a, int b)
{
}

void inputValue(int *pa, int *pb)
{

}

void outputValue(int a, int b)
{

}

void outputValue(int *pa, int *pb)
{
}

void swap(int *pa, int *pb)
{
	int tmp;
	tmp=*pa;
	*pa=*pb;
	*pb=tmp;
}

int main()
{
	int a,b;
	int auswahl;
	bool wiederholung=true;

	do
	{

		cout&lt;&lt;&quot;Welchen Befehl wollen sie durchfuehren&quot;&lt;&lt;endl&lt;&lt;endl;
		cout&lt;&lt;&quot;Zahlen eingeben (1)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Referenz ausgeben (2)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Swap-Funktion (3)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Programm beenden (4)&quot;&lt;&lt;endl;
		cin&gt;&gt;auswahl;

		system(&quot;cls&quot;);

		switch (auswahl)
		{
		case 1:
		{

			cout&lt;&lt;&quot;Geben Sie Ihre Zahlen an :&quot;&lt;&lt;endl;

			cin&gt;&gt;a;

			cin&gt;&gt;b;
		}

		break;

		case 2:
		{
			cout&lt;&lt;&quot;  A ist = &quot;&lt;&lt;&amp;a&lt;&lt;endl;
			cout&lt;&lt;&quot;  B ist = &quot;&lt;&lt;&amp;b&lt;&lt;endl;
		}
		break;

		case 3:
		{

			inputValue(a,b);
			swap(a,b);
			outputValue(a,b);

			cout&lt;&lt;&quot;  A ist = &quot;&lt;&lt;a&lt;&lt;endl;
			cout&lt;&lt;&quot;  B ist = &quot;&lt;&lt;b&lt;&lt;endl;
		}
		break;

		case 4:
			wiederholung=false;
			break;
		}

	} while (wiederholung ==true);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/298018/es-funktioniert-nicht-so-wie-ich-es-will</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 20:01:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298018.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Jan 2012 19:46:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Wed, 11 Jan 2012 19:57:59 GMT]]></title><description><![CDATA[<p>Hallo, und zwar wollte ich euch mal fragen, ob ihr mir helfen könnt.</p>
<p>Ich hab eine Aufgabe bekommen, ich hab sie auch soweit gelöst (Menu + Swap), aber mein Problem ist, die Aufgabe 1 &amp; 2.</p>
<p>Und zwar ist bei mir der Fall, dass, egal welche Zahlen ich eingebe (!), immer derselbe Wert (Zeiger/Referenz) rauskommt (Bei mir im Code ist es die Funktion 2).<br />
Und laut der Aufgabe soll das nicht so sein, oder?</p>
<p>Ich hab wirklich alles versucht,ich bin mit mein Wissen am Ende,....</p>
<p>Entweder kommt nicht das raus, was ich will oder es kommt immer ein Fehler (sobald ich versuche, es so zu ändern, wie es verlangt wurde).</p>
<p>Ich wäre euch sehr dankbar, wenn ihr mir helfen könntet.<br />
Hier die Aufgabe:</p>
<p>Es soll ein Programm erstellt werden, in dem dann das<br />
Verhalten von Variablen und zugehörigen Zeigervariablen mittels Funktionen demonstriert<br />
werden soll. In dem Programm sind daher 2 Variable (z.B. a,b) eines ausgewählten Typs zu<br />
deklarieren und geeignet zu initialisieren, sowie 2 Zeigervariable auf diesen Typ (z.B. pa und<br />
pb), welche anfänglich auf die beiden Variablen verweisen.<br />
Dann sind folgende Funktionen zu erstellen, wobei die Variablen bzw. Zeigervariablen als<br />
Parameter zu übergeben sind (keine globalen Größen!!). Legen Sie jeweils die passende<br />
Übergabetechnik (Call by Value/Reference) fest.</p>
<ol>
<li>
<p>2 Funktionen mit dem (gleichen) Namen inputValue zur Eingabe der Werte der beiden<br />
Variablen über Tastatur. Die eine Funktion hat dabei Referenzen als Parameter , die<br />
andere hat die beiden Zeigervariablen als Parameter.</p>
</li>
<li>
<p>2 Funktionen mit dem (gleichen) Namen outputValue zur Anzeige der Werte der beiden<br />
Variablen am Bildschirn. Die eine Funktion hat dabei die Variablen selbst als Parameter,<br />
die andere hat die beiden Zeigervariablen als Parameter.</p>
</li>
</ol>
<p>Das Programm main soll dann ein Menue enthalten, in welchem der Nutzer wiederholt eine der<br />
Funktionen auswählen und aufrufen bzw. das Programm beenden kann.<br />
Für alle Funktionen (ohne main) sind Entwurf und Testplan zu erstellen.</p>
<p>Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void inputValue(int a, int b)
{
}

void inputValue(int *pa, int *pb)
{

}

void outputValue(int a, int b)
{

}

void outputValue(int *pa, int *pb)
{
}

void swap(int *pa, int *pb)
{
	int tmp;
	tmp=*pa;
	*pa=*pb;
	*pb=tmp;
}

int main()
{
	int a,b;
	int auswahl;
	bool wiederholung=true;

	do
	{

		cout&lt;&lt;&quot;Welchen Befehl wollen sie durchfuehren&quot;&lt;&lt;endl&lt;&lt;endl;
		cout&lt;&lt;&quot;Zahlen eingeben (1)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Referenz ausgeben (2)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Swap-Funktion (3)&quot;&lt;&lt;endl;
		cout&lt;&lt;&quot;Programm beenden (4)&quot;&lt;&lt;endl;
		cin&gt;&gt;auswahl;

		system(&quot;cls&quot;);

		switch (auswahl)
		{
		case 1:
		{

			cout&lt;&lt;&quot;Geben Sie Ihre Zahlen an :&quot;&lt;&lt;endl;

			cin&gt;&gt;a;

			cin&gt;&gt;b;
		}

		break;

		case 2:
		{
			cout&lt;&lt;&quot;  A ist = &quot;&lt;&lt;&amp;a&lt;&lt;endl;
			cout&lt;&lt;&quot;  B ist = &quot;&lt;&lt;&amp;b&lt;&lt;endl;
		}
		break;

		case 3:
		{

			inputValue(a,b);
			swap(a,b);
			outputValue(a,b);

			cout&lt;&lt;&quot;  A ist = &quot;&lt;&lt;a&lt;&lt;endl;
			cout&lt;&lt;&quot;  B ist = &quot;&lt;&lt;b&lt;&lt;endl;
		}
		break;

		case 4:
			wiederholung=false;
			break;
		}

	} while (wiederholung ==true);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166966</guid><dc:creator><![CDATA[chestor00]]></dc:creator><pubDate>Wed, 11 Jan 2012 19:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Wed, 11 Jan 2012 20:34:30 GMT]]></title><description><![CDATA[<p>du hast in deinem menu in punkt 2 glaub ich &quot;referenzen ausgeben&quot;. weisst du überhaupt was referenzen sind?</p>
<p>das sind quasi andere namen für ein-und-dieselbe variable. deklariert wird das mit dem kaufmännischen und zeichen</p>
<p>beispiel:</p>
<pre><code class="language-cpp">int a = 5;
int &amp; refA = a; // a und refA 'zeigen' auf den gleichen speicherplatz, sprich sind gleich

cout &lt;&lt; a &lt;&lt; endl; // &quot;5&quot;
cout &lt;&lt; refA &lt;&lt; endl; // &quot;5&quot;
// hier sind a und damit auch refA gleich 5
a = 6;
cout &lt;&lt; a &lt;&lt; endl; // &quot;6&quot;
cout &lt;&lt; refA &lt;&lt; endl; // &quot;6&quot;
refA = 7;
cout &lt;&lt; a &lt;&lt; endl; // &quot;7&quot;
cout &lt;&lt; refA &lt;&lt; endl; // &quot;7&quot;
</code></pre>
<p>soweit verstanden?</p>
<p>also wie zeiger, nur der umweg über die dereferenzierung(*ptA = 5;) fällt weg.</p>
<p>und das sollst du jetzt in die funktionen einbauen:</p>
<pre><code class="language-cpp">void inputValue(int &amp; a, int &amp; b) // referenzen als parameter
{
    cin &gt;&gt; a &gt;&gt; b;
}

void inputValue(int * pa, int * pb) // zeigerals parameter
{
    cin &gt;&gt; *pa &gt;&gt; *pb;
}

void outputValue(int const&amp; a, int const&amp; b)
{
    cout &lt;&lt; a &lt;&lt; &quot;, &quot; &lt;&lt; b &lt;&lt; endl;
}

void outputValue(int const *const pa, int const * const pb)
{
    cout &lt;&lt; pa &lt;&lt; &quot;, &quot; &lt;&lt; pb &lt;&lt; endl;
}

int main()
{
    int a = 5;
    int b = 6;
    // ...

    inputValue(a, b); // referenz !!
    // ...
    inputValue(&amp;a, &amp;b); // per zeiger !

    // ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166980</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 11 Jan 2012 20:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Thu, 12 Jan 2012 08:51:39 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Das sind ja viele const <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>
<pre><code class="language-cpp">void outputValue(int const *const pa, int const * const pb)
{
    cout &lt;&lt; pa &lt;&lt; &quot;, &quot; &lt;&lt; pb &lt;&lt; endl;
}
</code></pre>
<p>Ist alles korrekt, aber macht es auch Sinn? Das jeweils erste const bezieht sich auf den Wert, auf den der Pointer zeigt. Es macht Sinn diesen als const zu deklarieren. Der Aufrufer weiss dann, dass die Funktion den Wert nicht verändert.</p>
<p>Das jeweils 2te const bezieht sich auf den Pointer selbst. Welchen Sinn macht es diesen als const zu deklarieren?</p>
<p>Gibt es eigentlich einen Unterschied zwischen den folgenden Funktionen?</p>
<pre><code class="language-cpp">void outputValue(const int *pa)
{
    cout &lt;&lt; pa &lt;&lt; endl;
}

void outputValue(int const *pa)
{
    cout &lt;&lt; pa &lt;&lt; endl;
}
</code></pre>
<p>Ich nehme immer die erste Variante und sie tut was man erwartet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167058</guid><dc:creator><![CDATA[dibada]]></dc:creator><pubDate>Thu, 12 Jan 2012 08:51:39 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Thu, 12 Jan 2012 09:11:04 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/282397" rel="nofollow">http://www.c-plusplus.net/forum/282397</a></p>
<p>Der Post von Seldon:</p>
<blockquote>
<p>char const *params ist das selbe wie const char *params - eine Zeigervariable auf char-Konstante.<br />
const char const *params ist ein Fehler; zweimal const auf char geht nicht.<br />
char *const params ist eine Zeigerkonstante auf char-Variable.</p>
<p>char const *const params ist eine Zeigerkonstante auf char-Konstante.<br />
char const *const *const params ...und so weiter halt.</p>
</blockquote>
<p>Ob es in dem Zusammenhang das gleiche ist, weiß ich nicht genau, denke aber schon..?!</p>
<p><a href="http://devmaster.net/forums/topic/2888-difference-between-const-int-i-and-int-const-i/" rel="nofollow">http://devmaster.net/forums/topic/2888-difference-between-const-int-i-and-int-const-i/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167061</guid><dc:creator><![CDATA[zuckerlie]]></dc:creator><pubDate>Thu, 12 Jan 2012 09:11:04 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Thu, 12 Jan 2012 09:36:59 GMT]]></title><description><![CDATA[<p>'S hilft da von Rechts nach Links zu lesen</p>
<pre><code class="language-cpp">IDENTIFIER///Bezeichner von..
const  ///Konstantem
*      ///Zeiger (auf)
const  ///Konstantes
char   ///Objekt

char const * const IDENTIFIER;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167072</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Jan 2012 09:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Thu, 12 Jan 2012 10:09:46 GMT]]></title><description><![CDATA[<p>genau, das mit dem von rechts nach links ist gold wert.</p>
<p>aber es geht hier ja nicht um const sondern eigentlich um die aufgabe. dazu hat sich der TE ja noch überhaupt nicht mehr geäussert</p>
<p>das const kann man machen, muss man nicht und dass ichs was übertrieben hab war zu meinem persönlichen spass <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/2167083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167083</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 12 Jan 2012 10:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to Es funktioniert nicht so, wie ich es will on Fri, 20 Jan 2012 15:33:34 GMT]]></title><description><![CDATA[<p>Habe es hinbekommen, war bei einem guten Kollegen, der gut c++ programmieren kann.<br />
Er hat es mir auch richtig gut erklärt und ich habe alles verstanden.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18806">@SkyM0sh0</a>: Dein Code war richtig, genauso musste ich das machen.<br />
Danke für die Antwort <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>Auch an alle anderen Danke, die mir helfen wollten <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/2170548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2170548</guid><dc:creator><![CDATA[chestor00]]></dc:creator><pubDate>Fri, 20 Jan 2012 15:33:34 GMT</pubDate></item></channel></rss>