hilfdirselbst.ch
Facebook Twitter gamper-media
"Funktioniert nicht" ist keine hinreichende Fehlerbeschreibung.
Simone
Beiträge: 3
20. Jan 2003, 20:54
Beitrag #1 von 7
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Hoi zäme

Ha es riesigs Problem met de Husufgabe förd Schuel:

1) Berechnen Sie mit Hilfe der festgelegten Wiederholung (for-Schlaufe) die Summe der Zahlen 1-10.

2) Beschreiben Sie ein Programm, das zu einer beliebigen Zahl im Bereich von 1 bis 1000 ermittelt, wie oft diese Zahl durch 5 teilbar ist. Verwenden Sie hierfür die kopfgesteuerte Wiederholung und den arithmetischen Operator Modulo (%) für die Abfrage.

Wer cha mer hälfe? Set's möglichst rasch ha!

Merci vell vell mol!

Gruess, Simone Top
 
X
Ollli
Beiträge: 458
20. Jan 2003, 22:23
Beitrag #2 von 7
Beitrag ID: #21978
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Ich hoffe, du kannst das jetzt lesen ;-)
Erstmal muss ich bemerken, dass eure Sprache einfach super ist und
wenn ich mir das dann noch akkustisch vorstelle ... :-)

So, hier mein Lösungsvorschlag:
--- Begin Code ---
<html>
<head>
<script language="JavaScript">

function aufgabe1() {
var summe=0;
for (var i=1;i<=10;i++) {
summe += i;
}
alert (summe);
}

function aufgabe2() {
var zahl,teiler;
zahl = Math.random()*1000;
Math.round(zahl);
teiler = (zahl-(zahl%5))/5;
alert (teiler);
}

</script></head>
<body>
<a href="#" onclick="aufgabe1()">aufgabe1</a><br />
<a href="#" onclick="aufgabe2()">aufgabe2</a>
</body>
</html>
--- End Code ---

Bei der zweiten Aufgabe frage ich mich, wozu man eine Schleife machen muss, wenn es doch so einfach geht?!

Ollli
-----------
ja, es stimmt - es sind wirklich 3 "l" im Namen und ich bestehe auf jedes einzelne ;-)
als Antwort auf: [#21973]
(Dieser Beitrag wurde von Ollli am 20. Jan 2003, 22:25 geändert)
Top
 
Simone
Beiträge: 3
22. Jan 2003, 20:26
Beitrag #3 von 7
Beitrag ID: #22208
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Hallo OLLLi

Danke vell vell vell mol för dini Helf ond förs "Sproche-Komplimänt"!
Ich werde jetzt grad mol anehocke ond da probiere! Wenn's klappt, chann ich dank der am Zischtig d'Husufgabe brilliant präsentiere!

Grüessli vo de Simone
als Antwort auf: [#21973] Top
 
Markus Walker  M 
Beiträge: 494
23. Jan 2003, 14:43
Beitrag #4 von 7
Beitrag ID: #22333
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Auch bei der ersten Aufgabe ist keine for Schleife nötig, wie seinerzeit ein gewisser Herr Gauss (war auf den 10-Mark-Scheinen abgebildet) seinem Volksschullehrer vorgeführt haben soll. Damals sollten die Schüler aber die Zahlenreihe von 1...100 addieren und mangels Taschenrechner und PC natürlich händisch. Da drängte sich eine Lösung ohne Schleifen noch viel mehr auf!
Schulaufgaben haben eben nicht immer etwas mit dem realen Leben zu tun...

Eine allgemeine Lösung zur ersten Aufgabe lautet für eine fortlaufende Zahlenreihe:
u = erste Zahl (untere Grenze der Reihe)
o = letzte Zahl (obere Grenze der Reihe)
Summe = (o-u+1)*(u+o)/2

Das heisst, es wird die Mitte der Reihe bestimmt (u+o)/2 und diese mit den Anzahl Elementen (o-u+1) der Reihe multipliziert. Dies funktioniert auch für eine Reihe z.B. von 294...540.
Die Lösung von Ollli ist natürlich korrekt, da die Aufgabe eine for Schleife verlangte.

Als JavaScript-Funktion:
function aufgabe1(u, o) {window.alert((o-u+1)*(u+o)/2)}


Aufgabe2:
Die Aufgabenstellung erscheint mir nicht sehr präzise. Ist nun der ganzahllige Anteil der Division durch 5 gefragt oder wie manche Division durch 5 Ergebnisse mit ganzzahligem Anteil liefert? Aufgrund der Knopfsteuerung würde ich das letztere vermuten und zeige diese Lösung auf. Falls das erstere zutrifft, kann Olllis Lösung benutzt werden.
Ich stimme Ollli zu, dass auch hier keine Schlaufe nötig ist. Die knopfgesteuerte Wiederholung ist natürlich auch nicht nötig, da diese in einem Rechengang zu erledigen ist, sofern die Logarihtmus-Funktion und deren Anwendungen bekannt sind. Um die Lösung zu berechnen, muss der ganzzahlige Anteil (Math.floor()) des 5er-Logarithmus der vorgegebenen Zahl berechnet werden.

Als JavaScript-Funktion (allgemeine Lösung, für die obige Aufgabe wäre zahl = 1...1000 und basis = 5):
function aufgabe2(zahl, basis) {window.alert(Math.floor(Math.log(zahl)/Math.log(basis)))}

Da aber eine manuell zu steuernde Wiederholung auf Basis des Modulo-Operators verlangt wird, muss halt eine andere Lösung gesucht werden. Ich halte die Aufgabe nicht für eine schlaue Anwendung des Modulo-Operators, aber siehe Bemerkung oben. Aber wenn es denn sein muss:

function aufgabe2(zahl, teiler) {
if (typeof(window.basis) == "undefined") { //globale Variableln definieren
window.basis = 0;
window.eingabeZahl = zahl;
}
if (zahl < window.eingabeZahl) { // Abbruchbedingung
window.alert("Die Zahl " + window.eingabeZahl + " lässt sich " + window.basis + " mal ganzzahlig durch " + teiler + " teilen.");
window.basis = window.nonexist; //globale Variablen löschen
window.eingabeZahl = window.nonexist;
window.document.aufgabe2input.reset(); //Formular reset
}
else {
window.basis++
this.document.aufgabe2input.zahl.value = (zahl-(zahl%5))/5; //Berechnung wie von Ollli
}
}


Folgendes Formular wird dazu benötigt:

<FORM NAME=aufgabe2input>
Zahl: <INPUT TYPE=text NAME="zahl">
Basis: <INPUT TYPE=text NAME="basis">
<BR>
<BR>
<INPUT TYPE=button VALUE="rechne!" onClick="aufgabe2(zahl.value, basis.value)">
</FORM>

als Antwort auf: [#21973]
(Dieser Beitrag wurde von Markus Walker am 23. Jan 2003, 14:46 geändert)
Top
 
Ollli
Beiträge: 458
23. Jan 2003, 20:20
Beitrag #5 von 7
Beitrag ID: #22367
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


@Simone
Wenn ihr die Hausaufgaben dann mal verglichen habt, dann würde mich die Lösung interessieren und es wäre schön, wenn du sie hier ins Forum posten könntest.
So gut und schön die Sprache aussieht und sicherlich auch klingt, ich konnte nicht alles verstehen, was oben stand (in deinem 2. Posting).

@Markus
Deine Lösung ist natürlich umfangreicher und genauer. An Gauss habe ich gedacht, als ich das Ergebnis der Schleife überprüfte, aber das per Gauss zu lösen ist mir nicht in den Sinn gekommen *kopfschüttel*
[OT]
Studierst du Mathematik oder sowas? Und kann es sein, dass du JS ganz gut drauf hast? Wenn ich mich recht entsinne wird noch ein Mod für das JS-Forum gesucht, vielleicht haste Lust dazu?!

Ollli
-----------
ja, es stimmt - es sind wirklich 3 "l" im Namen und ich bestehe auf jedes einzelne ;-)
als Antwort auf: [#21973] Top
 
Simone
Beiträge: 3
25. Jan 2003, 14:05
Beitrag #6 von 7
Beitrag ID: #22524
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Hallo Olli + Markus

Extra für Olli auf hochdeutsch:
Euer Einsatz ist echt bewundernswert! Als ich mich einloggte, dachte ich nicht, dass ich so schnell eine Antwort erhalten werde! Herzlichen Dank!!!

Die 2. Übung habe ich inzwischen auf meinen Studenten-Server gespickt und bin nun gespannt, was der Dozent am Dienstag dazu sagt! Selbstverständlich werde ich nach der Besprechung der Lösung diese hier rein schreiben, ok?

Übung 1 funktioniert leider noch nicht. Aber kann gut sein, dass dies an mir liegt! Ich habe mal euren Code kopiert, aber als Lösung kommt dann die Zahl 55 im alert-Fenster. Aber richtigerweise müsste die Lösung doch so aussehen:

Resultat von
1+2
1+2+3
1+2+3+4 usw. - 10

Habe ich da was falsch aufgefasst? Alle Anfänge sind schwer!

Schönes Weekend!
Simone
als Antwort auf: [#21973] Top
 
Ollli
Beiträge: 458
25. Jan 2003, 18:01
Beitrag #7 von 7
Beitrag ID: #22530
Bewertung:
(1618 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

festgelegte Wiederholung / kopfgesteuerte Wiederholung


Achso, wenn es ein String werden soll, muss das natürlich bissl anders aussehen:

function aufgabe1() {
var summe="";
for (var i=1;i<=10;i++) {
summe += i + "+";
}
alert (summe.substring(0,summe.length-1));
}

Danke übrigens, dass du dir die Mühe gemacht hast, es verständlich für mich zu schreiben (auf Hochdeutsch) :-)

Ollli
-----------
ja, es stimmt - es sind wirklich 3 "l" im Namen und ich bestehe auf jedes einzelne ;-)
als Antwort auf: [#21973] Top
 
X