Forschleife
User44
- javascript
Hi!
Hätte da mal eine Frage...ich würde gerne in meinen String(var string) die Zahl an der Stelle eins(string[ix]) mit der Zahl an der Stelle zwei(string[ix+1]) multiplizieren und das Ergebnis der Stelle eins mit jenen der Multiplikation ersetzen! Hierfür habe ich eine For-Schleife angefertigt und eine replace-Funktion eingefügt.
Das Ergebnis im unten angegebenen Code sollte also 44NAN sein...Die Lösung müsste mit einer Schleifenfunktion abgearbeitet werden
Leider hängt sich die Funktion auf und lädt ewig bis ein Ladefehler auftritt...ich weiß leider nicht wo der Fehler begraben liegt und wäre euch um jeden nützlichen Rat dankbar!
Glg und vielen Dank schon mal im Voraus User44
Hier ist mein vollständiger Code :P
<div id="Ausgabe"></div>
<script>
var string = "222";
for(var ix=0; ix < (string.length); ix++){
string = string.replace(new RegExp(string[ix]), parseInt(string[ix])*parseInt(string[ix+1]))
}
document.getElementById("Ausgabe").innerHTML = string
</script>
Wenn du ix bis zum letzten Zeichen laufen lässt, hast du mit ix+1 ein Problem.
Warum Regex zum Ersetzen? replace ersetzt alle Vorkommen, in deinem Fall alle Zweier.
Mach Testausgaben, debugge das Script um zu sehen was passiert.
Das Ergebnis im unten angegebenen Code sollte also 44NAN sein...
Ist das sinnvoll? Was soll passieren wenn bei der Multiplikation was zweistelliges rauskommt?
Sowohl Aufgabenstellung als auch die Lösung machen bisher einen recht komischen Eindruck. Gib mal ein Beispiel an was da schrittweise wie passieren soll.
Hi,
Das Ergebnis im unten angegebenen Code sollte also 44NAN sein...Die Lösung müsste mit einer Schleifenfunktion abgearbeitet werden
Leider hängt sich die Funktion auf und lädt ewig bis ein Ladefehler auftritt...
Natürlich tut sie das – weil sich dadurch, dass NAN eingefügt wird, auch die Länge des Strings ändert … und da die Abbruch-Bedingung deiner Schleife sich auf die jeweils aktuelle Länge des Strings bezieht, geht das ewig so weiter.
for(var ix=0; ix < (string.length); ix++){
Ersetze das durch
for(var ix=0, l = string.length; ix < l; ix++){
MfG ChrisB
Hi!
Hätte da mal eine Frage...ich würde gerne in meinen String(var string) die Zahl an der Stelle eins(string[ix]) mit der Zahl an der Stelle zwei(string[ix+1]) multiplizieren und das Ergebnis der Stelle eins mit jenen der Multiplikation ersetzen! Hierfür habe ich eine For-Schleife angefertigt und eine replace-Funktion eingefügt.
Das Ergebnis im unten angegebenen Code sollte also 44NAN sein...Die Lösung müsste mit einer Schleifenfunktion abgearbeitet werden
Leider hängt sich die Funktion auf und lädt ewig bis ein Ladefehler auftritt...ich weiß leider nicht wo der Fehler begraben liegt und wäre euch um jeden nützlichen Rat dankbar!
Glg und vielen Dank schon mal im Voraus User44
Hier ist mein vollständiger Code :P
<div id="Ausgabe"></div>
<script>
var string = "222";
for(var ix=0; ix < (string.length); ix++){
string = string.replace(new RegExp(string[ix]), parseInt(string[ix])*parseInt(string[ix+1]))
}
document.getElementById("Ausgabe").innerHTML = string
</script>
Danke an alle Antworten!!! Insbes. an ChrisB für die Lösung!!
Ok...
Die Aufgabenstellung ist erkenne Formeln anhand eines Strings...
zB.:
erkenne dass die Steigung im String für alle Stellen
1234
+1 ist(bei der Differenzierung kann im Endstring das Ergebnis der zB. ersten mit der zweiten Stelle vergleichen...sprich die Steigung ist an zB. 3 Stellen gleich daher wiederholt sich die Formel drei mal x+1...was auch der Sinn hinter dem ganzen ist)
bzw.:
5432
-1 sinkt
248
bzw. *2 gerechnet wird (für die Multiplikation müsste man den Ausgangsstring mit dem Endstring(der durch multiplikation zB. wie zuvor mal 2) vergleichen)
Das Problem wäre hier wie von Encoder richtig erkannt dass bei der Änderung von einer auf zwei Stellen im String in der Schleife das Ergbnis wie es bei dem bsp. 5432 der Fall wäre inkorrekt ist!!!
Anstatt für jede Stelle -1-1-1 auszugeben ist das Ergebnis -3-232....:´(
Wäre nett wenn mir jemand auf die Sprünge helfen könnte...
Glg User44
Code Bsp:
<div id="Ausgabe"></div>
<script>
var string = "5432";
for(var ix=0, l = string.length; ix < l; ix++){
string = string.replace(string[ix], parseInt(string[ix+1])-parseInt(string[ix]))
}
document.getElementById("Ausgabe").innerHTML = string
</script>
Hi,
Anstatt für jede Stelle -1-1-1 auszugeben ist das Ergebnis -3-232....:´(
Wäre nett wenn mir jemand auf die Sprünge helfen könnte...
Das Problem ist, daß Du den zu untersuchenden String während der Untersuchung veränderst, und damit die weitere Untersuchung beeinflußt.
cu,
Andreas