C++ code ausbessern?
Vorab: Ist nicht dringend weil ich mit dem coden wieder aufhören muss. Habe vor 2 Tagen angefangen (nur c++). Wie würdet ihr das anders machen?
Ich bin mir sicher, dass man die Definitionen leichter hätte machen können, nur weiß ich nicht genau wie.
Habe die Funktion nicht als main, weil ich noch was anderes probieren wollte, also der „Fehler“ ist mir bewusst.
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Cplusplus, Code, Programmiersprache
- Mehrere der deklarierten Variablen (kilometer, kilometers, Km) werden gar nicht genutzt. Sie können also raus.
- Zuweisungen wie kilometers zu kilometer, miles zu mile oder mile zu input (der Wert wird eh darauffolgend wieder überschrieben) sind ohne Sinn.
- C++ hat explizit Datentypen (wie std::string), damit man C-Typen (wie const char*) nicht mehr wirklich braucht.
- Einige der Strings bei deinen Ausgaben (z.B. "mi" und " = " könnten direkt zu einem Literalwert verbunden werden. Das würde den Code an der Stelle auch einfacher lesbar gestalten.
- Bezüglich der Benamung deiner Variablen wäre es besser, einen einheitlichen camelCase-Stil zu wählen (km, factorKm). Der Name deiner Funktion sollte eindeutiger sein, sodass man bestenfalls ihren Körper nicht erst lesen muss, um zu verstehen, was sie tut. Auch der input-Variable würde ich einen eindeutigeren Namen spendieren (z.B. numberUnit).
- Der Rückgabetyp der Funktion ist (logisch betrachtet) falsch. Sie tut nichts, daher wäre void richtig. Die main-Funktion sollte stattdessen einen expliziten Rückgabewert zurückgeben.
- Die Bedingung input == mile ist nur wahr, wenn der Nutzer für input nichts eingibt.
regex9
20.12.2023, 10:03
@Seal6
Dafür müsstest du input mit entsprechenden Werten vergleichen:
if (input == "mile" || input == "miles") {
Deine Variablen mile und miles hingegen zeigen auf leere Strings.
string mile;
cout << mile; // empty output ("")
Wenn du mit ihnen arbeiten wolltest, müsstest du ihnen entsprechende Werte geben und sie dann in die Prüfung einbauen.
string mile = "mile";
string miles = "miles";
if (input == mile || input == miles) {
// ...
}
mile und miles hab ich geschrieben, dass es egal ist ob man 1mile oder 100miles eingibt.