Eingabe: Süden // Windrichtung halt.
Ausgabe: Keine (da anscheinend keine Bedinung erfüllt wurde)
Problem:
Der Compiler erkennt die Bedingung (Z == "Süden") nicht an.
Wenn ich "S\\x81den" schreibe, kommt Fehlermeldung, das irgendetwas übeschritten wurden (Dezimal größer als 3 oder so).
Wie kann jemand nun "Süden" eingeben und das Programm reagiert darauf ?
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Welche programmiersprache, compiler, codebeispiel usw. Etwas mehr darf es schon sein.
mr.escape
Programmiersprache: C++
Compiler: Borland C++ Compiler 5.0 Professional
Beispiel:
...blabla
else if (mbar > 750 && (direction == "sueden" || direction == "süden" || direction == "Sueden" || direction == "Süden" || direction == "sued" || direction == "süd"
|| direction == "Süd" || direction == "Sued")) {
cout }
// direction soll halt die Richtung sein, N S W oder O. Mehrere Bedingungen habe ich gemacht, damit der Benutzer eine Antwort bekommt, egal was er angibt ;)
PROBLEM: Gibt nun einer "Süden" oder "süden" ein reagiert das Programm nicht.
Das muss irgendein Problem vorliegen, mit den Umlauten. auch die ANSI Schreibweise \x81 ändert daran nichts (Fehlermeldung: Dezimal von 3 überschritten oder so).
Wie muss die Bedingung lauten, damit das Programm bei der
Eingabe von "Süden" oder "süden" reagiert ???
Das ganze habe ich mit strings gemacht, es funktioniert auch alles wie es soll, nur die Umlaute machen Probleme.
GreeTZ Selecta
PS: Ich habe diese Frage bereits sehr ausführlich geschrieben, aber aus unerklärlichen Grund hat der Internet Explorer sie nicht abgeschickt. Da wurde ich sauer (weil das öfters passiert, ohne Grund, hab formatiert, alle Updates und Patches, hab sogar den IE mal repariert, nix ändert sich) und hab deshalb mit dem Firefox ne schnelle Antwort hingeknallt.
Werde diesen, wenn er in der nächsten Version rauskommt, nur noch benutzen.
Was ist den "direction" ein Char-Array (String)? Oder eine eigene Klasse bei der du den ==-Operator überladen hast?
Im ersten Fall funktioniert das ( direction == "süden" ) wahrscheinlich nicht, weil da die Speicheradressen verglichen werden. Versuche in diesem Fall if ( ( strcmp( direction, "sueden" ) == 0 ) || ( strcmp( ..., ... ) == 0 ) || ( etc. ) ){}. Und string.h inkludieren.
Vergleiche von zeichenketten werden nicht mit == durchgeführt sondern mit den passenden vergleichfunktionen.
Diese sind üblicherweise strcmp, strncmp (und compilerspezifische wie stricmp strcasecmp usw.).
Der z.b. hier verwendete vergleich (direction == "sueden") vergleicht nicht den inhalt von direction mit "sueden" sondern die speicheradresse des inhaltes von direction mit der adresse der konstanten zeichenkette "sueden". Diese sind offensichtlich immer unterschiedlich.
Näheres zu diesem themenkreis in jedem bel. c/c++-buch.
mr.escape
PS: Ich habe diese Frage bereits sehr ausführlich geschrieben, aber aus unerklärlichen Grund hat der Internet Explorer sie nicht abgeschickt. Da wurde ich sauer (weil das öfters passiert, ohne Grund, hab formatiert, alle Updates und Patches, hab sogar den IE mal repariert, nix ändert sich) und hab deshalb mit dem Firefox ne schnelle Antwort hingeknallt.
Tja, kann auch mit anderen browsern gelegentlich passieren, aber den ie sollte man aus billionen anderen gründen nicht verwenden und stattdessen firefox, opera oder was auch immer, hauptsache nicht auf ie basierend, nutzen.