deepthroat
Erfahrenes Mitglied
Ja, im Prinzip ist das OK würde ich sagen (wenn ich jetzt nichts übersehen hab).
Allerdings könntest du natürlich in der while Bedingung die Überprüfung ob MeineLieferanten[i-1]._lieferantennummer != "0" ist rausnehmen, denn das prüfst du ja schon sofort wenn die lieferantennummer eingegeben wurde.
Dann würde ich lieber aussagekräftigere Variablennamen benutzen. Und du brauchst auch nicht i und j gleichzeitig in der Schleife hochzählen, da ja beide immer den gleichen Wert haben.
/edit: Ach, eine Sache wäre da noch:
Du prüfst nicht ob überhaupt etwas eingelesen werden konnte. Das heißt wenn jetzt ein böswilliger Benutzer z.B. statt einer Gleitkommazahl was ganz anderes eingibt, dann funktioniert dein Programm nicht mehr.
Das müßtest du bei jedem Wert machen den du einliest. Wenn du das nicht tust und es tritt ein Fehler beim Einlesen auf, dann wird der Wert der Variablen nicht geändert, d.h. du würdest dann mit ganz falschen Werten einfach weiterrechnen.
Allerdings könntest du natürlich in der while Bedingung die Überprüfung ob MeineLieferanten[i-1]._lieferantennummer != "0" ist rausnehmen, denn das prüfst du ja schon sofort wenn die lieferantennummer eingegeben wurde.
Dann würde ich lieber aussagekräftigere Variablennamen benutzen. Und du brauchst auch nicht i und j gleichzeitig in der Schleife hochzählen, da ja beide immer den gleichen Wert haben.
Code:
int lieferanten = 0;
do {
...
} while (++lieferanten < 10);
for (int j = 0; j < lieferanten; ++j) {
...
}
/edit: Ach, eine Sache wäre da noch:
Du prüfst nicht ob überhaupt etwas eingelesen werden konnte. Das heißt wenn jetzt ein böswilliger Benutzer z.B. statt einer Gleitkommazahl was ganz anderes eingibt, dann funktioniert dein Programm nicht mehr.
Code:
if (cin >> MeineLieferanten[i]._lieferantennummer) {
// Einlesen hat geklappt.
...
} else {
// unerwartetes Ende der Eingabe, oder ein
// allgemeiner Stream Fehler.
cerr << "Lesefehler.\n";
break;
}
...
if (cin >> MeineLieferanten[i]._umsatz) {
// Einlesen hat geklappt.
...
} else {
// Ups, entweder hat der Benutzer keine
// Gleitkommazahl eingeben, oder Eingabe ist
// zu Ende oder sonst. Streamfehler.
cerr << "Lesefehler.\n";
break;
}
Zuletzt bearbeitet: