PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe Javascript Berechnung



zug404
29.04.2009, 17:45
Also wir haben jetzt in der Schule Javascript.Vorher HTML, da bei HTML wusste ich alles, aber bei Javascript habe ich leider gefehlt und wirklich keinen Plan.
Nun lerne ich Javascript nach und bin bei einer Aufgabe stecken geblieben wo ich net weiterkomme , könntet ihr mir dabei bitte helfen?

Aufgabe 3: Fahrkartenautomat-Wechselgeld
Am Fahrscheinautomat wählt man einen Fahrschein zu einem bestimmten Preis P. Anschließend bezahlt man den Betrag B und bekommt Wechselgeld W zurück. Dabei sorgt der Automat dafür, dass die Anzahl der Münzen im Wechselgeld möglichst gering ist. Also nie 2 x 1€, sondern 1x 2€.

Schreibe ein Skript, das zu vorgegebenen Werten für den Preis und den bezahlten Betrag ausgibt, wie viele Münzen welcher Art wieder ausgeworfen werden.

Beispiel: Preis 2,10€, eingeworfen 5€, ausgegeben werden: 1x 2€, 1x 50cent, 2x 20 cent.

Das wäre sehr sehr nett wenn ihr mir helfen könntet

MFG,
zug404

Cheese
29.04.2009, 18:16
eingewurfene geld - preis -> wechselgeld


wechselgeld > größter schein?
ja-> schein ausgeben und vom wechselgeld abziehen und nochmal
nein -> wechselgeld > nächst kleinerer wert?

bis es auf 0 ist.

while (W>=50€)
{
gib 50€ aus;
W-50€
}
while (W>=20€)
{
gib 20€ aus;
W-20€
}
....
....
....
while (W>=1Ct)
{
gib 1Ct aus;
W-1Ct
}



dir ist klar das das ne art psäudocode ist und so der algo wäre, also das ist KEIN javascript ^^

VeN0m
29.04.2009, 18:20
Mh...
Ich kann Dir nicht versprechen, dass es geht. Ist nur mal eben zusammengezimmert ;)...



<script language="JavaScript" type="text/javascript">
<!--

var p = "2,10";
p = p.split(',');
p = p.join('');
var b = "5,00";
b = b.split(',');
b = b.join('');

var w = b-p;
var mu = true;
var zwei = true;
var eins = true;
var fuenfzig = true;
var zwanzig = true;
var zehn = true;
var fuenf = true;
var nullzwei = true;
var nulleins = true;

while(w > "0") {

w--;
mu++;

if(mu == "200") {

zwei++;
mu = "0";

}

if(mu == "100") {

eins++;
mu = "0";

}

if(mu == "50") {

fuenfzig++;
mu = "0";

}

if(mu == "20") {

zwanig++;
mu = "0";

}

if(mu == "10") {

zehn++;
mu = "0";

}

if(mu == "5") {

fuenf++;
mu = "0";

}

if(mu == "2") {

nullzwei++;
mu = "0";

}

if(mu == "1") {

nulleins++;
mu = "0";

}

}

document.write("Wechselgeld: "+zwei+" Zwei EuroStuecke");

//-->
</script>


Das ist auch eher provisorisch und sehr einfach, da ich gerade wenig Zeit habe.
Vom Prinzip her denke ich, ist es das einfachste: Du rechnest die Eurobeträge (mit den Kommata) in Centbeträge (ohne Kommata) um, indem Du einfach das Komma entfernst (mal 100 halt).
Danach rechnest Du die Differen, die hier 290 beträgt (500 - 210).
Die While-Schleife läuft nun 290 mal und zieht dem Wert (w) jeweils eins ab (w--) und rechnet auf mu (muenzen) eins dazu (mu++).
Wenn mu ganz genau gleich 200 dann rechnet sich zwei plus eins (zwei++). Das heißt, dass ein zwei Euro-Stück benötigt wird. Außerdem wird mu wieder auf 0 gesetzt, um erneut zu prüfen. Die 90 restlichen male wird geprüft, ob mu ganz genau 100 ist (was es nicht ist). Ist es ganz genau 50? Ja, nach 40 weiteren Durchläufen: Fuenfzig wird um eins erhöht (fuenfzig++). Dann noch 40 Durchläufe, wobei zweimal mu ganz genau 20 ist. Die Ausgabe müsstest Du dann noch Deinen Wünschen entsprechend anpassen. Ich käme somit auf 1*2€, 1*50 Cent und 2*20 Cent, was Du ja auch sagtest...
Korrekturen erwünscht, da nur mal eben prinzipiell zusammengezimmert ;).

zug404
29.04.2009, 20:31
Vielen Dank Power-Sven (http://free-hack.com/member.php?u=52873) und Cheese für eure Hilfe aber irgendwie funktioniert der Script nicht @ Power Sven könnte jemand evtl ein Funzendes Script Proggen das ich mir angucken kann um die zusammenhänge zu verstehen.

Das wäre extrem nett wenn es nicht zuviel mühe macht

MFG zug404

VeN0m
29.04.2009, 20:37
Ich denke es war nur ein kleiner Rechtschreibfehler... Der Versuch auf die Variable "zwanig" zuzugreifen. Falls dort noch mehr Fehler sind dann wohl noch mehr solche Fehler... Zusammenhang habe ich ja oben gepostet. ;) Also zumindest meinen Gedankengang.



<script language="JavaScript" type="text/javascript">
<!--

var p = "2,10";
p = p.split(',');
p = p.join('');
var b = "5,00";
b = b.split(',');
b = b.join('');

var w = b-p;
var mu = true;
var zwei = true;
var eins = true;
var fuenfzig = true;
var zwanzig = true;
var zehn = true;
var fuenf = true;
var nullzwei = true;
var nulleins = true;

while(w > "0") {

w--;
mu++;

if(mu == "200") {

zwei++;
mu = "0";

}

if(mu == "100") {

eins++;
mu = "0";

}

if(mu == "50") {

fuenfzig++;
mu = "0";

}

if(mu == "20") {

zwanzig++;
mu = "0";

}

if(mu == "10") {

zehn++;
mu = "0";

}

if(mu == "5") {

fuenf++;
mu = "0";

}

if(mu == "2") {

nullzwei++;
mu = "0";

}

if(mu == "1") {

nulleins++;
mu = "0";

}

}

document.write("Wechselgeld: "+zwei+" Zwei EuroStuecke");

//-->
</script>


Hoffe das geht jetzt.

hpoc
29.04.2009, 22:28
Kannst auch gleich schreiben wir sollen deine Aufgaben lösen.

K1ngC0bra
29.04.2009, 23:31
Yups. Das wichtigste ist Eigeninitiative aber lieder vergessen das soviele. Ich weis nicht worin die Schwierigkeit besteht, sich etwas Zeit zu nehmen und Herr Google zu fragen. Solche Aufgaben wie deinige sind absolut standart, jeder Informatikschüler muss sich damit rumplagen - also gibt es dazu massig Lösungsvorschläge und Ansätze.

Grüße C0bra