007
13.11.2010, 01:14 Uhr
Hans
Library Walker (Operator)
|
Hi,
Zitat von aii_thats_m3: |
Für alle die es interessiert mein programm sieht jetzt wie folgt aus(bereits auch mit exponentialfunktion und das mit division durch 0 und so unberücksichtigt):
C++: |
case '/': ergebnis=eingabe1/eingabe2; break;
|
|
wo berücksichtigst Du hier das Problem der Division durch Null? - Wenn man da für eingabe2 den Wert Null eingibt, steigt das Programm mit 'ner Fehlermeldung aus. Das sieht dann etwa so aus:
Code: |
E:\Watcom>taschenr2 Willkommen zum Taschenrechner Geben Sie die 1.Zahl ein : 5 Geben Sie die gewuenschte Rechenoperation an (+ - * / ^): / Geben Sie eine zahl ein: 0 An integer divide by zero was encountered at address 0x004010c5. Exception fielded by 0x00404a10 EAX=0x00000005 EBX=0x00000108 ECX=0x0006fea4 EDX=0x00000000 ESI=0x00137be8 EDI=0x00000000 EBP=0x0006fe98 ESP=0x0006fe7c EIP=0x004010c5 EFL=0x00010246 CS =0x0000001b SS =0x00000023 DS =0x00000023 ES =0x00000023 FS =0x00000038 GS =0x00000000 (Den Stackdump, der da noch hinterher kommt, hab ich mir gespart, den brauchen wir hier nicht.)
|
Das zu berücksichtigen bedeutet aber, die Berechnung gar nicht erst durchzuführen, wenn eingabe2 == 0 ist. Statt dessen sollte Dein Programm eine Fehlermeldung ausgeben, und irgendwie weiter laufen. Z.B. indem man dem Nutzer die Möglichkeit gibt, die Eingabe zu wiederholen.
Dann frag ich mich noch, ob Du das hier
C++: |
ergebnis = pow((double)ergebnis, (double)eingabe2);
|
wirklich willst? Die Logik funktioniert nur, wenn die pow-Funktion nicht als Erste benutzt wird. Wenn jetzt aber jemand als erstes eine Potenzrechnung durchführen will, dann ist ergebnis noch undefiniert, und die ganze Berechnung nicht vorhersehbar. Es kommt in jedem Fall was falsches bzw. unsinniges heraus. Das sieht dann z.B. so aus:
Code: |
E:\Watcom>taschenr2 Willkommen zum Taschenrechner Geben Sie die 1.Zahl ein : 2 Geben Sie die gewuenschte Rechenoperation an (+ - * / ^): ^ Geben Sie eine zahl ein: 2 Ergebnis: -2147483648 Geben Sie die gewuenschte Rechenoperation an (+ - * / ^): e Geben Sie eine zahl ein: 3 Ergebnis: -2147483648
E:\Watcom>taschenr2
|
Eigentlich sollte da ja 4 heraus kommen, oder?
Und schliesslich die Frage, wozu die Variable anz_Zahlen gut sein soll? - Die setzt Du zwar anfangs auf 0, machst danach aber nix mehr damit. (Nach dem Namen zu schliessen kann ich mir zwar denken, wozu sie gut sein soll, aber dann sollte man das auch umsetzen.) Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 13.11.2010 um 01:39 Uhr von Hans editiert. |