For schleife

Notfalls könnte man die Schleife freilich mehrfach für die diversen Operatoren durchlaufen lassen und die Werte der jeweiligen Indices dann gemäß der Rangfolge verrechnen. Die Zwischenergebnisse und die übrigen Operatoren niedrigeren Rangs pusht man dann der Reihe nach in ein neues Array. Irgendwie wird man das schon hinbekommen. Mich irritiert nur (von der bisherigen Darstellung her), warum überhaupt so eine bizarre Lösung verfolgt wird.
 
Gut ich kann später einzelheiten erleutern dann ist meine Frage, wie ich das ganze mit einer while-schleife lösen kann? ich mag das nicht wen man alles kritiesiert was ich zutun habe egal wozu und warum ich das tue.

VG,
Simon
 
Die Kritik würde ich prinzipiell positiv sehen :), gerade wenn auch auf sinnvolle Alternativen hingewiesen wird (an welche man selbst vielleicht gar nicht gedacht hat).

Es ist natürlich auch möglich, dass Du diese Überlegungen bereits selbst angestellt hast. Das kann allerdings niemand wissen, man hat ja zunächst nur die Infos die mit der Fragestellung mitgeliefert werden.

Daher würde ich deinen Vorschlag aufgreifen und dich bitten, diesen fehlenden Kontext noch zu ergänzen. Finde das eine gute Idee! :daumen: Das vermittelt dann vielleicht einfach ein besseres Verständnis für die Aufgabe an sich und den Grund für deine Herangehensweise.

Hier können und wollen sicher einige User Hilfe anbieten. Aber ich muß tatsächlich zugeben, dass ich nicht recht weiß wie ich hier ansetzen soll. :confused_alt: Wenn du die Aufgabenstellung und deine Vorstellung einer Umsetzung beschrieben hast, kommen sicher passende Vorschläge, die für dich dann auch wirklich nützlich sind.

Also Kopf hoch, das wird schon werden! :schluck:
 
Klingt nach Hausaufgaben. Erst nicht so Recht mit der Aufgabe raus Rücken und jetzt "OK macht mir das ganze jetzt mit einer while Schleife".

Das würde auch erklären warum etwas selber gemacht werden soll was man in der realen Welt nicht selber machen würde.
 
  • Gefällt mir
Reaktionen: Madman1209
Sorry, aber ich weiß immer noch nicht was genau nun gemacht werden woll. Warum ist es so schwer die genaue Aufgabe zu beschreiben.
Was genau ist Input, was ist Output?
Wenn es wirklich ein String "1 + 2 * 3" z.B. ist, wie behandelst du die Präzedenz (Operatorrangfolge)? Hier hat auch niemand for Schleifen kritisiert, um jetzt auf while Schleifen zu wechseln.

Bitte Aufgabenstellung vollständig. Und nicht zum n-ten mal dieses nutzlose Code Snippet von einer for Schleife ...
 
  • Gefällt mir
Reaktionen: Myron
Ok zu der der Aufgabe ich will in einer Rechnung die ermitteln, bisher habe ich das mit indexof getan aber das macht für meinen spezielen fall später nur probleme deshalb frage ich hier ob man das ganze auch mit einer Schleife zu machen, so das ich es ungefähr so abrufen kann:
Code:
console.log(stelleoperator[1])

Ach und zu den amschuldigungen dass das eine Hausaufabe ist kann ich sagen dass ich dankbar wäre würde man so etwas in der Schule lehren, leider ist es nicht so.
 
Wenn du die so ermitteln willst und die dir so mit indexof Probleme machen, ja for-Schleife ruhig machen, kannst du dann ungefähr so abrufen wie du schreibst. Du musst dann halt da wo die sind dann gucken und damit du dann da mit [1] abrufen kannst.

Helfe gerne, frag ruhig nach wenn noch was unklar sein sollte.
 
Ich verstehe nicht ganz wie ich dass umsetzen soll, ich verstehe nicht wie ich das umsetzen kann.
Wie macht man das denn dann? Wahrscheinlich diesen code umschreiben oder ?
Raijin schrieb:
var firstIndex = text.length; for (var i = 0; i < text.length; i++) { if (text == '?') { if (i < firstIndex) { firstIndex = i; } } }
 
Das kannst du mit einer for-Schleife oder auch mit while umsetzen. Du fängst am Anfang an und dann Schrittweise immer eine Stelle weiter. Du musst natürlich aufhören, wenn du das gefunden hast. Schleife müssen nicht bis zum Ende durchlaufen.
 
Das wäre nur für den ersten Index. Und offenbar willst Du alle Indices und diese Indices willst Du außerdem in dem Array stelleOperator speichern. Also eher so:


Javascript:
const stelleOperator = [];
for(let i = 0; i < myString.length; i++)
    if (myString[i] === "zeichen")
        stelleOperator.push(i);
 
In deiner ursprünglichen Frage wolltest du explizit nur den ersten Index haben, an dem das fragliche Zeichen auftaucht. Das hatte ich dir in 3 Varianten gezeigt. Wo genau jetzt das Problem mit indexof ist, erschließt sich mir dennoch nicht.

Simonnnn schrieb:
Ok zu der der Aufgabe ich will in einer Rechnung die ermitteln, bisher habe ich das mit indexof getan aber das macht für meinen spezielen fall später nur probleme
Was sind denn das für Probleme? Es ist doch sinnvoller, Probleme zu lösen anstatt einen Workaround zu basteln. Du wurdest schon mehrfach darum gebeten, den fraglichen Quellcode hier zu posten. Da muss dir auch nix peinlich sein, wenn der Code vielleicht "unprofessionell" aussieht oder so. Für uns ist es nur denkbar schwierig, Lösungen zu Problemen zu posten, die wir nicht nachvollziehen können. Mir würde beispielsweise nicht mal ein Problem einfallen, das ich bei indexof provozieren könnte, abgesehen davon, dass man den Startindex für die Suche verbaselt...
 
  • Gefällt mir
Reaktionen: Madman1209
ich finde das passt schon so, er muss jetzt nur noch den code umschreiben und das mit der for-schleife umsetzen.
 
Also, ich bin 14 und hab spaß am programmieren ich hatte so einen
eval() rechner schon einmal gebaut und will das jetzt nochmal besser machen. Damals hab ich für so etwas wie
indexof ungefähr 100 Zeilen geschrieben weil es einfach nicht richtig gemacht habe und zu kompliziert. Ich glaube halt das es so viel leichter ist wenn ich das mit einer schleife mache. Und meinen code zeig ich hier nicht, weil ich es nicht mag wenn man das kritisiert was ich wie mache weil es mir nicht um effektivität geht.
 
Simonnnn schrieb:
Also, ich bin 14 und hab spaß am programmieren ich hatte so einen
eval() rechner schon einmal gebaut und will das jetzt nochmal besser machen.
eval() ist durchaus nicht per se böse. Für den Rechner mußt du ohnehin sicherstellen, dass nur gültige Eingaben (Zahlen, Operatoren) zugelassen sind. Dann kann auch niemand bösartigen JS-Code in dein Textfeld übergeben. Es spricht jedoch auch nichts dagegen Neues auszuprobieren und etwas dazuzulernen.
Simonnnn schrieb:
Ich glaube halt das es so viel leichter ist wenn ich das mit einer schleife mache.
Ist auch vollkommen in Ordnung; probiere es einfach aus. Mein Tip wäre dann nur, nicht einfach drauflos zu programmieren. Überlege dir deinen Algorithmus zumindest grob von Eingabe bis Ausgabe und versuche, das in Pseudocode aufzuschreiben. Dann werden Problemstellen deutlich und man erkennt rasch geeignete und ungeeignete Ansätze.
Simonnnn schrieb:
Und meinen code zeig ich hier nicht, weil ich es nicht mag wenn man das kritisiert was ich wie mache weil es mir nicht um effektivität geht.
Das ist schade, weil das sehr lehrreich sein kann. Kritik hilft beim Lernen und Verstehen und sie richtet sich ja auch nicht gegen dich persönlich, sondern kann dich (themenbezogen und konstruktiv) unterstützen besser zu werden.
 
Simonnnn schrieb:
Und meinen code zeig ich hier nicht, weil ich es nicht mag wenn man das kritisiert was ich wie mache weil es mir nicht um effektivität geht.
Und worum geht es dir sonst? Wenn man niemanden, der sich den Code anschaut - sei es ein Lehrer, ein Kumpel oder auch Leute aus einem Forum - hat man auch niemanden, der einem sinnvolle Tips zur Verbesserung geben kann. Durch (konstruktive) Kritik wird man besser, wenn man die Kritik annimmt. Du schreibst ja selbst, dass du es diesmal besser machen willst und da sind Tips von Leuten, die mehr Erfahrung haben doch eigentlich gut, oder nicht?

Simonnnn schrieb:
Damals hab ich für so etwas wie
indexof ungefähr 100 Zeilen geschrieben weil es einfach nicht richtig gemacht habe und zu kompliziert. Ich glaube halt das es so viel leichter ist wenn ich das mit einer schleife mache.
So ziemlich alles, was man zig Mal Zeile für Zeile wiederholt, lässt sich mit einer Schleife vereinfachen. Ob das bei dir der Fall war/ist, kann man natürlich nur beurteilen, wenn man den Code kennt. Auf jeden Fall ist es wenig sinnvoll, Funktionen wie indexof nachzubauen, wenn am Ende genau dieselbe Funktionalität dabei rauskommt. Die beiden for-Schleifen, die ich weiter oben gepostet habe, tun exakt dasselbe wie indexof.

indexof wird übrigens selbst häufig in einer Schleife verwendet, um alle Vorkommnisse eines Zeichens in einem String zu ermitteln. Dabei wird einfach innerhalb einer Schleife der StartSuchIndex von indexof immer auf LetzterFundIndex+1 gesetzt.

Wie auch immer, da es schwierig ist, jemandem beim Programmieren zu helfen und ihm sinnvolle Tips zu geben, wenn man keinen Code zu Gesicht bekommt, und es unheimlich anstrengend ist, bei einem mutmaßlichen XY-Problem das Y zu lösen anstatt das X anzugehen, bin ich erstmal raus, lese aber weiter mit.
 
  • Gefällt mir
Reaktionen: abcddcba und Madman1209
Naja nur mal zu der Kritik und das Kritik hilft: Ja aber nur mit diesem code
PolarSun schrieb:
const stelleOperator = []; for(let i = 0; i < myString.length; i++) if (myString === "zeichen") stelleOperator.push(i);
konnte ich gestern abend mehr als die Hälfte von meinem bisher geschriebenen code ersetzen.
Und davor musste ich mir alle möglichkeiten anhören, die ich schonmal ausprobiert hatte und erst 3 Tage später wollte mir hier jemand die lösung sagen auf die Frage die ich schon am anfang gestellt habe. Und deshalb mag ich es nicht hier Kritik abzubekommen.

VG,
Simon
 
Simonnnn schrieb:
erst 3 Tage später wollte mir hier jemand die lösung sagen auf die Frage die ich schon am anfang gestellt habe
Was aber daran lag, dass du die Frage nicht verständlich beschrieben hast. Hättest du von Anfang an den vollständigen Code oder eine bessere Beschreibung deines Problems anstatt Code-Schnipseln gebracht, hätte das vielleicht auch nicht 3 Tage gedauert.
Hier hält niemand mit Absicht die Lösung 3 Tage zurück, nur um dich in der Zwischenzeit zu kritisieren o.ä..

Du musst einfach verstehen, dass wir nunmal nicht die Aufgabe kennen, die du für selbstverständlich hälst weil sie vor dir liegt.
 
Simonnnn schrieb:
Naja nur mal zu der Kritik und das Kritik hilft: Ja aber nur mit diesem code
const stelleOperator = []; for(let i = 0; i < myString.length; i++) if (myString === "zeichen") stelleOperator.push(i);
konnte ich gestern abend mehr als die Hälfte von meinem bisher geschriebenen code ersetzen.
aha ... ich behaupte mal dieser Code funktioniert so schon mal nicht - warum kannst du dir ja selbst überlegen. Aber ok - dann hat sich das Thema ja erledigt.

Auf weitere Hinweise und Fragen bist du ja nicht eingegangen ,warum wirst wohl nur du selbst wissen. Warum indexOf nicht geht hast du auch nie erklärt. Ob du nur einen einzelnen binären Operator wie "1 +3" erlaubst, oder auch komplere Ausdrücke wie "1 + 2 * 3" verarbeiten willst, da hast du auch nie darauf reagiert. Dass es dann schon mal nicht trivial mit einer for-Schleife geht, möchtest du ja nicht glauben.

Warum du jetzt beleidigt reagierst und nicht einfach den kompletten Code zeigen willst, ist deine Sache. Ob das hilfreich für dich ist, sei mal dahingestellt.

Dann viel Erfolg trotzdem mit deinem Taschenrechner.
 
Zuletzt bearbeitet: (Typos)
abcddcba schrieb:
aha ... ich behaupte mal dieser Code funktioniert so schon mal nicht - warum kannst du dir ja selbst überlegen. Aber ok - dann hat sich das Thema ja erledigt.
Ehrlich gesagt, ich bin mir auch nicht sicher ob der Code funktioniert (in dem Sinne, dass er tut, was der TO möchte). Wie aber auch bei den anderen Vorschlägen liegt das nicht an der teils ja unterstellten, fehlenden Hilfsbereitschaft, sondern vielmehr am Fehlen einer genauen Spezifikation dessen, was der Code denn nun tun und wie dieser Verarbeitungsschritt dort hinein passen soll.

Ich bin mir mittlerweile auch nicht mehr sicher, in welchem Maße ein ausreichendes Verständnis für einen geeigneten Programmablauf und Algorithmus vorhanden ist. Bei der Implementierung zu helfen sowie Fehler und Alternativen aufzuzeigen, wäre hier ja kein Thema - nur braucht es da zunächst mal eine Basis (Code) mit der man arbeiten kann und natürlich zumindest grundlegendes Wissen über elementare Programmiertechniken wie Schleifen.

Es ist auch nicht schlimm, wenn man etwas noch nicht weiß oder der Code nicht wie im Lehrbuch aussieht. Wer Hilfe erwartet sollte dann jedoch schlicht mit offenen Karten spielen. Für Fehler muß man sich ohnehin nicht schämen. Die gehören dazu und gerade beim Programmieren gibt es wirklich grandiose Fehler, die sehr viel vom Verständnis und den Gedankengängen zeigen können. Fehler sind einfach die großartigste Art zu lernen - also her mit dem Code! :)
 
  • Gefällt mir
Reaktionen: abcddcba
Zurück
Oben