Zum Inhalt springen

"switch" für nicht nummerische Werte!?


suedpfaelzer

Empfohlene Beiträge

Guybrush, er hat doch nach Alternativen gefragt. Dass das nicht geht, hat er schon gemerkt ;)

@suedpfaelzer: Du kannst natürlich eine Kaskade von if-Anweisungen benutzen. Je nachdem, was du dann daraus machen willst, kannst du auch eine Lookup-Tabelle oder einen assoziativen Container (in C++ beispielsweise std::map) benutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

du kannst auch nach char's abfragen. lass den benutzer doch einfach immer nur den ersten buchstaben eingeben... oder überprüfe nur den ersten buchstaben... weiß ja nicht was du genau machen willst.

entweder:

#include <stdio.h>

#include <stdlib.h>


int main (void)

{

   char test;


   printf ("eingabe:  \n(e)ins  \n(z)wei  \n(d)rei  \n...");

   scanf ("%c",&test);

   fflush (stdin);


   switch (test)

   {

          case 'e':

               printf("EINS\n");

               break;


          case 'z':

               printf("ZWEI\n");

               break;


          case 'd':

               printf("DREI\n");

               break;

          default:

               printf("FALSCHE EINGABE\n");

   }

   system ("pause");

}
oder:
#include <stdio.h>

#include <stdlib.h>


int main (void)

{

   char test[5] = {'\0'};


   printf ("eingabe:  \n(e)ins  \n(z)wei  \n(d)rei  \n...");

   scanf ("%s",&test);

   fflush (stdin);


   switch (test[0])

   {

          case 'e':

               printf("EINS\n");

               break;


          case 'z':

               printf("ZWEI\n");

               break;


          case 'd':

               printf("DREI\n");

               break;

          default:

               printf("FALSCHE EINGABE\n");

   }

   system ("pause");

}

ich hoffe das nützt die erstmal etwas.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also zu dem was ich genau machen will:

Befehle die in die Kommandozeile eingegeben werden (z.B. dir) sollen eingelesen werden. Spezielle Befehle (z.B. Befehle die Programmbezogen sind) sollen erkannt und in eine extra Tabelle geschrieben werden.

Daher, das Programm muss den befehl erkennen und entscheiden, ob er zur Kategorie A oder B gehört und dann entsprechend mit ihm verfahren. Ein einzelner Buchstabe tut es da leider nicht @Vox Populi

If-Anweisungen sind auch nicht wirklich angebracht...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du keine if-Kaskade willst, kannst du eine einfache Lookup-Tabelle benutzen:

string known_commands[] = { "bla", "blubb", "hassenichgesehn" };
const size_t count = sizeof( known_commands ) / sizeof( known_commands[0] );

...

string eingabe = whatever;
if( std::find( known_commands, known_commands + count, eingabe ) != known_commands + count )
{
// Kategorie "bekannt"
}
else
{
// Kategorie "unbekannt"
}[/code]

Das lässt sich natürlich noch verbessern. Bei einer sehr großen Liste könnte man z.B. die Einträge sortieren und eine binäre Suche verwenden (oder gleich std::set benutzen).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...