login  Naam:   Wachtwoord: 
Registreer je!
 Forum

split probleempje (Opgelost)

Offline lolll - 06/10/2010 20:08
Avatar van lolllLid ik ben in js een rekenmachientje aan het maken. Nu zit ik met het volgende probleem: als er op de =-knop gedrukt wordt, moet hij de waarden uit rekenen en op het scherm plaatsen, alleen weet ik niet hoe ik die waarden uit een moet halen. Stel er staat op het scherm: "45+54" en er wordt op de =-knop gedrukt, hoe moet ik dan 45, + en 54 daaruit halen ? ik heb dit geprobeerd met de split functie, maar dat is me niet echt gelukt. Hier is mijn huidige code:
  1. function calc(strtocalc){
  2. var operators=Array("+","-","x","/");
  3. oplarr=strtocalc.split(operators);
  4. alert(oplarr[0] + " " + oplarr[1] + " " + oplarr[2]);
  5. }

die alert zou dus moeten geven : "45 + 54". helaas geeft hij nu: "45+54 undefined undefined"

Lolll

6 antwoorden

Gesponsorde links
Offline cloudstrife - 06/10/2010 20:56 (laatste wijziging 06/10/2010 20:59)
Avatar van cloudstrife PHP beginner Als je splitst op een teken dan gaat dit teken geen deel uitmaken van de array. (in andere talen is dit zo dus ik neem aan in javascript ook)

bv 1,3,5 gesplitst op de , geeft een array met 3 waarden:
0 => 1
1 => 3
3 => 5

Bovendien moet je toch eens uitzoeken of het kan om een array van delimeters mee te geven, bij mijn weten is dit beperkt tot 1 teken.
Offline Martijn - 06/10/2010 21:10
Avatar van Martijn Crew PHP daar is de eval functie voor, maar die wil je liever niet gebruiken. T beste wat je denk kan doen, en tevens wel lastig, is met een split de getallen in een array zetten, en met het origineel de tekens eruit halen (kun je doen door alles wat cijfer is te vervangen door een enkele spatie met een regex en dan de splitten op spatie) en dan met een for each loopje zoiets doen

var getal = cijfer[0];
if(teken[0] == "*"){ getal*=cijfer [1];}
else if(teken[0] == "+"){ getal+=cijfer[0];}

en dat dan steeds voor alle 4 mogelijkheden, en dan voor de length van je array. Beetje omslachtig, maar als je m eenmaal hebt werkt t...
Offline pinquin - 07/10/2010 10:18
Avatar van pinquin HTML interesse Hoi Lolll,

Is het misschien niet handiger om de getallen in een array 'op te slaan' zodra er op een reken teken wordt geklikt. Ga maar na bij een echte rekenmachine, zodra je op b.v. + drukt en vervolgens een nieuw getal begint, verdwijnt het getal wat er stond.
Op deze manier hoef je alleen maar je array van 0 tot x uit te lezen.

voorbeeldje:
je typt: 45 --> array = leeg
je typt: + --> array[0] = 45
je typt: 65 --> array[0] = 45; array[1] = +
je typt: = (Lees je array uit en voor de berekeningen uit).

  1. for( var i = 0; i < array.length; i++ ) {
  2.  
  3. }


Vergeet niet je array weer leeg te maken. En op deze manier kan je langere sommen maken dan alleen twee getallen.

gr,
Offline kilian - 12/10/2010 23:47
Avatar van kilian Lid Is het de bedoeling om je rekenmachine ook helemaal correct te maken?
Standaard doen veel rekenmachines wel wat fouten tegen de volgorde van bewerkingen:
Rekenmachine: 1+2*3=9
Manueel: 1+2*3=7
Offline vinTage - 13/10/2010 00:31
Avatar van vinTage Nieuw lid
kilian schreef:
Is het de bedoeling om je rekenmachine ook helemaal correct te maken?
Standaard doen veel rekenmachines wel wat fouten tegen de volgorde van bewerkingen:
Rekenmachine: 1+2*3=9
Manueel: 1+2*3=7


jij hebt nog een vooroorlogs rekenmachien? 
Offline kilian - 13/10/2010 09:12
Avatar van kilian Lid Redelijk ja 
't is gewoon het rekenmachine dat op het Dashboard steekt van m'n laptop

Ik zie trouwens wel dat het standaard rekenmachine in OS X het wel juist doet 
En toch, het was misschien een nuttige tip (zo een heel klein beetje? Toch? Nee? Jammer.. )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.172s