Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Rechenoperator

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 < [ 2 ]
000
25.04.2004, 22:15 Uhr
~Markus
Gast


Hallo,
ich habe mal eine kleine frage gibt es die möglichkeit einen Rechenoperator zum Beispiel + in einer Variable zu spiecheren und damit zwei Variablen mit zifferen zu addieren?

Vielen dang für eure hilfe.

Markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.04.2004, 22:49 Uhr
Pablo
Supertux
(Operator)


Ja, aber als char oder char* oder wenn du C++ benutzet als string
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.04.2004, 23:48 Uhr
~Markus
Gast


Ok das dachte ich mir fast. Aber könnte ich vielleicht etwas code haben?
Denn ich weiss nicht wie das dann mit cout funktionieren soll.

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.04.2004, 00:22 Uhr
~Markus
Gast



Code:
char    chOperator    = 43;
char    chNum1        = '5';
char    chNum2        = '6';

cout << chNum1 chOperator chNum2;



Ich habs mal so versucht aber das funktioniert nicht hab auch noch ein bischen rumprobiert aber ich bekomm es nicht hin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.04.2004, 00:45 Uhr
Pablo
Supertux
(Operator)


Was für ein Code kann ich dir geben, wenn ich nicht verstehe, was du machen willst?

Benutze die Such Funktion nach dem Stichwort "Parse".

Guck dir das mal genauer an: www.fun-soft.de/showtopic.php?threadid=4669
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.04.2004, 01:10 Uhr
~Markus
Gast


Ok also wenn ich in einer Char Variable einen Rechenoperator (in meinem Beispiel +) speichere und zwei weitere weitere char Variablen mit Ziffern habe (z.B. 5 und 6) will ich mit cout das Ergebnis ausgeben.

Was ich nicht weis wie ich das gestallten kann.
WEnn ich

Code:
cout << Variable1 Operator Varibale2;


eingebe bekomm ich einen fehler.
Wenn ich aber

Code:
cout << Variable1 << Operator << Varibale2;


eingebe zeigt er mit 5+6 an aber nicht das ergebnis.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.04.2004, 01:31 Uhr
Pablo
Supertux
(Operator)



C++:
cout << Variable1 Operator Varibale2;



Kann nicht funktionieren, weil sowas nicht in der Grammatik von C++ definiert ist und weil der Operator << von cout auch sowas nicht erkennen kann. Außerdem wie willst du, dass der Compiler begreift, dass du mit Operator eine Operator meinst und dies auch als ein Operator verstehet, wenn er eine Variable sieht? Es ist, als würdest du einen blinden einen Kissen geben, so dass er glaubt, dass du ihm einen Stein geben hast.

Was du machen willst, ist nicht so einfach zu programmieren, dafür habe ich dir dieses Stichwort gegeben: parsen. Parsen ist das Herausfinden, ob eine Zeichenkette gültig ist anhand eine Folge von Regeln. Solche Menge von Regel und Zeichen heißen Grammatiken, und sie bestimmen, wie die Ausdrücke aussehen sollen. Ein Parser ist ein Programm (oder Funktion), der ein Folge von Zeichen bekommt, und dann sagt, ob diese Zeichenfolge den Regeln entspricht.

Was du machen musst (ich nehme an, du willst sowas wie einen kleinen Taschenrechner machen, so dass der Benutzer 3+5 eingibt und dein Programm 8 ausgibt), ist eine Grammatik zu erstellen und einen Parser dafür schreiben.

Die Grammatik für den Taschenrechner, den ich dir im anderen Link gegeben hat, sieht so aus:


Zitat:

Die C++ Programmiersprache (Bjarne Stroustrup)
Die Gramatik für die vom Taschenrechner akzeptierte Sprache

program:
END // END ist Eingabeende
expr_list END

expr_list:
expression PRINT //PRINT ist Semikolon
expression PRINT expression

expression:
expression + term
expression - term
term

term:
term / primary
term * primary
primary

primary:
NUMBER
NAME
NAME = expression
- primary
( expression )




Da gibt es eine Folge von Regeln, denen du (und dein Programm) folgen müssen, damit sie Ausdrücke wie 2+3 erkannt und richtig ausgewertet werden.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 26.04.2004 um 01:32 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.04.2004, 01:45 Uhr
~MArkus
Gast


ok hab mir mal dein Link angeschaut.
JEtzt aber mal zu dem was ich programmieren soll. Also ich soll auch einen Rechner programmieren der eine Rechnung einliest und in eine Binäre Baumstruktur speichert. Bei 5+6+3 z.B. ist der Knotenpunkt der Rechenoperator + und die Blätter sind die Ziffern

+
| |
5 +
| |
6 3

so jetzt muss ich den baum von unten nach oben durchlaufen also 6+3 und 5+9 und das ergbniss ausgeben. Jetzt muss ich aber im Knoten den operator in einer Variablen speichern(so stell ich mir das vor). Nun weiss ich aber nicht wie ich das ergebnis berechen kann wenn ich die operatoren in einer variable habe.
Naja oder funktioniert das garnicht und ich muss mit einer switch anweisung testen welcher operator im Knoten gespeichert wurde und dann z.B. eine funktion aufrufen...

Code:
int Addieren(int num1, int num2)
{
   return num1+num2;
}


.. um das ergebnis zu berechnen.

Ich hoffe mein Problem ist jetzt etwas anschaulicher beschrieben.

Vielleicht kann mir jemand noch ein paar tips mit auf den weg geben um diese aufgabe zu lösen.

Vielen Dank im Voraus

MArkus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.04.2004, 01:49 Uhr
~Markus
Gast


Ok also muss ich das mit einer funktion lösen die das ergebnis zurück gibt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.04.2004, 02:28 Uhr
Pablo
Supertux
(Operator)


So finde ich es aber schwer. Was passiert, wenn du 5+6*3 einliest? Schon daran gedacht?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: