C++ Javascript zu vc++ übersetzen

Diy-Riff

Newbie
Registriert
Okt. 2009
Beiträge
4
Hallo,

ich habe ein Javascript zur umrechnung von einer Einheit unter bezugnahme der Temperatur zu einer anderen Einheit.

Da die Berechnung sehr kompliziert ist finde ich dazu keine normalen Berechnungsformeln die ich in c++ nutzen könnte. Daher muss das Script irgendwie für Visual C++ Forms angepasst werden nur weiß ich nicht wie.
Helft Ihr mir dabei?

Dankeschonmal vorab!

LG Matze

Hier noch die Javascript Funktion die ich für VC++ brauche, wobei bei mir im Forms dann halt temps=textBox2 und denss=textBox1 ist und die Ausgabe sals= textBox3 sein wird. Und halt mit clickeventhaendler für Button1

function salinitaet(form) {
var temps=parseFloat(form.temps.value);
var denss=parseFloat(form.denss.value);
denss= denss-999.96;
var limit = 10000;
var salmin = 0.0;
var salmax = 100.0;
var fehler = 1.0;
var densNeu;
var i = 0;

while( (Math.abs(fehler) > 0.00001) && (i < limit) ) {
sals = (salmin+salmax) / 2.0;
densNeu = - 0.157406 + temps*(6.793952E-2 - temps*(9.095290E-3 - temps*(1.001685E-4 - temps*(1.120083E-6 - temps *6.536332E-9)))) + sals*(8.24493E-1 - temps*(4.0899E-3 - temps*(7.6438E-5 - temps*(8.2467E-7 - temps*5.3875E-9))) - Math.sqrt(sals)*(5.72466E-3 - temps*(1.0227E-4 - temps*1.6546E-6)) + sals*4.8314E-4);
fehler = (densNeu-denss) / denss;
if (fehler > 0.0)
salmax = sals;
else
salmin = sals;
++i;
}
if ( i >= limit )
form.sals.value= "ERROR";
else
form.sals.value= "Salinität = "+Math.round(100*sals)/100+" psu";
}
 
Wenn du Visual C++ kannst, dann sollte es doch für dich kein Problem sein, das javascript zu übersetzen?
bau es doch einfach zeile für zeile nach und guck danach was du noch optimieren kannst
 
Hallo Jpop,

ich kanns ja nicht. Bisher alles was ich gebraucht habe konnte ich ergoogeln.
Nur hier hörts jetzt mit tante google leider auf *g*

LG Matze
 
Deine "komplizierte Formel" ist nur Mathematik. Die funktioniert auch in C/C++ nicht anders (such auch mal nach sqrt im Zusammenhang mit C/C++).
Informiere dich mal wie man in C++ Ein- und Ausgabe über Tastatur und Bildschirm macht. Mal noch völlig ohne eine grafische Oberfläche. Also rein in einer Konsole. Als Tipp die beiden Stichwörter cin und cout.

Dann sollte eine "prototypische" Umsetzung in C++ kein großes Problem mehr sein.
 
Klingt als ob da jmd eine Hausaufgabe hat und beim googeln nur eine javascript lösung gefunden hat^^. Wie schon die Poster vor mir kann ich nur sagen, wenn du den Algorithmus verstanden hast kannst du ihn ganz einfach "konvertieren"
 
Sehe hier auch kein Problem, wenn man Grundbegriffe von C++ versteht...

Du kannst ja mal sagen, wo genau das Problem liegt.

Gruß,

badday
 
Danke schonmal für die Antworten.
Nun ich habe nicht vor erst Konsolen Anwendungen zu machen wenn ichs doch in einer Win32 Anwendung haben möchte.

Es ist keine Hausaufgabe sondern dient meinem Hobby der Meerwasser Aquaristik.
Das auch etwas Beruf ist.

Im Moment habe ich es nur mal grob gemacht mit if else if für die jweiligen werte. Aber so kann ich natürlich nicht kommastellen mit abarbeiten. im Moment habe ich 48 if else if würde ich bei temperatur noch eine nachkomma zahl zulassen und bei Dichte noch ne nachkommastelle zulassen wäre ich bei 3996 möglichkeiten. das ist für if else if definitiv zuviel.

Das Problem ist ich kann ja nichtmal den JavaCode nachvollziehen denn in der Berechnung fehlt zb das denss was die eingegebene dichte darstellt. Also muss das irgendwie im JavaScript behandelt werden ohne das ich objektiv das sehen kann.

Ich habe auch den Ur Entwickler des JavaScripts gefragt der noch mehr variablen mit mBar zulässt aber er kann leider kein C++ und hat das aufgrund von noch abstrackteren Formeln der Unesco gemacht.
Bei der Berechnung ist ja leider mein Problem + - mal durch hab ich ja in anderen formularen des programms schon erfolgreich drin. nur durch die Anomalie des Wassers kommen halt Polynome und Koefizienten zum einsatz und scheinbar wie ich es von PHP kenne wo man einfach mal unsichtbar zwischenberechnungne macht.

Also der OrginalCode ist dort zu finden ( rechtsclick auf Quellcode )
http://www2.sese.uwa.edu.au/~hollings/pilot/denscalc.html

Wiegesagt hab den Seiteninhaber schon gefragt.

LG Matze
 
Also zuerst mal alle var durch double ersetzten, dan alle function durch void
Wie es mit Rückgabeparameter ist weiß ich nicht, aber ich glaub das wird alles in den globalen Variabeln gespeichert.
Dann zu Win32: Das ist sehr kompliziert und mühselig, am besten verwendest du da eine .Net Form.
Da machste dann alle Teile rein, wenn du dann auf eins der Elemente doppelklickst, landest du direkt im Quellcode, an dieser Stelle musst du dann die entsprechenden Funktionen zum Berechnen anstoßen.
also compute(foo,bar);
dei Ganzen variablen machst du am besten über die erste Funktion, die bei dem Doppelkilcken erstellt wird.

Dann sollte es so aussehen:
Code:
.net gedöhns...
...
#pragma endregion
double var1,var2;
void funk1(double var1,double var2)
{
...
}
private: System::Void button1_click........

Noch was Strings nach double oder float mit atof oder atod dazu musst du aber ganz oben noch #include <stdio.h> schreiben und dein Projekt auf Nich Unicode umstellen (Unicode nach ASCII ist echt richtig blöd zu machen).
 
Ich danke dir! Das sind mal daten mit denen ich was anfangen kann.
Ich probier mich dann mal weiter durch!

Dankeschonmal!

LG Matze
 
Zurück
Oben