Hov - hvad sker der. Jeg havde postet #2, men det kom ikke med. Jeg genindlæste siden med Ctrl + F5, og det var stadig ikke med. Derfor postede jeg indholdet igen, og nu er den med 2 gange. Hmmm...
nemlig. Ja det kan jeg ved sådan en enkelt løsning som det her. Men det jeg skal have lavet skal det være muligt at indtaste mange tal, og det er også let nok, for så skal det bare køres i while.
Men så kommer det svære, det er når jeg skal have den til at gange/dividere før alt andet (Matematisk regel), og jeg stadig dog stadig væk have den til at løbe den i den rigtige rækkefølge for at få det rigtige resultat.
nemlig -> Ja det er pænt teknisk, har siddet siden klokken 1 i eftermiddags, og rodet med det, på flere 1000 forskellige måder men kan virkelig ikke finde en måde som regner det som det skal. PHP regner det i sig selv godt nok, men da jeg ikke bare kan indtaste variablerne er det svært.
Håber jeg finder en løsning på et tidspunkt så skal jeg nok smide et svar herinde.
Så skal du have den til at løbe alle tallene igennem og se efter "*" eller "/" tegn og så regne tallet før og efter ud
Jeg lavede engang en lommeregner i java hvor jeg smed operatøren ind før tallet så det blev noget i stil med $input = array("+1","+3","*2","+2");
Synes det gjorde det lettere, men det er nok en smagssag.
Jeg løb så alle inputtene igennem og hvis jeg fandt en gange eller dividere operatør fandt jeg variablen før og hentede tallet, udførte udregningen og opdaterede de to variabler i input listen igen så jeg fik $input = array("+1","+6","+0","+2") Så er det bare at lægge sammen til sidst.
Håber det gav mening og gav dig et skub. Og ja, der findes nok smartere måder, men det var vores første opgave på skolen så vores kendskab til java var meget begrænset, og du kan snilt gøre det samme i php som i java.
Så skal du til at lege med reg.exp. og det er jeg langt fra stærk i. Du skal søge efter patterns i stil med "(0-9[*|/]0-9)" (har ingen idé om det er rigtig syntax) og så udregne det og indsætte det i stedet for parantesen.
Smid det i en løkke indtil alle paranteserne er ordnet (skal så også udbygges til at søge efter paranteser med +/- operatør) og så burde der kun være + og - tilbage.
Hvad med blot at bruge eval() - noget i stil med: <form method="get" action=""> <input type="text" name="calc" value="" /> <input type="submit" value="Beregn" /> </form> <?php $s = $_GET['calc']; if(preg_match("@^[0-9\+\-\.\%\*\(\)\/ ]+$@",$s)) print @eval("return $s;"); else print "Fejl"; ?>
Jeg laver et regex-tjek først for at sikre mig, at der ikke kan afvikles php-kommandoer o.lign. Dog kan brugeren godt skabe Divison by zero-error på den her måde - disse bliver dog undertrykt ved at sætte @ foran eval().
wanze - Mange tak skal du have. Mig og min mate har fanme siddet helt fra bunden af og prøvet at bygge en hel "lommeregner" op, men vi fik det ikke til at lykkes, også kan det bare gøres så let ;-). Tusind tak, lig et svar.
Det skulle så være et svar. Anyway, du kan jo også sagtens skrive $var = 2 + 4;
Nå, svar her!
Synes godt om
Ny brugerNybegynder
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.