Jack: Rechung vehlerhaft :(

Hallo ich habe da folgendes Problem:
Heute haben wir inder Schule Parabelberchnung (Mathe Parabelberechnung gemacht).
In Fach Programmieren haben wir bisher function if und while kennen gelernt (JavaScript)

Nur leider funktioniert das nicht so wie das soll,
Die Formel ist ja
x1= -(q/2)+ Wurzel aus ((p/2)²-q)
x2= -(q/2)- Wurzel aus ((p/2)²-q)

So habe ich das in Js umgestzt:

<html>
<head>
<script language="JavaScript">
function rechnen(a,b)
{
var h=(g+c)
var i=(c-g)
var c=(-(a/2))
var d=((a/2)*a)
var e=(d-b)
var f = Math.sqrt(e)
var g=(Math.round(f * 100) / 100).toString();
alert (h)
}
</script>
</head>
<body>
y=x²<input type="text" value="x" name="x">
<input type="text" value="" name="y">
<input type="button" onClick="rechnen(x.value,y.value)">
</body>
</html>

Mit der Formel ist alles Richtig bis (g),
var h=(g+c) geht nicht.
Wobei g und c einzel selber mit alert (g) oder alert (h) gehen.
wenn ich alert(h) mache kommt immer NaN.

Also ich habe schon fast alles Probiert nur den Fehler finde ich trotzdem nicht

Hoffe ihr könnt mir helfen.

MfG Jack

  1. Jack,

    In Fach Programmieren haben wir bisher function if und while kennen gelernt (JavaScript)
    <script language="JavaScript">

    Da habt Ihr hoffentlich nicht so kennengelernt. Ansonsten kannste deinen Lehrer gleich mal berichtigen:
    <script type="text/javascript">

    y=x²<input type="text" value="x" name="x">
    <input type="text" value="" name="y">
    <input type="button" onClick="rechnen(x.value,y.value)">

    Die Werte in den Eingabefeldern sind Strings! Also erst in Zahlen umrechnen.

    Gunnar

    --
    “I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)
    1. Zitat:

      Mit der Formel ist alles Richtig bis (g),
      var h=(g+c) geht nicht.
      Wobei g und c einzel selber mit alert (g) oder alert (h) gehen.
      wenn ich alert(h) mache kommt immer NaN.

      Es geht ja nur h wird nicht berechnet mit text javascript gehts auch ned!

      MfG Jack

      1. Jack,
        Mach doch mal alert([link:http://de.selfhtml.org/javascript/sprache/operatoren.htm#typeof@title=typeof] g), dann siehste, was ich meinte.

        Und da du keine Quick-and-dirty-Lösung willst, schauste dir parseFloat() an.

        Gunnar

        --
        “I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)
        1. var h=parseFloat((g+c))
          var x2=(c-g)
          var c=(-(a/2))
          var d=((a/2)*a)
          var e=(d-b)
          var f = Math.sqrt(e)
          var g=(Math.round(f * 100) / 100).toString();
          alert(h)

          Schon probiert ausgabe NaN

          Ausgabetyp von g: string

          MfG Jack

          1. Hehe Problem gefunden^^

            {
            var c=(-(a/2))
            var c=(-(a/2))
            var d=((a/2)*a)
            var e=(d-b)
            var f = Math.sqrt(e)
            var g=(Math.round(f * 100) / 100).toString();
            var h=parseFloat((g+c))
            var i=(c-g)
            alert (h)
            }

            so bei Testwert 20 und 21 kamm 13 raus laut Taschenrechner müsste aber -13,noch was rauskommen nach komma stelle ist egal nur das Vrozeichen soll übernommen werden!

            Danke

            Jack

            1. Jack,

              Hehe Problem gefunden^^

              Sicher?

              var c=(-(a/2))
              var c=(-(a/2))

              Meinste, beim zweiten Mal kommt was anderes raus?

              var g=(Math.round(f * 100) / 100).toString();

              Was bitte soll das denn (die Umwandlung in String)?

              Mir ist auch überhaupt nicht klar, warum du so viele Variablen benutzt. Dadurch wird der Code dermaßen unübersichtlich.

              Und ein ; an jedem Zeilenende schadet acuh nicht.

              Gunnar

              --
              “I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)
  2. Hallo Jack,

    var h=(g+c)    <--- hier
    var i=(c-g)    <--- und hier wird auf c zugegriffen
    var c=(-(a/2)) <--- aber erst hier wird c ein Wert zugewiesen!

    den Rest hab ich jetzt nicht geprüft. Und beachte den Tipp von Gunnar. Die Values von Inputs sind Strings, und bei denen hat + eine andere Bedeutung als bei Zahlen: 1+2=3, aber "1"+"2"="12" !

    Gruß, Jürgen

  3. Jack,

    Die Formel ist ja
    x1= -(q/2)+ Wurzel aus ((p/2)²-q)
    x2= -(q/2)- Wurzel aus ((p/2)²-q)

    Nö, isse nicht.

    Gunnar

    --
    “I got my finger on the trigger / But I don’t know who to trust” (Bruce Springsteen, Devils and Dust)
  4. Könnte es vielleicht sein, dass in dieser Schule die Gewichtung dessen, was man lernen sollte, ein bisschen falsch gesetzt wird?

    Könnte man nicht, bevor man die Kinder an solche Rechnungen lässt, ihnen korrektes Deutsch beibringen?

    Deutschland, deine Lehrer und Eltern!

    Kalle

    1. Hallo Kalle,

      Könnte man nicht, bevor man die Kinder an solche Rechnungen lässt, ihnen korrektes Deutsch beibringen?

      | jackoneill@icqmail.de

      Deutschland, deine Lehrer und Eltern!

      Ab in die Ecke mit dir.

      Grüße
      Roland