<?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[Switch-Anweisung mit Variabler Fallzahl]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich Programmiere gerade auf C++, um ein immer gleiches Schema zu automatisieren.<br />
Dabei bin ich auf das Problem gestoßen, dass ich es nicht schaffe eine Switch-Anweisung zu schreiben, die durchaus eine unterschiedliche Länge haben kann.</p>
<p>Meine Idee ist folgende:<br />
ich lege meine Variable &quot;int anz&quot; an, in der die Anzahl der verwendeten Dateien gespeichert ist. Damit erstelle ich ein Array mit den entsprechenden Dateinamen &quot;string skriptname[anz]. Im Anschluss an das anlegen überprüfe ich das nocheinmal und hätte gerne die Möglichkeit die Namen zu ändern. Bisher sieht mein Gedankengerüst so aus:</p>
<p>...</p>
<p>int anz;<br />
cin &gt;&gt; anz;<br />
string skriptname [anz];</p>
<p>int i;</p>
<p>while (i&lt;anz) {</p>
<p>string temp_name;<br />
cin &gt;&gt; temp_name;<br />
skriptname[i] = temp_name;<br />
i++</p>
<p>}</p>
<p>// Die Ausgabe der Namen mit ID-Nummern steht hier</p>
<p>cout &lt;&lt; &quot;Möchten Sie einen Namen ändern?&quot;<br />
int temp_number;<br />
cin &gt;&gt; temp_number;<br />
cout &lt;&lt; endl;</p>
<p>switch (temp_number) {</p>
<p>case 1: ...<br />
case 2: ...</p>
<p>...<br />
case anz-1 : ...</p>
<p>}</p>
<p>Kennt ihr eine Möglichkeit soetwas zu realisieren?</p>
<p>Vielen Dank für die Gedanken und Hilfen die ihr mir gebt!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334563/switch-anweisung-mit-variabler-fallzahl</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 14:54:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334563.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Sep 2015 15:51:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Switch-Anweisung mit Variabler Fallzahl on Tue, 22 Sep 2015 15:51:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich Programmiere gerade auf C++, um ein immer gleiches Schema zu automatisieren.<br />
Dabei bin ich auf das Problem gestoßen, dass ich es nicht schaffe eine Switch-Anweisung zu schreiben, die durchaus eine unterschiedliche Länge haben kann.</p>
<p>Meine Idee ist folgende:<br />
ich lege meine Variable &quot;int anz&quot; an, in der die Anzahl der verwendeten Dateien gespeichert ist. Damit erstelle ich ein Array mit den entsprechenden Dateinamen &quot;string skriptname[anz]. Im Anschluss an das anlegen überprüfe ich das nocheinmal und hätte gerne die Möglichkeit die Namen zu ändern. Bisher sieht mein Gedankengerüst so aus:</p>
<p>...</p>
<p>int anz;<br />
cin &gt;&gt; anz;<br />
string skriptname [anz];</p>
<p>int i;</p>
<p>while (i&lt;anz) {</p>
<p>string temp_name;<br />
cin &gt;&gt; temp_name;<br />
skriptname[i] = temp_name;<br />
i++</p>
<p>}</p>
<p>// Die Ausgabe der Namen mit ID-Nummern steht hier</p>
<p>cout &lt;&lt; &quot;Möchten Sie einen Namen ändern?&quot;<br />
int temp_number;<br />
cin &gt;&gt; temp_number;<br />
cout &lt;&lt; endl;</p>
<p>switch (temp_number) {</p>
<p>case 1: ...<br />
case 2: ...</p>
<p>...<br />
case anz-1 : ...</p>
<p>}</p>
<p>Kennt ihr eine Möglichkeit soetwas zu realisieren?</p>
<p>Vielen Dank für die Gedanken und Hilfen die ihr mir gebt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468787</guid><dc:creator><![CDATA[mowlpowl]]></dc:creator><pubDate>Tue, 22 Sep 2015 15:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Anweisung mit Variabler Fallzahl on Tue, 22 Sep 2015 16:07:56 GMT]]></title><description><![CDATA[<p>Was hindert dich daran, <code>skriptname[temp_number] = neuer_name;</code> zu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468789</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Tue, 22 Sep 2015 16:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Switch-Anweisung mit Variabler Fallzahl on Tue, 22 Sep 2015 20:09:08 GMT]]></title><description><![CDATA[<p>Das &quot;Switch Statement&quot; ist leider nur für konstante Integer-artige Vergleichsgrößen geeignet. D.h., im Argument von switch steht zwar ne Variable, aber bei den cases stehen nur Konstanten.</p>
<p>Soll cin eigentlich später redirected werden, so dass man die Eingabe auch aus einer Datei lesen kann? Das würde ja für Automatisierung durchaus Sinn machen.<br />
Für Tastatureingaben ist cin eher behelfsmäßig zu sehen, weil es zu viele Fehlerquellen bietet.<br />
Kannst du noch was zum Betriebssystem sagen, unter dem das laufen soll?</p>
<p>So gehts prinzipiell, ist aber nicht besonders elegant:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

int main(void){

	int anz;
	cin &gt;&gt; anz;
	string skriptname [anz];

	int i;

	while (i&lt;anz) {

		string temp_name;
		cin &gt;&gt; temp_name;
		skriptname[i] = temp_name;
		i++;

	}

	// Die Ausgabe der Namen mit ID-Nummern steht hier

	cout &lt;&lt; &quot;Möchten Sie einen Namen ändern?&quot;;
	int temp_number;
	cin &gt;&gt; temp_number;
	cout &lt;&lt; endl;

	if (1 == temp_number){

	}else if (2 == temp_number){

	}else if (2 == temp_number){

	}else if (anz-1 == temp_number){
	}
}
</code></pre>
<p>Sinnvoller wäre es mit Callbacks zu arbeiten, die man für jeden Fall registriert.<br />
Also z.B. (schematisch):</p>
<pre><code>void callbackFnc1(void){}
void callbackFnc2(void){}
...

class script{
private:
   int maxScriptCount;
   vector&lt;std::string&gt; scriptsNames;
   std::map&lt;int, void(*callb)(void)&gt; callbackMapper;
public:
   \1::script(void):maxScriptCount(10){};
   int getScriptCount(void);
   int registerScript(int nr, string scriptName, void (*callb)(void));
   int call(int nr){callbackMapper[nr]()};
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2468808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468808</guid><dc:creator><![CDATA[MC78]]></dc:creator><pubDate>Tue, 22 Sep 2015 20:09:08 GMT</pubDate></item></channel></rss>