Taschenrechner
-
Also, ich bin noch ein beginner und habe mich mal rangesetzt und versucht ein taschenrechner zu machen!
Das was er noch machen sollte und ich gern möchte...
1.Ich möchte das man auch mit kommazahlen rechnen kann ( das ergebniss wird in kommazahlen angezeigt!)
2. Ich möchte, dass wenn er benutzt wurde sich nich wieder schließt, sondern das man ihn wieeder und wieder benutzen kann bis der anwender es schließt.
(3. Ein anderes Design, aber ich glaub das wird eher zu schwer.)
4. Und das er vielleicht weiter rechnet als 20.000.Ich baller einfach mal den ganzen code rein
Die vielen leeren zeilen sind für ne bessere übersicht, die ich einfach brauche.
Es ist vielleicht alles leicht geschrieben und ich möcht gern dass es so bleibt^^, falls es nich geht, nich schlimm.
Und bitte erklärt mit zb. // "-" dahinter was diese funktion genau macht damit ich mir es fürs spätere merken kann.#include <iostream> using namespace std; const int DECIMAL_ADJ = 10000; int main() { cout<<"Taschenrechner!!\n"; cout<<"Nur ganze Zahlen benutzen!!\n"; cout<<"\n\n"; int zahl1 = DECIMAL_ADJ * 1.0; int zahl2 = DECIMAL_ADJ * 1.0; int zahl3 = DECIMAL_ADJ * 1.0; int zahl4 = DECIMAL_ADJ * 1.0; int zahl5 = DECIMAL_ADJ * 1.0; int zahl6 = DECIMAL_ADJ * 1.0; cout<<"Gib Deine erste Zahl ein: \n"; cin>>zahl1; cout<<"Gib Deine zweite Zahl ein: \n"; cin>>zahl2; zahl3 = (zahl1 * DECIMAL_ADJ) + zahl2; zahl4 = (zahl1 * DECIMAL_ADJ) * zahl2; zahl5 = (zahl1 * DECIMAL_ADJ) - zahl2; zahl6 = (zahl1 * DECIMAL_ADJ) / zahl2; cout<<"\n\nAddition betraegt: " <<(1.0* zahl1 + zahl2); cout<<"\nMultiplikation betraegt: " <<(1.0 * zahl1 * zahl2); cout<<"\nSubtraktion betraegt: " <<(1.0 * zahl1 - zahl2); cout<<"\nDivision betraegt: " <<(1.0 * zahl1 / zahl2); cout<<"\n\n"; cout<<"\n\n"; system("PAUSE"); return 0; }
Achja und könnte man mir noch kurz sagen was DECIMAL_ADJ ist? Und erklärt es auch bitte so das es ein "laie" kapiert^^, in mathe bin ich auch nich der held und kenne noch nich viele fachbegriffe! (vllt Fachbegriff mit bedeutung hintenran schreiben)
Erst ging nichts mit den kommazahlen. Irgentwo hab ich das mit DECIMAL_ADJ aufgeschnappt, probiert und halbewgs erfolgreich gewesen.Ihr könnt den "script" kopieren und Testen!
(Mit Dev c++ geschrieben)
Danke im vorraus für die antworten
-
Idf schrieb:
1.Ich möchte das man auch mit kommazahlen rechnen kann ( das ergebniss wird in kommazahlen angezeigt!)
Nimm dafür Fliesskommazahlen, z.B.
float
oderdouble
.Idf schrieb:
2. Ich möchte, dass wenn er benutzt wurde sich nich wieder schließt, sondern das man ihn wieeder und wieder benutzen kann bis der anwender es schließt.
Am besten realisierst du das über eine Schleife (hier passt wohl
do
-while
). Am Ende der Berechnung fragst du den Benutzer, ob er nochmals rechnen will, wenn ja, wiederholst du die Schleife.Idf schrieb:
4. Und das er vielleicht weiter rechnet als 20.000.
Geht denn das jetzt nicht?
Idf schrieb:
Achja und könnte man mir noch kurz sagen was DECIMAL_ADJ ist?
Eine globale
int
-Konstante.Idf schrieb:
Und erklärt es auch bitte so das es ein "laie" kapiert^^, in mathe bin ich auch nich der held und kenne noch nich viele fachbegriffe! (vllt Fachbegriff mit bedeutung hintenran schreiben)
Es geht nicht um Mathe. Aber du solltest dich unbedingt mit den Grundlagen der C++-Programmierung auseinandersetzen, sonst kommst du auf keinen grünen Zweig. Ich würde auch nicht irgendwelche Dinge zusammenkopieren, die ich nicht verstehe. Kauf dir ein gutes C++-Buch oder leih dir zumindest eins aus (z.B. C++-Primer, Thinking in C++ (gibts auch gratis als Online-PDF)). Aber die Programmiersprache C++ ist auch so komplex genug und braucht viel Geduld und Zeit zu lernen. Wenn du da nicht genügend Motivation besitzt, machst du dir es nicht gerade leichter.
-
also: kommazahlen:
für kurze kommazahlen float statt int schreiben, für länbgere double und für ganz lange long double.
2. nicht schließen: pack das ganze in ne endlosschleife:for(;;) { //taschenrechnercode }
3. dazu müsstet du windowsforms programmieren was für anfänger eher nicht empfehlenswert ist, du musst erstmal konsolenanwendungen beherrschen lernen.
4. einfach long vor int schreiben ->long intaußerdem wäre dein code wesentlich besser lesbar, wenn du in niht als Code((code)(/code)) sondern cpp-code ((cpp)(/cpp)) eingeben würdest(natürlich eckige klammern statt runde).
im Übrigen hat Nexus völlig Recht: du solltest auch verstehen was du da an code schreibst und nicht einfach nur kopieren, immerhin musst du deinen code auch selbst schreiben können, es wird sich kaum einer finden der hier immer ne komplette musterlösung shreibt.
mfg,
andi01.
-
Ich hab hier mal was für die geschrieben.
Sollte alles drin sein bis auf die Sache mit den Kommazahlen die weiss ich gerade auch net auswendig ^^
Aber du sollst ja auch noch etwas machen (=
#include <iostream> using namespace std; int main() { short auswahl; bool wiederhole; long double zahl1; long double zahl2; long double zahl3; long double zahl4; long double zahl5; long double zahl6; do // alles was zwischen do und while steht gehört zur fußgesteuerten schleife { cout<<"Erste Zahl eingeben: \n"; cin>>zahl1; cout<<"Erste Zahl eingeben: \n"; cin>>zahl2; zahl3 = zahl1 + zahl2; zahl4 = zahl1 - zahl2; zahl5 = zahl1 * zahl2; zahl6 = zahl1 / zahl2; cout<<"Addition Ergebniss: " << zahl3 << "\n\n"; cout<<"Subtraktion Ergebniss: " << zahl4 << "\n\n"; cout<<"Multiplikation Ergebniss: " << zahl5 << "\n\n"; cout<<"Division Ergebniss: " << zahl6 << "\n\n"; cout<<"Wollen Sie eine neue Berechnung starten ? Ja = 1 Nein = 2 "; cin>>auswahl; if ( auswahl == 1) // wenn man eine 1 eingibt bekommt die variable auswahl den wert 1 { wiederhole = true; } else // wenn nicht 1 eingeben wurde wird das programm beendet { return 0; } } while (wiederhole == true); // solange wiederhole = true fängt das programm immer wieder von vorne an system("PAUSE"); return 0; }
-
Ich danke euch für die schnellen und hilfreichen antworten!
Ich habe nur DECIMAL_ADJ kopiert, weil ich nicht wusste wie man das mit den kommazahlen macht, das andere ist selbstgeschrieben.
Tutorials und auch vllt Bücher oder sonstiges werde ich mir in laufe der zeit jetz angucken.
Danke
-
Ich danke euch für die schnellen und hilfreichen antworten!
Ich habe nur DECIMAL_ADJ kopiert, weil ich nicht wusste wie man das mit den kommazahlen macht, das andere ist selbstgeschrieben.
Tutorials und auch vllt Bücher oder sonstiges werde ich mir in laufe der zeit jetz angucken.
Danke
und nein bisher hat mein taschenrechner nur bis 20000 gerechnet. wenns da über war kam irgentwas heraus.
-
Das beste C++ Tutorials welches ich bis jetz gefunden habe:
http://www.cpp-tutor.de/cpp/hinweise.html
Hier noch was zu Variablen von der Seite von Erhard Henkes
http://www.henkessoft.de/C++/C++/cpp_konsole.htmDer schreibt hier auch öfters im Forum. ^^
1.2. Variablen und einfache Datentypen Mit int zahl deklarieren wir eine Integer-Variable. Wir reservieren bei einem 32-Bit-Rechner 4 Byte Speicherplatz für eine vorzeichenbehaftete Ganzzahl. 4 Byte entsprechen 4 * 8 = 32 Bit. Damit können wir binär einen Ganzzahlenbereich von 2 hoch 32 = 4 294 967 296 abdecken. Dieser Bereich ist für int (32 Bit) heutzutage - 2 147 483 648 ... 0 ... 2 147 483 647. Es gibt auch die Möglichkeit nur positive Ganzzahlen und die Null zuzulassen. Hierfür stellt man ein unsigned vor das int: unsigned int umfaßt 0 ... 4 294 967 295 (32-Bit-Maschinen). Sie sehen, dass int automatisch signed int bedeutet. Solche Details findet man üblicherweise in der Datei limits.h. Dort findet man die Grenzen für die einzelnen Variablentypen: char, short, int, long, ... ... #define SHRT_MIN (-32768) /* minimum (signed) short value */ #define SHRT_MAX 32767 /* maximum (signed) short value */ #define USHRT_MAX 0xffff /* maximum unsigned short value */ #define INT_MIN (-2147483647 - 1) /* minimum (signed) int value */ #define INT_MAX 2147483647 /* maximum (signed) int value */ #define UINT_MAX 0xffffffff /* maximum unsigned int value */ #define LONG_MIN (-2147483647L - 1) /* minimum (signed) long value */ #define LONG_MAX 2147483647L /* maximum (signed) long value */ #define ULONG_MAX 0xffffffffUL /* maximum unsigned long value */ #if _INTEGRAL_MAX_BITS >= 8 #define _I8_MIN (-127i8 - 1) /* minimum signed 8 bit value */ #define _I8_MAX 127i8 /* maximum signed 8 bit value */ #define _UI8_MAX 0xffui8 /* maximum unsigned 8 bit value */ #endif #if _INTEGRAL_MAX_BITS >= 16 #define _I16_MIN (-32767i16 - 1) /* minimum signed 16 bit value */ #define _I16_MAX 32767i16 /* maximum signed 16 bit value */ #define _UI16_MAX 0xffffui16 /* maximum unsigned 16 bit value */ #endif #if _INTEGRAL_MAX_BITS >= 32 #define _I32_MIN (-2147483647i32 - 1) /* minimum signed 32 bit value */ #define _I32_MAX 2147483647i32 /* maximum signed 32 bit value */ #define _UI32_MAX 0xffffffffui32 /* maximum unsigned 32 bit value */ #endif #if _INTEGRAL_MAX_BITS >= 64 /* minimum signed 64 bit value */ #define _I64_MIN (-9223372036854775807i64 - 1) /* maximum signed 64 bit value */ #define _I64_MAX 9223372036854775807i64 /* maximum unsigned 64 bit value */ #define _UI64_MAX 0xffffffffffffffffui64 #endif #if _INTEGRAL_MAX_BITS >= 128 /* minimum signed 128 bit value */ #define _I128_MIN (-170141183460469231731687303715884105727i128 - 1) /* maximum signed 128 bit value */ #define _I128_MAX 170141183460469231731687303715884105727i128 /* maximum unsigned 128 bit value */ #define _UI128_MAX 0xffffffffffffffffffffffffffffffffui128 #endif ...
-
wenn der taschenrechner weiter rechnen soll als 20000 schreib einfach mal long vor dein int (und falls er keine negativen zahlen brauchen sollte schreib noch unsigned davor).
-
Ich hab float anstatt int genommen. Damit läufts supi und er rechnet weiter als 20.000 glaub bis 1mio.
Und die frage ob der nochmal starten soll hab ich weggelassen, sodass man sofort das nächste ergebniss rechnen kann.Danke, dass du das Tutorial rausgesucht hast, scheint viel versprechend zu sein
Ich werds mir auf jedenfall angucken