Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe bei programm "Taschenrechner"

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.11.2010, 16:38 Uhr
aii_thats_m3



hallo,was für eine funktion brauch ich um mit einem ergebniss zweier zahlen weiterrechnen zu können? Und ei mach ich das mit ner Exponentialfunktin?? mein prog sieht bis jetzt so aus ::


C++:
#include <iostream> //einbinden der Ein-/Ausgabefunktionen
using namespace std;  
int main() //Anfang
{  
char rechenzeichen; //Variable für das rechenzeichen
double zahl1, zahl2; //Variable für Zahlen
cout << "Willkommen zum Taschenrechner \n"; //Begrüßungsausgabe
do
{
// "\n" steht für neue zeile
cout << "Bitte waehlen sie:\n";
cout << "\1 Addition \n";
cout << "\2 Subtraktion\n";
cout << "\3 Multiplikation\n";
cout << "\4 Division\n";
cout << "Geben Sie bitte Ihre Wahl ein: ";
cin >> rechenzeichen;
switch (rechenzeichen)
{
case 1:
{
cout << "Addition: Geben sie den ersten Summand ein: ";
cin >> zahl1;
cout << "Geben sie den zweiten Summand ein: ";
cin >> zahl2;
break;
}
case 2:
{
cout << "Subtraktion: Geben sie den Minuend ein: ";
cin >> zahl1;
cout << "Geben sie den Subtrahent ein: ";
cin >> zahl2;
break;
}
case 3:
{
cout << "Multiplikation: Geben sie den 1. Faktor ein: ";
cin >> zahl1;
cout << "Geben sie den 2. Faktor ein: ";
cin >> zahl2;
break;
}
case 4:
{
cout << "Division: Geben sie den Dividend ein: ";
cin >> zahl1;
cout << "Geben sie den Divisor ein: ";
cin >> zahl2;

break;
}
default:
{
cout << "Bitte geben sie eine Zahl von 1-5 an!\n";
}
}
} while (rechenzeichen != 4);
return 0;//Ende
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.11.2010, 18:50 Uhr
~f.-th.
Gast


warum:

C++:
cout << "Bitte geben sie eine Zahl von 1-5 an!\n";
}
}
} while (rechenzeichen != 4);



Division durch 0 da könnte man etwas ergänzen.
Du könntest auch tatsächlich die Rechenzeichen abfragen.

Erweitere Mathefunktionen siehe

C++:
#include <cmath>



MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.11.2010, 19:19 Uhr
aii_thats_m3



hmm kp warum, das hat mir mein prof geschickt und gemeint, dass das unbedingt eingebaut werden muss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.11.2010, 20:04 Uhr
Hans
Library Walker
(Operator)


Hi,

@~f.-th.: ich denke, die Auswahl Nr. 5 soll wohl für die Exponentialfunktion sein.


Zitat von aii_thats_m3:
was für eine funktion brauch ich um mit einem ergebniss zweier zahlen weiterrechnen zu können?

dafür brauchst Du keine Funktion sondern eine weitere Variable, die das Ergebniss der Berechnung aufnimmt, also etwa zahl3.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.11.2010, 20:19 Uhr
~f.-th.
Gast


Hab ich dann übersehen
Er brauch die Division durch 0 nicht abfragen, weil er da ja nicht hin kommt

Take it easy
f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.11.2010, 20:24 Uhr
Hans
Library Walker
(Operator)


Nun ja, bisher berechnet er ja auch noch nichts, also kann auch noch kein "Division by Zero Error" auftreten.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.11.2010, 22:32 Uhr
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++:
#include <iostream>
#include <math.h>
using namespace std;


int main()
{
int eingabe1;
int eingabe2;
int ergebnis;
char rechenzeichen;


cout<<"Willkommen zum Taschenrechner" << endl;

long anz_Zahlen = 0;

cout<<"Geben Sie die 1.Zahl ein : ";
cin>>eingabe1;

do
{
cout<<"Geben Sie die gewuenschte Rechenoperation an (+ - * / ^): ";
cin>>rechenzeichen;
cout<<"Geben Sie eine zahl ein: ";
cin>>eingabe2;


switch(rechenzeichen)
{
case '+':
ergebnis=eingabe1+eingabe2;
break;

case '-':
ergebnis=eingabe1-eingabe2;
break;

case '*':
ergebnis=eingabe1*eingabe2;
break;

case '/':
ergebnis=eingabe1/eingabe2;
break;

case '^':
ergebnis = pow((double)ergebnis, (double)eingabe2);
break;
}
cout<<"Ergebnis: "<<ergebnis << endl;

eingabe1=ergebnis;
      

}while (rechenzeichen !='e');



cin.get();
cin.get();

return (0);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: