Avatar billede googolplex Novice
29. oktober 2003 - 18:22 Der er 14 kommentarer og
1 løsning

Finde den ubekendte

Jeg har en formular hvor man kan indtaste 5 variabler, der alle indgår i en ligning. Meningen er at man skal kunne undlade at indtaste en vilkårlig variabel, hvorefter ligningen løses og den ubekendte findes.

Kan man gøre det på en smart måde, så man ikke behøver at lave en seperat løsning for variablerne hver for sig, men hvor scriptet finder ud af hvilken variabel der mangler og finder denne ?

Løsningen skal helst gælde for alle (simple) ligninger :-)

Nogle der har ideer/løsninger ?
Avatar billede exp Juniormester
29. oktober 2003 - 18:45 #1
ligning:
a^2 + b^2 = c^2

felter:
a ($a)
b ($b)
c ($c)

<?php
if (!isset($a)) {
    $a_new = (($c)^2)/(($b)^2);
    echo "a^2 + ".$b."^2 = ".$c."^2";
    echo "a^2 = ".$c."^2 / ".$b."^2 = ".$a_new;
} elseif (!isset($b)) {
    $b_new = (($c)^2)/(($a)^2);
    echo $a."^2 + b^2 = ".$c."^2";
    echo $a."^2 = ".$c."^2 / ".$a."^2 = ".$b_new;
} elseif (!isset($c)) {
    $c_new = sqrt((($a)^2)+(($b)^2));
    echo $a."^2 + ".$b."^2 = c^2";
    echo $a."^2 + ".$b."^2 = ".$c."^2";
    echo $c."^2 = ".$a."^2 + ".$b."^2 = ".$c_new;
} else {
    echo "Fejl";
}
?>

Ikke testet!
Avatar billede exp Juniormester
29. oktober 2003 - 18:45 #2
en måde man kunne lave det på...
Avatar billede googolplex Novice
29. oktober 2003 - 18:51 #3
Ja, det var præcis sådan jeg havde tænkt mig at lave det, men så laver du jo netop en løsning for hver, tænkte om PHP kunne gøre det smartere :)
Avatar billede exp Juniormester
29. oktober 2003 - 18:55 #4
Du kan jo nok ikke komme udenom at du skal fortælle den løsningsmodellen...
Avatar billede googolplex Novice
29. oktober 2003 - 19:03 #5
Æv :(

Nå pyt, du kan få pointene hvis du kan svare mig på et nemt andet spørgsmål som jeg ikke er 100% sikker på.

Hvis jeg gør således:

$var = $_POST['var'];

if (!isset($var)) {}

Så er $var altid SAT ikke ? Skal jeg ikke tjekke direkte på $_POST med:

if (!isset($_POST['var'])) {} ??
Avatar billede exp Juniormester
29. oktober 2003 - 19:05 #6
Hvis du sætter $var = $_POST['var'], så kan du bruge $var resten af vejen...
Avatar billede googolplex Novice
29. oktober 2003 - 19:08 #7
Jamen, hvis jeg skriver:

$var = $_POST['var'];

Vil 'isset($var)' så ikke være TRUE selvom 'isset($_POST['var'])' er FALSE ?

Sætningen '$var = $_POST['var'];' sætter jo $var uanset hvad $_POST['var'] indeholder...
Avatar billede tipsen Nybegynder
29. oktober 2003 - 20:53 #8
Så skal du finde løsningen ved at implementere en simpel numerisk metode som eksempelvis newton-raphson eller noget lignende - det kræver dog lidt grundlæggende viden om matematik og algoritmer.
Avatar billede googolplex Novice
29. oktober 2003 - 21:26 #9
Kender ikke newton-raphson, har du et link ?
Avatar billede tipsen Nybegynder
29. oktober 2003 - 23:42 #10
http://www.ma.umist.ac.uk/servicemaths/helm/ch13/13_3NewtonRaphson.pdf

-måske lidt for snakkede og for mange eksempler - hvis du vil have en kortere og mere præcis udgave, kan du kigge på Numerical Recipes:

http://www.library.cornell.edu/nr/bookcpdf.html

Specielt kapitel 9 omhandler numeriske metoder til at finde rødder.
Avatar billede tipsen Nybegynder
29. oktober 2003 - 23:43 #11
Numerical Recipes kan forøvrigt varmt anbefales, da den udover komplet C-kode også gennemgår (overfladisk) teorien bag metoderne.
Avatar billede exp Juniormester
30. oktober 2003 - 18:17 #12
Du kunne lave en:

if (isset($var) && $var != '') {
  //noget
}
Avatar billede googolplex Novice
30. oktober 2003 - 18:53 #13
Jeg har bruge strlen($var), det funker fint :)
Avatar billede googolplex Novice
31. oktober 2003 - 19:22 #14
Læg et svar hver !
Avatar billede exp Juniormester
31. oktober 2003 - 19:53 #15
c",)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester