Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 9
Seite [1]
Ho.B


King for a day



Herkunft: Berlin
Beiträge: 207
# Thema - 21.03.2007 um 22:26 Uhr
Hallo

ich will für Mathe einen Funktionsrechner coden, aber hab da so meine Probleme. Der entscheidene Code sieht so aus:

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
1. / 2. / ... 
<?php
$repl
=$_POST["f"]; //Also $repl="x*x-2"; 
$repl=str_replace('x''$x'$repl);
$repl "return (".$repl.');';

function 
f($x)
{
$ergebnis=$repl;
eval(
$ergebnis);
?>


Wie ich mir das vorstelle, wird mit dem eval() der eingegebene String $repl als Variablen behandelt. Funzt aber nicht so, wie ich mir das vorstelle...

Wenn ich die Variablen direkt in den Code eingebe, funktioniert es aber, also das Grundprinzip steht.

 
1.
2.
3.
4.
5.
6.
1. / 2. / ... 
<?php 
function f($x)
{
$ergebnis=$x*$x-2;
return 
$ergebnis;
?>


Wie ändere ich das, sodass es funktioniert?


------------------
Alle Angaben sind wie immer ohne Gewähr
Inaktiv
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 1 - 22.03.2007 um 00:00 Uhr
da fehlt viel zu viel, so macht der code keinen sinn!
denke mal du hast das alles weggelassen, oder wirklich so einiges falsch gemacht.

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1. / 2. / ... 
<?php
$func 
$_POST['f']; // "x*x-2"
$func '$result = ' str_replace('x','$x',$func) . ';'// "$result = $x*$x-2;"

function f($x) {
  global 
$func;
  eval(
$func);
  return 
$result;
}

for (
$x 0$x 11$x++) {
  echo 
'f('.$x.') = ' f($x) . '<br />';
}

?>


so stimmts, ist getestet.


Inaktiv
|
Ho.B
Thread-Ersteller


King for a day



Herkunft: Berlin
Beiträge: 207
# Antwort: 2 - 22.03.2007 um 00:03 Uhr
bin halt nich so der profi

wofür steht das

 
1.
2.
3.
1. / 2. / ... 
<?php for ($x 0$x 11$x++) {
  echo 
'f('.$x.') = ' f($x) . '<br />';
?>


??

//Edit: Eigentlich wurscht, meine Funktion funzt

THANKS

Wenn jemandem "Regula Falsi" was sagt: Klick


------------------
Alle Angaben sind wie immer ohne Gewähr

Zuletzt editiert von Ho.B am 22.03.2007 um 21:28 Uhr (4x Editiert)
Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 3 - 22.03.2007 um 00:07 Uhr
ist nur testweise um die werte von f(x) im bereich 0 <= x <= 10 anzuzeigen.

eval braucht normalen php code, ist als wäre der string ganz normal im php code drin. würdest ja auch nicht einfach mal ne zeile erstellen in der drin steht

$x*$x-2

das ist ja gar nichts. da fehlt ein semikolon, da ist keine variable, ist also auch keine zuweisung ..
das ist wie wenn du ein wort zusammenhangslos in den raum stellst so dass damit niemand was anfangen kann. musst schon sagen was das ist, nämlich der wert den die funktion zurückgeben soll und eben auch sagen wo der befehl zu ende ist durch ein semikolon.

grüße

duRiel


Zuletzt editiert von duRiel ClanSphere Team am 22.03.2007 um 00:09 Uhr (1x Editiert)
Inaktiv
|
Ho.B
Thread-Ersteller


King for a day



Herkunft: Berlin
Beiträge: 207
# Antwort: 4 - 22.03.2007 um 00:14 Uhr
jo das klingt logisch, aber ich wüsste nich so genau mit der funktion umzugehen, google hat mir auch nich geholfen


------------------
Alle Angaben sind wie immer ohne Gewähr

Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 5 - 22.03.2007 um 00:22 Uhr
nette idee.

kein problem fürs script.


Inaktiv
|
Fidan


King for a day



Herkunft: -----
Beiträge: 331
# Antwort: 6 - 25.03.2007 um 01:46 Uhr
für was brauchste ne mathefunktion?


Inaktiv
|
racor


Going for pro




Beiträge: 476
# Antwort: 7 - 25.03.2007 um 04:07 Uhr
ich will für Mathe einen Funktionsrechner coden


DAFÜR


------------------

ONLINE PORTFOLIO

Inaktiv
|
OeTz


Beginner




Beiträge: 11
# Antwort: 8 - 03.05.2007 um 10:29 Uhr
cool


Inaktiv
|
TeQu!La ClanSphere Team


Specialist




Herkunft: Grevenbroich
Beiträge: 2142
# Antwort: 9 - 03.05.2007 um 13:23 Uhr
Kann man es sich irgendwo ansehen?


------------------

ClanSphere - professional clan care starts here


Inaktiv
|
Antworten: 9
Seite [1]


Sie müssen sich registrieren, um zu antworten.