char* von if nicht erkannt
-
Tim1995 schrieb:
Vielleicht ist die Eingabe irgendwie net ok ?
ich mach das so:cin >> start; einfuegen ( rstart, &koords );dein erkennungscode ist ok.
aber warum tust du start einlesen und rstart übergeben?
wenn es wirklich start und rstart geben soll, dann entweder
cin >> start; string rstart=start; einfuegen ( rstart, &koords );oder besser
cin >> start; string rstart=einfuegen ( rstart, &koords );aber super hübsch isses noch net, weil du dummerweise 2 rückgabewerte hast.
perfekt wäre ne struktur aus name und koordinaten, glaub ich.
-
OK. Nach Idee von volkard ganz neue Art.
Sie klappt!!!! Endlich!!!Header:
//... koord einfuegen ( koord ); //...Implementierung:
koord einfuegen (koord koords) { int qqq=0; koord rueck; if (koords.name == "Frankfurt" || koords.name == "EDDF" || koords.name == "eddf" || koords.name == "FRA" || koords.name == "fra" || koords.name == "frankfurt" || koords.name == "FRANKFURT") { rueck.name = "Frankfurt"; rueck.lg=50;rueck.lm=1;rueck.lae='N';rueck.bg=8; rueck.bm=32;rueck.bre='O';rueck.ls=35;rueck.bs=35; } //... }Aufruf mit:
koords=einfuegen ( koords );Vielen Dank euch allen.
Tim

-
Um das ganze etwas schöne zu gestalten würde ich die Eingabe einfach auf lower case umwandeln und dann überprüfen. (sofern das innerhalb des Namens ebenfalls erlaubt sein soll; ansonsten könntest du auch nur den ersten Buchstaben umwandeln)
http://www.cplusplus.com/reference/clibrary/cctype/tolower.html
Und dann würde ich da noch ein wenig auf die Einrückung achten. Klammern sollten immer zu einem Block gehören, welchen man erkennen sollte.
z.B so:
if ( blabla ){ ... }oder
if ( blabla ) { ... }aber sicher nicht:
if ( blabla ){ ... }
-
ich habs eben nur nit einem if probiert.
Wenn ich jetzt z.B. London dazunehme, gehts wieder nicht und der Flughafen wird wieder ncicht erkannt.koord einfuegen (koord koords) { int qqq=0; koord rueck; if (koords.name == "Frankfurt" || koords.name == "EDDF" || koords.name == "eddf" || koords.name == "FRA" || koords.name == "fra" || koords.name == "frankfurt" || koords.name == "FRANKFURT") { rueck.name = "Frankfurt"; rueck.lg=50;rueck.lm=1;rueck.lae='N';rueck.bg=8; rueck.bm=32;rueck.bre='O';rueck.ls=35;rueck.bs=35; } if ( koords.name == "London" || koords.name == "london" || koords.name == "EGLL" || koords.name == "egll" || koords.name == "LHR" || koords.name == "lhr" || koords.name == "LONDON" ) { rueck.name = "London"; rueck.lg=51;rueck.lm=28;rueck.lae='N';rueck.bg=0; rueck.bm=27;rueck.bre='W';rueck.ls=39;rueck.bs=41; } //.. }um hilfe wird gebeten,
Tim
-
Schau doch mit dem Debugger, ob die Werte innerhalb der Funktion dem entsprechen, was du erwartest. Dann findest du schnell heraus, wo es happert.
-
ganz blöde frage, aber wie mache ich das mit dev-c++ ?
-
Tim1995 schrieb:
ganz blöde frage, aber wie mache ich das mit dev-c++ ?
Lies die Anleitung deiner Entwicklungsumgebung. Und wenn du dir wirklich einen gefallen tun willst: Ersetze sie! (die Entwicklung von DevC++ ist eingestellt; alternativen wären z.B. die beiden kostenlosen IDEs Microsoft Visual C++ Express 2008 oder Code::Blocks).
-
immer, wenn das ergebnis feststeht, sofort return machen, dann werden die else-geschichten ein wenig entschärft.
koord einfuegen (koord koords) { int qqq=0; koord rueck; if (koords.name == "Frankfurt" || koords.name == "EDDF" || koords.name == "eddf" || koords.name == "FRA" || koords.name == "fra" || koords.name == "frankfurt" || koords.name == "FRANKFURT") { rueck.name = "Frankfurt"; rueck.lg=50;rueck.lm=1;rueck.lae='N';rueck.bg=8; rueck.bm=32;rueck.bre='O';rueck.ls=35;rueck.bs=35; return; } if ( koords.name == "London" || koords.name == "london" || koords.name == "EGLL" || koords.name == "egll" || koords.name == "LHR" || koords.name == "lhr" || koords.name == "LONDON" ) { rueck.name = "London"; rueck.lg=51;rueck.lm=28;rueck.lae='N';rueck.bg=0; rueck.bm=27;rueck.bre='W';rueck.ls=39;rueck.bs=41; return; } //.. //kram machen, der zu machen ist, wenn nix erkannt wurde. }und geh echt von DevC++ weg.
-
Die Sache sähe ein wenig übersichtlicher aus, wenn man die Namen in einem Array speichern würde und dann per Schleife prüft. Am besten in einer eigenen Funktion...
-
jetzt gehts. ich musst else if statt nur if nehmen.
mfg
Tim