Bibliothek schreiben die einen privaten array verwendet!

BonKeri

Grünschnabel
Hallo zusammen,

ich füge am besten den Code zu was ich bis jetzt gemacht habe, bin mir nicht sicher ob ich die paar Zeilen richtig geschrieben haben. Ich hoffe da kennt sich jemand gut damit aus und kann mir weiterhelfen diesen Code zu ergänzen.

Es ist eine kleine Bibliothek mystack zu schreiben, die einen privaten Array arr = [ ] verwendet. Die Bibliotheksfunktionen set(), reset(), push(), pop(), each(), add(), debug() sind zu erg�nzen. Die Funktion debug() soll den privaten Array anzeigen.

F�r die Aufrufe der Bibliotheksfunktionen sollen Funktionsverkettungen m�glich sein, wie z.B.

Das Aufruf-Beispiel 1
mystack.debug().push('a').push('b').pop().debug(); zeige [ ] und [a] an.

Das Aufruf-Beispiel 2
mystack.reset().push(3).push(4).each(function(el){return el*el;}).debug();
zeige [9, 16] an.

Das Aufruf-Beispiel 3
mystack.reset().set(0,0).add(5).add(6).debug(); zeige [11] an.

a) Damit die Funktionsverkettungen m�glich werden, soll an allen


Stellen /* 1 */ der Code ___________________________ eingesetzt werden.

b) Die Funktion reset() bei /* 2 */ soll den Array arr "leer initialisieren".

c) Bei /* 3 */ soll der Variablenwert v auf den privaten Array arr
"gepushed" werden.

d) Bei /* 4 */ soll auf jedes Element von arr eine Funktion fn angewendet
werden. Der aktuelle fn-R�ckgabewert �berschreibt das aktuelle arr-Element.

e) Bei der Funktion set(val, idx), bei /* 5 */
soll idx mit den Index-Grenzen �berpr�ft werden.

f) Fehlt bei /* 6 */ bei einem Aufruf von add(val, idx) der
idx-Paramter, wie z.B. bei add(4711), so soll idx = 0 verwendet werden.

g) Bei /* 7 */ bei der Funktion debug() soll jeweils zwischen alle
arr-Elemente ein String ', ' einf�gt werden und aus arr ein
"Gesamt-String" erstellt werden, der in einer alert-Box angezeigt wird.

---code-anfang---

var mystack = (function() {

var i, arr = [ ];

function reset() { arr = []; /* 2 */ /* 1 */ }

function push(v) { arr.push[v]; /* 3 */ /* 1 */ }

function pop() { arr.pop(); /* 1 */ }

function each(fn) { /* 4 */
for( i = 0; i < arr.length; i += 1) {
arr=fn(Number(arr));
} /* 1 */
}

function set(val, idx) { /* 5 */

________________________________________________
arr[idx] = val; /* 1 */
}

function add(val, idx) { /* 6 */

if(typeof idx="undefined"){idx=0;}
arr[idx] += val; /* 1 */
}

function debug() { /* 7 */

alert('['+ arr.join(",") +']'); /* 1 */
}

return { set : set, // val in idx-Element
reset : reset, // privaten Array leeren
push : push,
pop : pop,
each : each, // auf jedem Element fn ausf�hren
add : add, // Zahlen/Strings auf idx
debug : debug // anzeigen des privaten Array
};
}());
---code-ende---
 
Zuletzt bearbeitet:
Hi
Schau dir mal die Code-Tags an die dieses Forum zu bieten hat. Auch stimmt was nicht mit deinem Zeichensatz deines Browsers und/oder Betriebsystems. (Oder einfach weil du Copy-Pasta machst).

Auf jeden Fall ist es aber so, dass wenn du dir Mühe gibst eine Frage zu verfassen, andere sich eher Mühe geben sie zu beantworten. So sieht es aber so aus, als dass du deine Hausaufgaben einfach hier reinkopierst ohne deinen Beitrag überhaupt nochmals zu überprüfen.
 
Hallo zusammen,

ich füge am besten den Code zu was ich bis jetzt gemacht habe, bin mir nicht sicher ob ich die paar Zeilen richtig geschrieben haben. Ich hoffe da kennt sich jemand gut damit aus und kann mir weiterhelfen diesen Code zu ergänzen.

Es ist eine kleine Bibliothek mystack zu schreiben, die einen privaten Array arr = [ ] verwendet. Die Bibliotheksfunktionen set(), reset(), push(), pop(), each(), add(), debug() sind zu erg�nzen. Die Funktion debug() soll den privaten Array anzeigen.

F�r die Aufrufe der Bibliotheksfunktionen sollen Funktionsverkettungen m�glich sein, wie z.B.

Das Aufruf-Beispiel 1
mystack.debug().push('a').push('b').pop().debug(); zeige [ ] und [a] an.

Das Aufruf-Beispiel 2
mystack.reset().push(3).push(4).each(function(el){return el*el;}).debug();
zeige [9, 16] an.

Das Aufruf-Beispiel 3
mystack.reset().set(0,0).add(5).add(6).debug(); zeige [11] an.

a) Damit die Funktionsverkettungen m�glich werden, soll an allen


Stellen /* 1 */ der Code ___________________________ eingesetzt werden.

b) Die Funktion reset() bei /* 2 */ soll den Array arr "leer initialisieren".

c) Bei /* 3 */ soll der Variablenwert v auf den privaten Array arr
"gepushed" werden.

d) Bei /* 4 */ soll auf jedes Element von arr eine Funktion fn angewendet
werden. Der aktuelle fn-R�ckgabewert �berschreibt das aktuelle arr-Element.

e) Bei der Funktion set(val, idx), bei /* 5 */
soll idx mit den Index-Grenzen �berpr�ft werden.

f) Fehlt bei /* 6 */ bei einem Aufruf von add(val, idx) der
idx-Paramter, wie z.B. bei add(4711), so soll idx = 0 verwendet werden.

g) Bei /* 7 */ bei der Funktion debug() soll jeweils zwischen alle
arr-Elemente ein String ', ' einf�gt werden und aus arr ein
"Gesamt-String" erstellt werden, der in einer alert-Box angezeigt wird.


---code-anfang---
Javascript:
var mystack = (function() {
var i, arr = [ ];

Javascript:
function reset() { arr = []; /* 2 */ /* 1 */ }

Javascript:
function push(v) { arr.push[v]; /* 3 */ /* 1 */ }

Javascript:
function pop() { arr.pop(); /* 1 */ }

Javascript:
function each(fn) { /* 4 */
for( i = 0; i < arr.length; i += 1) {
arr=fn(Number(arr));
} /* 1 */
}

Javascript:
function set(val, idx) {
/* 5 hier wusste ich nicht was ich schreiben soll*/
arr[idx] = val; /* 1 */
}

Javascript:
function add(val, idx) { /* 6 */
if(typeof idx="undefined"){idx=0;}
arr[idx] += val; /* 1 */
}

Code:
function debug() { /* 7 */
alert('['+ arr.join(",") +']'); /* 1 */
}


Javascript:
return { set : set, // val in idx-Element
reset : reset, // privaten Array leeren
push : push,
pop : pop,
each : each, // auf jedem Element fn ausf�hren
add : add, // Zahlen/Strings auf idx
debug : debug // anzeigen des privaten Array
};
}());

---code-ende---
 
Moin,

mal ganz davon abgesehen, dass es immer noch DAS Array heißt, sehe ich jetzt in Deinem letzten Beitrag keine konkrete Frage .... :rolleyes:

Aber vielleicht sehe ich auch nur den Wald vor lauter Bäumen nicht o_O

Wie wäre es, wenn Du das Ganze erstmal strukturierst ??
Poste mal die jeweiligen Teilaufgabe zusammen mit Deinem zugehörigen Code ... stell' dann dazu eine konkrete Frage !!

So sieht es mMn immer noch so aus, als dass du deine Hausaufgaben einfach hier reinkopierst ... :oops::(

BTW: Java != JavaScript - auch bei den Code-Tags ;)

Gruß Klaus
 
z.B. wäre meine frage was kommt in die /*5*/ rein, also in die funktion set
Fragenstellung(wie oben auch steht!):
e) Bei der Funktion set(val, idx), bei /* 5 */
soll idx mit den Index-Grenzen überprüft werden.
 
Zurück