Verfügbare Informationen zu "Calculater"
Qualität des Beitrags: Beteiligte Poster: donasa - just4fun Forum: Advanced-Computer Forenbeschreibung: Computer aus dem Unterforum: alle C sprachen Antworten: 2 Forum gestartet am: Samstag 07.10.2006 Sprache: deutsch Link zum Originaltopic: Calculater Letzte Antwort: vor 17 Jahren, 5 Monaten, 24 Tagen, 10 Stunden, 15 Minuten Getaggt durch: Computer
Alle Beiträge und Antworten zu "Calculater"
Re: Calculater
donasa - 04.11.2006, 15:53Calculater
So mein neuer Taschenrechner (kann klammern rechnen etc.)
zur eingabe:
calc "RECHENANWEISUNG"
und enter drücken
dieser wird auch bald in NOSS zu finden sein
Code:
#include <iostream>
using namespace std;
enum tToken {
PLUS, MINUS, MUL, DIV, LPAR, RPAR, NUMBER, END, ERROR};
// Globale Variablen:
tToken aktToken; // das zuletzt erkannte Token
double TokenZahlenWert; // der Wert bei Zahlenkonstanten
char *srcPos; // Programm-Position
tToken sucheToken()
// Sucht ab der aktuellen Stringposition das nächste Token.
// Hier werden auch die Zahlenkonstanten bestimmt und in
// der globalen Variablen TokenZahlenWert abgelegt.
{
aktToken = ERROR;
if (*srcPos==0) {
aktToken = END;
} else {
switch (*srcPos) {
case '(': aktToken=LPAR; break;
case ')': aktToken=RPAR; break;
case '*': aktToken=MUL; break;
case '/': aktToken=DIV; break;
case '+': aktToken=PLUS; break;
case '-': aktToken=MINUS; break;
}
if (*srcPos>='0' && *srcPos<'9') {
aktToken=NUMBER;
TokenZahlenWert = 0.0;
}
while (*srcPos>='0' && *srcPos<'9') {
TokenZahlenWert *= 10;
TokenZahlenWert += *srcPos-'0';
srcPos++;
}
if (aktToken != NUMBER) srcPos++;
}
return aktToken;
}
tToken Error(char *s)
// Meldung ausgeben und Fehler-Token zurückliefern
{
cerr << s << endl;
return ERROR;
}
double PlusMinus();
double Klammern()
// wertet Klammern, Zahlen und Vorzeichen aus
// ruft Klammern() und PlusMinus() dadurch rekursiv!
{
double Wert;
switch(aktToken) {
case NUMBER:
sucheToken();
return TokenZahlenWert;
case MINUS:
sucheToken();
return -Klammern();
case LPAR:
sucheToken();
Wert = PlusMinus();
if (aktToken != RPAR)
return Error(") expected");
sucheToken();
return Wert;
case END:
return 1;
}
return Error("primary expected");
}
double MulDiv()
// wertet Multiplikation und Division aus
// ruft Klammern(), dadurch rekursiv!
{
double Wert;
// rufe erst die Operation mit der nächsthöheren Priorität
Wert = Klammern();
while (aktToken==MUL || aktToken==DIV) {
if (aktToken==MUL) {
sucheToken();
Wert *= Klammern();
} else if (aktToken==DIV) {
sucheToken();
Wert /= Klammern();
}
}
return Wert;
}
double PlusMinus()
// wertet Summe und Differenz aus
// ruft MulDiv(), dadurch rekursiv
{
double Wert;
// rufe erst die Operation mit der nächsthöheren Priorität
Wert = MulDiv();
while (aktToken==PLUS || aktToken==MINUS) {
if (aktToken==PLUS) {
sucheToken();
Wert += MulDiv();
} else if (aktToken==MINUS) {
sucheToken();
Wert -= MulDiv();
}
}
return Wert;
}
double Auswertung(char *s)
{
srcPos = s;
sucheToken(); // bestimme schon einmal das erste Token vorweg
return PlusMinus();
}
int main(int argc, char* argv[])
{
double Wert = Auswertung(argv[1]);
cout << Wert << endl;
return 0;
}
Re: Calculater
just4fun - 06.11.2006, 23:42
junge noss is ent die zukunft.......
wir brauchen einen besseren namen wie wärs mit
Lync
hab ich mir ausgedacht und da chrisi is damit einverstanden....
den kernel würden wir dann
Kync
nennen, jedes gescheite betriebsystem nennt seinen kernel anders ;)
also wie schauts aus, du musst nur noch ja sagen
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Advanced-Computer
Lieblingsprogrammiersprache - gepostet von Donasa am Dienstag 10.10.2006
Calculater - gepostet von donasa am Samstag 04.11.2006
Programme - gepostet von inachor am Sonntag 19.11.2006
Ähnliche Beiträge wie "Calculater"
Skill - Calculater - LuZerus (Dienstag 06.07.2004)
SP Calculater - uselezz (Sonntag 22.04.2007)