PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechenscript mit Variable



!ckS
06.10.2005, 14:52
da mir schon letztes mal so toll und so schnell geholfen wurde, wende ich mich mit meinem neuen anliegen lieber sofort an euch, als erst dutzende scriptarchive im netz zu durchstöbern :D

ich suche ein simples rechenscript, das mir die formel 3,5 * x² + 70x + 500 (als beispiel) ausrechnet. x soll dabei vom benutzer eingegeben werden und darf nicht kleiner als 1 oder größer als 100 sein, anderfalls erscheint im ausgabefeld eine fehlermeldung. aussehen soll das ganze in etwa so:

http://www.x-maillennium.de/temp/rechenscript.gif
rechenbeispiele:
x = 1
ausgabe: 573

x = 30
ausgabe: 5750

x = 60
ausgabe: 17300

x = 100
ausgabe: 42500

x > 101
ausgabe: Fehler!

x < 0
ausgabe: Fehler!

kriegt das jemand hin? :rolleyes:

dadie
06.10.2005, 15:03
ICh verusch es mal in Javascript zu bauen wenn mal wieder jemand schneller ist als ich >.>

Lukas
06.10.2005, 15:24
<script type="text/javascript">
function rechne()
{
var x = document.getElementById("x-input").value;

if(x > 100 || x < 1)
{
var out = "Fehler!";
} else
{
var out = 3.5 * (x*x) + 70 * x + 500;
}
document.getElementById("out").value = out;
}
</script>

<input id="x-input" /><br />
<input type="button" value="Berechnen" onclick="rechne();" /><br />
<input id="out" readonly="readonly" />So in etwa?

!ckS
06.10.2005, 15:47
\o/

jaaa, supi! ^^

wäre es denn auch möglich, alle ergebnise mit nachkommastellen abzurunden, sodass nur ganze zahlen herauskommen?

und kann man die fehlermeldung auch dann anzeigen lassen, wenn buchstaben, sonderzeichen und andere unerwünschte werte eingegeben werden?


bis dahin entspricht das script aber genau meinen vorstellungen! sehr schön, danke! :)

dadie
06.10.2005, 15:50
Klappt nun 1A ^^


<script language="JavaScript">
function getX()
{
var x1 = document.getElementById("X").value ;

var Z = Math.floor(((3,5 * (x1*x1)) + ((70 * x1) + 500))) ;

if(x1 > 101 || x1 < 0)
{
Z = "Error 01" ;
}

document.getElementById("Z").value = Z ;

}

</script>


<input name="X" /><br>
<input id="Z" readonly="readonly" /><br>
<input type="submit" value="Submit" onclick="getX()" />

!ckS
06.10.2005, 16:01
*reicht dadie eine tasse kaffee* :D

wenn x = 1 ist, kommt 573.5 raus. und da die ausgabe abgerundet werden soll, stimmt meine vorgabe 573 ;)

dadie
06.10.2005, 16:10
*reicht dadie eine tasse kaffee* :D

wenn x = 1 ist, kommt 573.5 raus. und da die ausgabe abgerundet werden soll, stimmt meine vorgabe 573 ;)

Jau O.O ahah erst0r :p bin fertig

Lukas
06.10.2005, 16:11
Ja, dadie. Dein Script glänzt echt durch Erweiterbarkeit. Und jetzt schreib das bitte so, dass das mit allen Zahlen von 1 - 1000000 funktioniert. Ohne Rundungsfehler.

@ !cks:
Änder in meinem Script die Zeile var out = 3.5 * (x*x) + 70 * x + 500; in var out = Math.floor(3.5 * (x*x) + 70 * x + 500); um, dann wird abgerundet.

Edit:
Vorher stand da aber was anderes (da hattest du den Eingabewert manuell geprüft und bei 1 auf 573 geändert. Ich fühl mich verarscht.
Nya, Hauptsache, das Script tut. Is ja im Prinzip eh das gleiche.

Edit 2:
Ja, ich hab das mit dem abrunden auch erst später mitgekriegt. Nya, egal.

Und noch was: man kann den Kram auch prima in eine Zeile quetschen, wenn man unübersichtlichen Code mag :D

dadie
06.10.2005, 16:13
Ja, dadie. Dein Script glänzt echt durch Erweiterbarkeit. Und jetzt schreib das bitte so, dass das mit allen Zahlen von 1 - 1000000 funktioniert. Ohne Rundungsfehler.

@ !cks:
Änder in meinem Script die Zeile var out = 3.5 * (x*x) + 70 * x + 500; in var out = Math.floor(3.5 * (x*x) + 70 * x + 500); um, dann wird abgerundet.

Garnicht wahr ;_; ich habe das nur für die entsprechenden zahlen gemacht bevor ich was vom abrunden gehört habe da sonst eine flasche zahl rauskommt.

auserdem
muss du bedenken ich hasse Javascript ok nicht hassen aber ich kann es nett :(

Edit: Ich 15 Zeilen du 17 Zeilen ^.^ das Else spart zwar rechenleistung frisst aber datenspeicher :D

edit2:

War aber mal ein Nices duel :D
sellten soviel spass gehabt 8)

!ckS
06.10.2005, 16:28
Vorher stand da aber was anderes (da hattest du den Eingabewert manuell geprüft und bei 1 auf 573 geändert. Ich fühl mich verarscht.
i'm sorry! ich hatte die ergebnisse für 1, 30, 60 und 100 bereits abgerundet vorliegen und hab sie ganz arglos ohne große rücksicht auf eventuelle nachkommastellen in diesen thread übertragen... :rolleyes:

@dadie
btw, dein script tut einen kleinen fehler haben und spuckt deshalb die falschen ergebnisse aus ^^
im var out muss 3.5 statt 3,5 stehen. dann ergibt x=1 auch 573, und nicht 575 ;)


trotzdem vielen vielen dank euch beiden für die scripts! =)

Lukas
06.10.2005, 16:31
i'm sorry! ich hatte die ergebnisse für 1, 30, 60 und 100 bereits abgerundet vorliegen und hab sie ganz arglos ohne große rücksicht auf eventuelle nachkommastellen in diesen thread übertragen... :rolleyes:Das bezog sich auf dadies Post. Dadie hatte in seinem Script erst manuell auf die Beispielwerte geprüft und den Output, den du wolltest, eingesetzt, und erst später die Rundung eingebaut. Darauf bezog sich auch der erste Teil meines Posts.
Wie gesagt, ist ja auch egal.