if & else

rojeroje

Mitglied
Hi Leute hab mal ne Frage zu if & else.

mein Problem liegt darin das ich if = wenn (die Eingabe stimmt) er ein Befehl ausführt.
kein Problem soweit...

z.B
Code der Funktioniert
Code:
if
(brd == "Deutschland")

nur meine Frage:

gibt es ne Lösung das er mehrere strings abfragt?

zum bsp.

Code:
if
(brd == "Deutschland",brd1 == "deutschland",brd2 == "Deeutschland")

in worten ausgedrückt also:
"wenn das, oder das, oder das, oder das, dann das "

?
 
Zuletzt bearbeitet:
ja danke für die schnelle hilfe, hab nochmal drüber nachgedacht.

es handelt sich hier um Falsch eingaben die er trotzdem erkennen soll

und da wäre besser wenn ich mehrere bezeichnungen für einen string geben könnte

z.b

string brd("Deutschland, deutschland, deeutschland");

ist das auch noch möglich?

z.B:

wenn ich Deutschland über cin eingebe, das er bei if den string durchsucht nach diesem wort , aber er soll ja auch deutschland erkennen oder deeutschland usw....
 
da wäre besser wenn ich mehrere bezeichnungen für einen string geben könnte
z.b
string brd("Deutschland, deutschland, deeutschland");
ist das auch noch möglich?

Moin,

nein, so geht das nicht!
Ich hoffe, dass ich Deine Frage richtig verstanden habe ... aber Du kannst ein Stringarray anlegen:
Code:
string[] myStringArray = new string[10];
myStringArray[0] = "Deutschland";
myStringArray[1] = "deutschland";
myStringArray[2] = "Deeutschland";
... 
// usw.

Dann liest Du Deine Eingabe über cin in einen andern String (bspw. strTemp) ein und vergleichst Stück für Stück:
Code:
if( strTemp == myStringArray[0])
{
     // tue irgendwas
}
else  if( strTemp == myStringArray[1])
{
     // tue was anderes
}
else  if( strTemp == myStringArray[2])
{
     // tue noch was anderes
}
... // usw.

Gruß
Klaus
 
Um fehlerhafte Benutzereingaben zu ignorieren ist das eine sehr aufwendige Lösung. Du müsstest sämtliche möglichen Fehler berücksichtigen was kaum möglich ist.

Einfacher wäre die Eingabe mit sämtlichen Möglichkeiten (zB alle Ländernamen) zu vergleichen und die zu wählen, welche der Eingabe am ähnlichsten ist. ZB könntest Du, falls die Eingabe auf kein Land genau passt, die Levenshtein-Distanz berechnen und das Land wählen wo diese am geringsten.
Artikel dazu: http://de.wikipedia.org/wiki/Levenshtein-Distanz
 
Je nachdem wie viele Deutschland-"Schreibweisen" du hast kannst du für
Code:
if( strTemp == myStringArray[0])
{
     // tue irgendwas
}
else  if( strTemp == myStringArray[1])
{
     // tue was anderes
}
else  if( strTemp == myStringArray[2])
{
     // tue noch was anderes
}
... // usw.
wahrscheinlich besser eine for-Schleife benutzen (Hier mit i gleich der Anzahl der "Schreibweisen" minus Eins). Also:
Code:
for(int i = 2;i >= 0;i--)
{
        if(strTemp == myStringArray[i])
        {
               // Tue etwas....
        }
}

Keine Garantie! Bin nämlich selbst noch Anfänger. hehe

//edit:
@mahe: War das nicht mal die Aufgabe im ersten Coding-Quiz? :confused:
 
Zuletzt bearbeitet:
Um groß und klein schreibung allein schon ignorieren zu können benutze folgendes:
C++:
if(std::toupper(mystring) == "DEUTSCHLAND"){

}

^^Geht natürlich auch mit tolower...
 
Zuletzt bearbeitet von einem Moderator:
string brd("Deutschland, deutschland, deeutschland");

ist das auch noch möglich?
Sowas würde auch gehen. Und wie schon gesagt, müssen keine Groß-/Kleinschreibungsvarianten berücksichtigt werden, da man für die Suche alles z.B. in Großbuchstaben wandeln kann.
C++:
#include <algorithm> 
#include <string>
#include <iostream>

...

std::string brd   = "DEUTSCHLAND DEEUTSCHLAND TEUTSCHLAND";
std::string input = "Deutschland";

// Umwandeln in Grossbuchstaben    
std::transform(input.begin(), input.end(), input.begin(), std::ptr_fun(toupper));

// Suchen
if( brd.find(input) != std::string::npos )
{
    std::cout << "gefunden" << std::endl;
}

Gruß
MCoder
 
Zurück