<?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[Übergabe von mehreren Variablen von Unter- an Haptprogramm]]></title><description><![CDATA[<p>Hallo liebe cpp-Experten,</p>
<p>ich möchte ein Programm mit einem Unterprogramm schreiben, das mehrere im Unterprogramm geänderte Variable an das Hauptprogramm zurückgibt.</p>
<p>Da es bei cpp keine common-Blocks gibt wie bei Fortran habe ich damit Probleme.</p>
<p>Meine Frage an Euch: Wie muss das nachstehende einfache Testprogramm geändert werden, damit die im Unterprogramm geänderten Werte von x,y, und z an das Hauptprogramm übergeben werden und damit der zweite Ausdruck von x,y, und z 2,3,4 ergibt?</p>
<p>Gruß<br />
heinz-georg187</p>
<p>//Test Subroutinen<br />
#include &lt;iostream&gt;<br />
#include &lt;math.h&gt;<br />
using namespace std;<br />
float add (float , float , float ); // Funktionsprototyp<br />
float x=1;<br />
float y=1;<br />
float z=1;<br />
int main(){<br />
cout&lt;&lt;&quot;\n&quot;&lt;&lt;&quot; x = &quot;&lt;&lt; x;<br />
cout&lt;&lt;&quot;\n&quot;&lt;&lt;&quot; y = &quot;&lt;&lt; y;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;<br />
add(x,y,z);<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; x = &quot;&lt;&lt; x;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; y = &quot;&lt;&lt; y;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;<br />
char response;<br />
std:cin &gt;&gt; response;<br />
return 0;<br />
}<br />
float add (float x,float y, float z) {<br />
x= x+1;<br />
y=y+2;<br />
z= z+3;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;</p>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/314054/übergabe-von-mehreren-variablen-von-unter-an-haptprogramm</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 20:57:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/314054.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Feb 2013 09:21:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 09:21:18 GMT]]></title><description><![CDATA[<p>Hallo liebe cpp-Experten,</p>
<p>ich möchte ein Programm mit einem Unterprogramm schreiben, das mehrere im Unterprogramm geänderte Variable an das Hauptprogramm zurückgibt.</p>
<p>Da es bei cpp keine common-Blocks gibt wie bei Fortran habe ich damit Probleme.</p>
<p>Meine Frage an Euch: Wie muss das nachstehende einfache Testprogramm geändert werden, damit die im Unterprogramm geänderten Werte von x,y, und z an das Hauptprogramm übergeben werden und damit der zweite Ausdruck von x,y, und z 2,3,4 ergibt?</p>
<p>Gruß<br />
heinz-georg187</p>
<p>//Test Subroutinen<br />
#include &lt;iostream&gt;<br />
#include &lt;math.h&gt;<br />
using namespace std;<br />
float add (float , float , float ); // Funktionsprototyp<br />
float x=1;<br />
float y=1;<br />
float z=1;<br />
int main(){<br />
cout&lt;&lt;&quot;\n&quot;&lt;&lt;&quot; x = &quot;&lt;&lt; x;<br />
cout&lt;&lt;&quot;\n&quot;&lt;&lt;&quot; y = &quot;&lt;&lt; y;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;<br />
add(x,y,z);<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; x = &quot;&lt;&lt; x;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; y = &quot;&lt;&lt; y;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;<br />
char response;<br />
std:cin &gt;&gt; response;<br />
return 0;<br />
}<br />
float add (float x,float y, float z) {<br />
x= x+1;<br />
y=y+2;<br />
z= z+3;<br />
cout&lt;&lt; &quot;\n&quot;&lt;&lt;&quot; z = &quot;&lt;&lt; z;</p>
<p>}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299875</guid><dc:creator><![CDATA[heinz-georg187]]></dc:creator><pubDate>Tue, 19 Feb 2013 09:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 09:31:11 GMT]]></title><description><![CDATA[<p>Hallo und willkommen.</p>
<p>Ich war mir selbst nicht ganz schlüssig was du meinst aber ich denke, du meinst Funktionen.</p>
<p>Für dein Problem gibt es drei Lösungen:<br />
-Rückgabewerte<br />
-Call-By-Pointer<br />
-Call-By-Reference</p>
<p>Wenn du drei Instanzen mit einem Funktionsaufruf ändern möchtest, musst du zu einem der beiden letzten greifen, es sei denn du machst dir einen eigenen Datentyp nur für die Funktion, was ein bisschen overkill wäre.</p>
<p>Da Call-By-Pointer unnötige Nachteile im Vergleich zu Call-By-Reference hat, ist es klar was du am besten verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299876</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Tue, 19 Feb 2013 09:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 09:39:33 GMT]]></title><description><![CDATA[<p>Nachtrag:<br />
1. Nutze C++-Code-Tags, das Lesen wird massiv vereinfacht.<br />
2. <code>#include &lt;math.h&gt;</code> ist nicht erlaubt, schreibe stattdessen <code>&lt;cmath&gt;</code> (obwohl du den Header hier gar nicht brauchst.<br />
3. Der Funktionsprototyp ist unnötig.<br />
4. Globale Variablen sind nicht schön.<br />
5. Wenn du einen Rückgabetyp deklarierst, solltest du auch etwas zurückgeben.<br />
6. Statt <code>n = n + x;</code> kannst du <code>n += x;</code> schreiben.<br />
7. Statt <code>float</code> hätte hier auch ein ganzzahliger Datentyp gereicht.<br />
8. Ich sehe keinen Sinn bei der Variable <code>response</code> .<br />
9. Die <code>main</code> -Funktion braucht kein explizites <code>return 0;</code> .</p>
<p>Codebeispiel:</p>
<pre><code>#include &lt;iostream&gt; 
void Add(float&amp; x, float&amp; y, float&amp; z)
{
    x += 1; 
    y += 2; 
    z += 3; 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; z = &quot; &lt;&lt; z; 
}
int main()
{ 
    float x = 1;
    float y = 1;
    float z = 1;
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; x = &quot; &lt;&lt; x; 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; y = &quot; &lt;&lt; y; 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; z = &quot; &lt;&lt; z; 
    Add(x, y, z); 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; x = &quot; &lt;&lt; x; 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; y = &quot; &lt;&lt; y; 
    std::cout &lt;&lt; '\n' &lt;&lt; &quot; z = &quot; &lt;&lt; z;
    char response; 
    std:cin &gt;&gt; response; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2299877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299877</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Tue, 19 Feb 2013 09:39:33 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Thu, 12 Jun 2014 10:40:47 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299878</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 09:47:53 GMT]]></title><description><![CDATA[<p>Wieso</p>
<p>Swordfish schrieb:</p>
<blockquote>
<pre><code class="language-cpp">friend point_3d_t add( point_3d_t lhs, point_3d_t rhs );
</code></pre>
</blockquote>
<p>statt</p>
<pre><code>friend point_3d_t operator+ (point_3d_t const&amp; Lhs, point_3d_t const&amp; Rhs);
point_3d_t&amp; operator+= (point_3d_t const&amp; Rhs);
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299879</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Tue, 19 Feb 2013 09:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 09:49:20 GMT]]></title><description><![CDATA[<p>MarcoYolo hat dir schon die technisch passenden Antworten gegeben. Eine weitere erwähnenswerte Möglichkeit wäre std::tuple (aus dem neuen Standard), insbesondere zusammen mit std::tie. Das sähe dann so aus:</p>
<pre><code>#include &lt;tuple&gt;
#include &lt;iostream&gt;

using namespace std;

tuple&lt;float, float, float&gt; add(float x, float y, float z)
{
  return make_tuple(x+1, y+2, z+3);
}

int main()
{
  float x = 1, y = 2, z = 3;
  cout &lt;&lt; &quot;Vorher: x = &quot; &lt;&lt; x &lt;&lt; &quot; y = &quot; &lt;&lt; y &lt;&lt; &quot; z = &quot; &lt;&lt; z &lt;&lt; '\n';
  tie(x,y,z) = add(x,y,z);
  cout &lt;&lt; &quot;Nachher: x = &quot; &lt;&lt; x &lt;&lt; &quot; y = &quot; &lt;&lt; y &lt;&lt; &quot; z = &quot; &lt;&lt; z &lt;&lt; '\n';
}
</code></pre>
<p>Hier bietet es sich jedoch an, das Problem an sich besser zu modellieren. Deine x,y,z sollen allem Anschein nach mathematische 3D-Vektoren darstellen. Da bietet es sich doch an, diese als eigene Klasse zusammenzufassen und entsprechende Methoden zur Bearbeitung dieser Klasse anzubieten. Dies übersteigt deinen Kenntnisstand wahrscheinlich noch, aber man sollte es mal als Ausblick erwähnen, da es die &quot;richtigere&quot; Lösung wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299880</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Feb 2013 09:49:20 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Thu, 12 Jun 2014 10:40:51 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299881</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 10:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 14:37:29 GMT]]></title><description><![CDATA[<p>Herzlichen Dank an MarcoYolo, Swordfish und Sepp für Eure Hilfe, die mir zugleich in Erinnerung ruft, was mir alles noch an Grundlagen fehlt. Ich stehe noch am Anfang meines Lernprozesses bei c++ (zunächst mit Hilfe des Buches von Helmut Erlenkötter). So bitte ich jetzt schon um Verständnis, dass ich Eure Hilfe wohl noch öfter in Anspruch nehmen muss.</p>
<p>Zu meinem Hintergrund.: Ich war vor etwa 50 Jahren einigermaßen fit in Fortran 4. Mein erster Fortan-Kurs war 1967 an der University of Idaho. Dann hat mich mein beruflicher Werdegang relativ früh ins Management geführt, so dass ich das Programmieren anderen überlassen musste. Um mit meinen Kindern in den 80-ger Jahren einigermaßen mitzuhalten, habe ich für den Hausgebrauch Basic gelernt.</p>
<p>Ich will jetzt als Renter mit 75 Jahren c++ lernen, um ein altes in jungen Jahren nicht zu Ende gebrachtes Projekt zu verwirklichen: die Berechnung des Bewegungsablaufes eines nur durch Schlitze gesteuerten pneumatischen Schlagbohrhammers. Dabei habe ich Vison, dies in einer Weise zu tun, von der man vor 50 Jahren noch nicht einmal träumen konnte: Die Visualisierung des Bewegungsablaufes und der sich ändernden Drücke über und unter dem Schlagkolben (z.B. Variation der Helligkeit einer Farbe) im Zeitlupentempo auf dem Bildschirm.</p>
<p>Der Weg dahin ist noch lang, aber ich betrachte das ganze nicht nur als Hobby, sondern auch als ein wenig Gehirnjogging.</p>
<p>Nun zu den einzelnen Beiträgen:</p>
<p>Den Vorschlag von MarcoYolo habe ich verstanden und auch erfolgreich getestet. Allerdings musste ich die Zeile „using namespace std“ hinzufügen, damit das Ergebnis auf dem Bildschirm sichtbar war. Ich hatte früher Probleme, die Ergebnisse der im Buch von Helmut Erlenkötter ausgewiesenen Beispielprogramme auszudrucken. Im Forum fand ich dann den Rat, die oben genannte Zeile sowie die Zeilen<br />
char reponse;<br />
std:cin&gt;&gt;response;<br />
hinzuzufügen. Danach klappte es mit dem Ausdruck auf dem Bildschirm, wobei ich allerdings nicht weiss, was die Befehle konkret bewirken.</p>
<p>Auch den Vorschlag von Swordfish konnte ich erfolgreich umsetzen. Für den Ergebnisausdruck war allerdings auch hier der Zusatz der vorab genannten Zeilen erforderlich. Zum Verständnis dieses Programmvorschlages muss ich mich aber erst noch mit dem Kapitel Pointer im Lehrbuch intensiv auseinandersetzen.</p>
<p>Die Programmversion von Sepp konnte ich nicht kompilieren und erhielt eine Fehlermeldung. Ich vermute, dass mein altes Dev-C++ die Funktion tuple noch nicht kennt.</p>
<p>Nochmals vielen Dank,</p>
<p>heinz-georg187</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299953</guid><dc:creator><![CDATA[heinz-georg187]]></dc:creator><pubDate>Tue, 19 Feb 2013 14:37:29 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 14:50:24 GMT]]></title><description><![CDATA[<p>Respekt Heinz-Georg,</p>
<p>ich finde es bemerkenswert, dass du dir noch mal ein großes Ziel gesetzt hast, ohne Druck und nur aus eigenem Interesse.<br />
Viel Glück und Erfolg dabei!</p>
<p>PS:<br />
Das Microsoft Visual Studio Express ist kostenlos erhältlich, man darf damit sogar kommerziell Software entwickeln. Solltest du mal einen Blick drauf werfen, damit hast du ein Front- und Backend aus einem Guss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299956</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 19 Feb 2013 14:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to Übergabe von mehreren Variablen von Unter- an Haptprogramm on Tue, 19 Feb 2013 14:55:24 GMT]]></title><description><![CDATA[<p>heinz-georg187 schrieb:</p>
<blockquote>
<p>Im Forum fand ich dann den Rat, die oben genannte Zeile sowie die Zeilen<br />
char reponse;<br />
std:cin&gt;&gt;response;<br />
hinzuzufügen. Danach klappte es mit dem Ausdruck auf dem Bildschirm, wobei ich allerdings nicht weiss, was die Befehle konkret bewirken.</p>
</blockquote>
<p>Du schreibst ein Konsolenprogramm, das via cout/printf etwas auf die Konsole schreibt. Normalerweise sollte man Konsolenprogramme auch aus einer Konsole starten. Du machst das jedoch nicht, sondern machst zum Beispiel einen Doppelklick auf die exe-Datei im Windows-Explorer. Windows erkennt, dass Du ein Konsolenprogramm starten willst, öffnet eine Konsole, führt das Programm aus, und wenn das Programm zu Ende gelaufen ist, schließt Windows die Konsole wieder. Deshalb siehst Du den Programmoutput nicht.</p>
<p>Mit den beiden obigen Zeilen am Programmende verhinderst Du einfach, dass das Programm sofort zu Ende ist. Es wartet nun noch auf eine Eingabe, die es in die Variable response einliest und beendet sich erst dann (und schließt auch dann erst die Konsole).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2299959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2299959</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 19 Feb 2013 14:55:24 GMT</pubDate></item></channel></rss>