09. november 2003 - 18:19Der er
11 kommentarer og 1 løsning
Atom/Molekyleformler
Jeg er ved at lave et lille program, som automatisk skal kunne udregne vægten af molekyler. Hvis vi siger, at jeg har C3H8 gemt i en string, så skal den deles op i $i[0] = "C"; $i[1] = 3; $i[2] = "H"; $i[3] = 8;
Det er ikke sikkert, det er så svært, ved jeg ikke rigtigt, men siger vi derimod at jeg har HCl gemt i en string, så skal den jo deles i $i[0] = "H"; $i[1] = "Cl";
Det er selvfølgelig meningen at stringen med et molekyle skal deles så jeg kan beregne vægten af hvert grundstof hver for sig, gange med antallet og så gå videre til næste grundstof.. Som fx i C3H8: Vægten af C ganget med 3, plus vægten af H ganget med 8!
Det er egentlig lige meget hvordan variablerne bliver smidt ud, må også gerne være i et array..
Det skal egentlig bruges til et lille delphi program, men hvis nogle forestrækker at smide eksempler i PHP så er det også helt iorden..
Jeg håber I forstår hvad jeg mener, ellers spørg!, og håber I kan hjælpe mig.. :)
En regExp, som kan det meste af hvad du ønsker ser sådan ud:
/[A-Z][a-z]?|\d?/g;
-- men den kan ikke selv sætte et 0 ind, hvis der ikke er tal i formlen, så der bliver det nødvendigt langsomt at checke, om der forekommer fravær af index ...
Erik-> Har aldrig lært Reg.Exp, har derfor lidt svært ved at forstå hvad der foregår, men det ser da ud som om det virker meget godt.. Vil lige lege lidt med det..
Bagdelen ved eriks løsning er, at du skal opskrive samtlige aktuelle grundstoffers notation ind i $g-variablen ...
Men da du vel i forvejen har en database med atomvægte har du vel der også den del !o]
Bagdelen ved at tage udgangspunkt i min korte regExp er, at man selv skal tilføje 1-tallet (som også erik er nødt til i sin funktion !-) _og_ at du må cegecke et andet sted for validiteten ...
Hmm.. Okay.. Du bestemmer :) Men så nupper jeg dem da bare igen..
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.