"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C++ => Formel eingeben .. ?

XeroXs 15.11.2001 - 17:14 6231 17
Posts

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
ok folgendes..

i schreib grad an am programm für die schule (argl ;).. und zwar tut des näherungsweise den flächeninhalt unter einer funktion berechnen (zwischen Xmin und Xmax werten)

soweit so gut.. geht auch alles... allerdings soll man die formel völlig unabhängig eingeben können

also den Y = <eingabe:formel>

das problem ist, das ich mit dem ja rechnen will... also das ich später echt sagen kann

X=1;
ergebnis = formel (die eingegeben wurde, mit X=1 berechnet)

also man gibt z.b. ein

(1/x²+4x)+6

und er kann dann später mit dem ganz normal ohne probleme rechnet...

also er bekommt einen wert und rechnet damit.. bekommt den nächsten etc...

wer hat ne idee?

thx ;)

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
speicher einfach die formel in einen string, danach ersetzt du in dem string alle x durch das was du halt willst und dann rechnest du mit der formel die du im string abgelegt hast.

alles klar?

mfg twistn@z
Bearbeitet von twistn@z am 15.11.2001, 17:35

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
aeh

meinst du das so?

string einlesen (string)
x einlesen (float)

y=string;

y ausgeben

?

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
zuerst musst du im string natürlich noch die x ersetzen durch den derzeitigen wert mit dem du rechnen willst

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
hm und wie macht ma des?

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
also du hast beispielsweise:

int i = 20, k; // i = max. länge der formel
double xwert; //was xwert haben sollte musst du wissen =)
char formel[i];

printf("formel: ");
scanf("%s", formel);

for (k=0;k<=i;k++)
{
if (formel[k] == 'x')
formel[k] = xwert;
}


noch fragen?

twistn@z

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
thx :D mal testen

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
also ich bin überzeugt von meinem code :cool:

twistn@z

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von XeroXs
soweit so gut.. geht auch alles... allerdings soll man die formel völlig unabhängig eingeben können

also den Y = <eingabe:formel>

Dazu brauchst du einen kompletten Parser und Ausdruck-Auswerter. Sowas ist gar nicht so trivial.
Schau dir mal
http://www.bloodshed.net/c/eval_expr.tar.gz
an.

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
wozu einen parser?
meine lösung funktioniert auch und ist einfacher.


twistn@z

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von twistn@z
wozu einen parser?
meine lösung funktioniert auch und ist einfacher.

[ ] du hast das Problem verstanden
[ ] du hast deinen Code ausprobiert
[x] du hast einen seltsamen C++ Compiler

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
@that: naja du hast schon recht, mit dem was mein code macht kann man nicht so ohne weiteres rechnen, aber du hättest immerhin die formel in der das x schon ersetzt wurde, was du dann machst ist was anderes :D

ich hab auch nie gesagt dass man zb: y = formel; schreiben kann sondern ich hab nur den code für das ersetzen von x geschrieben, und der funktioniert in jedem compiler (ich verwende vc++ 6.0 btw.)

twistn@z

wobbo

...
Registered: Apr 2001
Location: Drehstuhl :)
Posts: 1022
jo oba jetzt muast die formel a no berechnen...
und mit an string rechnen dirft jo ned so afoch sei :rolleyes: :D

twistn@z

Bloody Newbie
Registered: Nov 2001
Location: Feldkirch
Posts: 28
das wird auch nicht gehen :)

ich will mir jetzt aber keine gedanken mehr darüber machen da ich noch andere (wichtigere) sachen zum coden hab :D

twistn@z

XeroXs

doh
Avatar
Registered: Nov 2000
Location: Lieboch
Posts: 10300
hm geht ned ;)

was für ein wunder *lol*

mal das vom that anschaun... i meld mi :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz