User44: Forschleife

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>

  1. 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.

  2. 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

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
  3. 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>

    1. 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>

      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.