ze5400 Skrevet 13. oktober 2006 Del Skrevet 13. oktober 2006 Jeg holder på med et program som skal regne likninger, men jeg har støtt på et kipt problem. Jeg ender opp med en string som kan se sånn ut: "14+6,3-7", jeg prøver å få denne til å regnes sammen, for å så samles i en double... Noen som vet en måte jeg kan gjøre dette på? C# og VB.NET er likebra Kjempefint hvis noen kan si meg hvordan... PS: Jeg kan ikke omgå dette problemer da stringen inneholder x'er som blir filtrert ut før den skal parses... Lenke til kommentar
GeirGrusom Skrevet 14. oktober 2006 Del Skrevet 14. oktober 2006 (endret) Holder på med å lage mye det samme akkurat nå, min er ganske komplisert dog, slik fungerer den: Den løser opp alle paranteser til et tree, Alle operasjoner blir lagt inn i en liste i hver parantes, hver operasjon blir tildelt en funksjon (multiplikasjon, divisjon etc. bruker delegate til dette) og hver operasjon blir laget i rekkefølger (gange, dele, pluss, minus etc) og når dette er ferdig, har jeg en liste med operasjoner, hvor hver operasjon har 3 bools som sier om resultatet skal bli lagt til stack, eller om noen av variablene skal bli hentet fra stack. Dremed blir hver expression kompilert til en rekke instruskjoner, og dermed kan komplisert funksjoner bli jhørt lynkjapt den er ikke helt ferdig enda though, så jeg gir med en jeg skrev i VB.NET for et par år siden. Det er ikke sikert den fungerer helt, men du kan jo se på den. EDIT: Huff, fikk ikke lov å legge den til uten å zippe den først. Edit2: Det er ganske mye arbeid, så det enkleste er å lage en C# compiler for å gjøre jobben VBForums Math.zip Endret 14. oktober 2006 av GeirGrusom Lenke til kommentar
ze5400 Skrevet 16. oktober 2006 Forfatter Del Skrevet 16. oktober 2006 (endret) Mange takk GeirGrusom! Men tror kansje ikke den virka helt? Regner med det er "GetDecimalValue" som ville være den mest aktuale for meg. Men "GetDecimalValue("5+3/2")" Returnerer 5 Stor sjangs for at jeg har gjort noe galt EDIT: Kikka på linken du ga meg. Det så veldig innteresant ut! Var jommenmeg en vb port også http://www.vbforums.com/showthread.php?t=397265 EDIT2: Den virka jo kjempebra! Littt treig, men det gjør ikke noe for min del Endret 16. oktober 2006 av ze5400 Lenke til kommentar
Moskus Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 Takk, begge! Dette var hendig! Lenke til kommentar
Manfred Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 (endret) Et par ting du skal huske på er for det første rekkefølgen ting regnes ut... hva som gjøres først av * og +.. hva som gjøres først av - og / osv... (5*2+2) er ikke det samme som (5*(2+2)) osv... Sånn rent bortsett fra det ville jeg nok parset en ligning til et binært tre. Absolutt ryddigste og enkleste måten å gjøre det på.. Endret 17. oktober 2006 av Manfred Lenke til kommentar
Moskus Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 Hvis nå bare noen lager tilsvarende som takler imaginære tall, så hadde jeg vært i himmelen! F.eks: "exp(5+4i) + exp(4+3i)" Vil slikt være "enkelt" å få til? Har sett litt på det med regulare expressions men jeg er nok ikke god nok til det... Lenke til kommentar
Manfred Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 Hahaha... Sliter med skolearbeid nå da? i er da et ytterst koselig tall det er bare sqrt(-1). Slutt å mas nå da Lenke til kommentar
Moskus Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 Skole? Nei, ikke helt... Men det er hendig å kunne regne med imaginære tall hvis man f.eks. skal finne absorpsjonskoeffisienter til et sammensatt materiale, men er så heldig at man tilfeldigvis kjenner den akustiske impedansen (som er imaginær) til de forskjellige lagene . Selvfølgelig kan man bruke Matlab eller lignende, men det går så forferdelig sent... Lenke til kommentar
Manfred Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 vi brukte... ehm... ikke MathLab, men noe som var mye kjappere... jeg bare husker ikke hva det het... helt genialt, men ganske avansert å bruke. Lenke til kommentar
Moskus Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 (endret) Men så er jeg veldig for grafiske brukegrensesnitt og det er så mye enklere i VB/C# at derfor har jeg lyst til å regne med imaginære tall i .NET. Har en liten add-in som noen har skrevet fra ett eller annet sted, men den er veldig tungvindt å bruke. Eksempelvis må "(5+4i) + (4+3i)" skrives slik (eller iallfall noe som ligner): ComplexMath.Add(New ComplexMath.Number(5, 4), New ComplexMath.Number(4, 3)) og det er vanskelig å holde tunga bent i munnen når uttrykkene blir verre enn det (noe som ikke skal så mye til)... Endret 17. oktober 2006 av moskus Lenke til kommentar
Manfred Skrevet 17. oktober 2006 Del Skrevet 17. oktober 2006 Nå er du bare vrang... hehe Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå