Forenindex » Programmierung/Entwicklung » JavaScript » ahhhhh helft mir

ahhhhh helft mir

Anonym
Beiträge gesamt: 22827

30. Jun 2004, 14:16
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
 Hallo allerseits!

Ich bin in der 10.Klasse und wir haben gerade in Informatik ein Projekt... worum gehts.. natürlich Javascript!!

Nur leider haben ich und meine zwei Freunde nicht die nötige Ahnung! Also hab ich gesucht und gesucht bis ich diese Seiter hier fand... ich würde mich freuen wenn ihr mir helfen würdet!!

Also hier die Aufgaben:

1.)

Eine Zahlenfolge an(mit der Basis n) (nnat. Zahl) ist definiert durch:

a1(mit index 1) = 1/3 (Ein Drittel), a(mit index n+1) = a(mit index n)+ 1 durch (2n+1)(2n+3).

Ebenso : an(mit index n) = n durch 2n+1.

a) Schreiben Sie ein JavaScript, das obige Zahlenfolge an(a mit index n) explizit durch Aufruf einer FUnktion berechnet ( d.h. zu einzugbender Zahl n den FUnktionswert f(n) an(a mit index n) berechtnet und ausgibt)!

b) Schreiben Sie sodann ein JavaScript, das obige Zahlenfolge rekursiv berechnet!

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 14:45
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
Woran scheitert es denn?

Ihr sollt eine Zahlenfolge
a[1] = 1/3
a[n+1] = a[n] + 1 / (2 * n + 1) * (2 * n + 3)

a) mit Iteration
b) mit Rekursion
berechnen.

a) dürfte mit einer Schleife zu erledigen sein.
b) mit einem rekursiven Funktionsaufruf(hier ist die Abbruchbedingung wichtig).

Die Zahlenfolge kann man in einem Array abspeichern oder mit alternierenden Variablen temporär erzeugen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 30. Jun 2004, 14:59 geändert)

ahhhhh helft mir

Anonym
Beiträge gesamt: 22827

30. Jun 2004, 14:56
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
jetzt schon mal danke... aber wir haben schon alles versucht und bekommen es nicht hin... wir müssen bis montag inklusive homepage abgeben.. alles fertig bis auf diese aufgabe... wenn ihr mir das script schreiben könnten oder wenigstens einen teil dann wär ich schon sauuuuu froh.. danke!!

thx,thx,thx

ahhhhh helft mir

Anonym
Beiträge gesamt: 22827

30. Jun 2004, 14:59
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
achja... auf die frage woran es liegt... AN ALLEM!!!

wir können gar nichts... ich kann nur webdesign.. aber sonne scheiß rechnung nicht

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:00
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
also wenn ihr schon $ALLES versucht habt, müsste ja das Programm schon fertig sein. Wie sieht denn $ALLES aus?


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 30. Jun 2004, 15:01 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:03
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
hab mir nen account angelegt... so neeee ehrlich gesagt können wirs einfach nicht... kann dran liegen das wir im unterricht nicht so aufgepasst haben... auf jeden fall haben wir keine ahnung wie wir das script machen sollen...

:)

hast du das irgendwie studiert??

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 15:13 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:13
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
habt Ihr schon mal mit dem Taschenrechner eine Wertetabelle für die ersten paar Werte ermittelt?

z.B.

n : Wert
1 : 0.333333
2 : 2
3 : 3.4
4 : 4.69



Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

> hast du das irgendwie studiert??
ja

(Dieser Beitrag wurde von oesi50 am 30. Jun 2004, 15:14 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:16
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
ne haben wir noch nicht.. hilft das irgendwie weiter??

ich stell mich echt nicht dumm oder so!!!

aber wie kann ich im taschenrechner den index angeben??

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 15:18 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:24
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
Leute, Leute, was lernt Ihr bloß in der Schule?

Die Berechnung dient der Kontrolle. Habt Ihr noch nie eine Wertetabelle aufgestellt?

(Dieser Beitrag wurde von oesi50 am 30. Jun 2004, 15:28 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:26
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
wenn du wüsstest was wir für ne pfeife als lehrer habe!!! der kopiert und 1000 zettel, die sollen wir lesen und dann sollen wirs können.. nennt man sowas unterricht

ne keine wertetabelle für die aufgabe... mein prob ist ja mit dem t-rechner a(index n) also meinetwegen index4 zu schreiben

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 15:31 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:37
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
Na gut, üben wir mal Taschenrechner.

Zettel und Stift raus!

Hinschreiben!
n : Wert

Eintippen: 1 / 3 =
Hinschreiben!
1 : 0.3333333333333

Eintippen: + 1 / (2 * n + 1) * (2 * n + 3) =
Hinschreiben!
2 : 1.9999999999999 ~ 2

Eintippen: + 1 / (2 * n + 1) * (2 * n + 3) =
Hinschreiben!
3 : 3.4

usw.

Wenn Dein Taschenrechner keine Klammer hat, wirst Du mal den Speicher bemühen müssen.

(Dieser Beitrag wurde von oesi50 am 30. Jun 2004, 15:49 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:40
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
ahhh klar hab ich ne klammer... aber wie bau ich das in ein script rein

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 15:42 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:48
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
Wenn Du das jetzt berechnet hast, wirst Du feststellen, dass immer wieder die selbe Formel benutzt wird. Nun überleg mal, mit welchen Anweisungen Du den Computer dazu bringst, immer wieder das selbe zu machen.

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:50
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
mit ner schleife... aber ich kapiers ja eben nicht... also die formel wäre dann : n+1=2 also meinet wegen 2+1/(2*n+1)*(2*n+3)

müsste da ne for-schleife rein??

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 15:57 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:56
Bewertung:

gelesen: 5439

Beitrag als Lesezeichen
Jetzt habe ich auch mal nachgerechnet und festgestellt, dass meine erste Berechnung falsch war(womit auch gleich der Sinn einer Kontrollrechnung erklärt ist).

n : Wert
1 : 0.3333333333
2 : 1.73
3 : 3.02
4 : 4.24
5 : 5.43

So, welche Schleife eignet sich jetzt am Besten? Zur Auswahl steht while, until und for.

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:57
Bewertung:

gelesen: 2693

Beitrag als Lesezeichen
wie gesagt for

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 15:59
Bewertung:

gelesen: 2693

Beitrag als Lesezeichen
also es ist ne for-schleife auf jeden fall oder?? aber wie lautet den jetzt bitte die neue funktion??

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 15:59
Bewertung:

gelesen: 2693

Beitrag als Lesezeichen
OK, jetzt legen wir erst mal die Randbedingungen fest. Wie groß darf n minimal und maximal werden?

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 16:01
Bewertung:

gelesen: 2693

Beitrag als Lesezeichen
mhh minimal 0 würde ich sagen... innen minus bereicht geht net oder??
und maximal ist egal.. bis eine quattrillionen meinetwegen...

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 16:08
Bewertung:

gelesen: 2693

Beitrag als Lesezeichen
Neenee, wir wollen doch jetzt programmieren und nicht im Trüben fischen. Also noch mal, wie sind die Randbedingungen?

ahhhhh helft mir

freshness
Beiträge gesamt: 14

30. Jun 2004, 16:10
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
keine ahnung was die randbedingungen sind.. das steht nirgends in der aufgabe... also minimal könnte dann 0 oder 1/3 sein... und maximal zum beispiel 50 sonst wirds zu viel !! ist das ok?

hast du icq oder nen anderen massenger... wäre vielleicht besser

(Dieser Beitrag wurde von freshness am 30. Jun 2004, 16:24 geändert)

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

30. Jun 2004, 16:31
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
ich gehe mal davon aus, dass a[1] = 1/3 der Startwert sein soll. Mehr als n = 10 würde ich auch erst mal nicht verwenden, weil wir ja von Hand nachrechnen wollen(zur Kontrolle).
Wieso ist a[1] der Startwert? n ist Element der natürlichen Zahlen. Natürliche Zahlen sind immer positiv.

also 0 < n < 11.

unsere Schleife muss jetzt also so laufen:

von 1 bis 10 Schrittweite 1.

Hier stimmt aber noch was nicht ganz. Mir fällt ja gleich noch der Startwert a[1] = 1/3 ein. Also von 2 bis 10 mit Schrittweite 1.

Pseudocode:
n = 10
a[1] = 1/3
FOR i = 2 TO n STEP 1
machwas mit a
ENDFOR





ahhhhh helft mir

freshness
Beiträge gesamt: 14

1. Jul 2004, 14:36
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
 der lehrer meinte das wäre keine for-schleife..!!
der meinte das man da was mit if und else macht siehe hier... hab nen script dafür gemacht.. kannst du mal gucken was falsch ist?? läuft nicht:

<html>
<head></head>
<body>
<script language="JavaScript">
var n=prompt("Geben sie eine Zahl für n ein", "");
function f(n );
{
if ( n==1 )
{
return 1/3
}
else
{
return f(n-1)+1/((2*(n-1)+1)*(2*(n-1)+3)
}
}
</script>
</body>
</html>

ahhhhh helft mir

freshness
Beiträge gesamt: 14

1. Jul 2004, 14:36
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
<html>
<head><title>Aufgabe Nr.1 - a)</title></head>
<body>
<script language="JavaScript">

var n=prompt("Bitte geben Sie eine Zahl für n ein", "");

document.write(n/(2*n+1));

</script>
</body>
</html>


hier das script für den zweiten scheiß

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

1. Jul 2004, 14:57
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
Das ist eine Rekursion.

Ich war der Meinung, dass Ihr sowohl Iteration als auch Rekursion programmieren sollt, um den Unterschied zu lernen.

Im Übrigen ist eine Rekursion, bei der definierte Bedingungen existieren, nur von akademischem Wert. Der Code sieht u.U. einfacher und eleganter aus, aber in Bezug auf Speicherverbrauch und Effizienz ist er fast immer ungünstiger.

Das Script läuft nicht, weil nach der Funktionsdefinition kein ; stehen darf und in der Formel die Anzahl der schließenden und öffnenden Klammern nicht übereinstimmt.

Versuche mal 5000000 als n. Die Rekursion stirbt ab. Die Iteration braucht nur etwas Zeit, aber es wird ein Ergebnis geliefert.

Die Klammern entsprechen nicht der ursprünglich geposteten Aufgabenstellung.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 1. Jul 2004, 15:16 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

1. Jul 2004, 15:14
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
<html>
<head>
<script language="JavaScript">

function f(n)
{
if ( n==1 )
}
{
return 1/3;
}
else
{
return f(n-1)+1/((2*(n-1)+1)*(2*(n-1)+3));
}
}
</script>
</head>
<body>
<script language="JavaScript">
var n=prompt("Bitte geben Sie eine Zahl für n ein", "");
document.write("Das Ergebis von " +n+ "ist" +f(n) );
</script>
</body>
</html>


geht so immer noch nicht was mache ich falsch

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

1. Jul 2004, 15:18
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
jetzt sind zu viel geschweifte Klammern drin.

versuch's mal so:
<html>
<head></head>
<body>
<script language="JavaScript">
var n=prompt("Geben sie eine Zahl für n ein", "");
function f(n ){
if ( n==1 ){
return 1/3
}
else{
return f(n-1)+1/((2*(n-1)+1)*(2*(n-1)+3))
}
}

document.write(f(n));

</script>
</body>
</html>

(Dieser Beitrag wurde von oesi50 am 1. Jul 2004, 15:19 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

1. Jul 2004, 15:21
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
nääääääää danke!!!
das geht ja echt!!!

bei der anderen funktion also:

<html>
<head><title>Aufgabe Nr.1 - a)</title></head>
<body>
<script language="JavaScript">

var n=prompt("Bitte geben Sie eine Zahl für n ein", "");

document.write(n/(2*n+1));

</script>
</body>
</html>


also bei: n/(2*n+1) meinst du das ist richtig??

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

1. Jul 2004, 15:30
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
hier noch mal die iterative Lösung:

Vergleiche mal die beiden Varianten mit 5000000 als n.
Wenn dich der IE fragt, ob er das Script abbrechen soll, mußt Du nein anklicken.

<html>
<head></head>
<body>
<script language="JavaScript" type="text/javascript"><!--
var n=prompt("Geben sie eine Zahl für n ein", "");
function f(n ){
var a = 1/3;
for(var i = 2; i <=n; i++){
a = a + 1/((2*(i-1)+1)*(2*(i-1)+3));
}
return a;
}

document.write(f(n));
// -->
</script>
</body>
</html>

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)

(Dieser Beitrag wurde von oesi50 am 1. Jul 2004, 15:31 geändert)

ahhhhh helft mir

freshness
Beiträge gesamt: 14

1. Jul 2004, 15:39
Bewertung:

gelesen: 2690

Beitrag als Lesezeichen
hängt sich auf ;)

aber trotzdem denke jetzt haben wir für das erste 2 lösungen!!
danke für alles

ahhhhh helft mir

oesi50
  
Beiträge gesamt: 2315

1. Jul 2004, 15:45
Bewertung:

gelesen: 910

Beitrag als Lesezeichen
Das hängt sich nicht auf, Du musst nur etwas warten. Die 5 Mill. Durchläufe wollen ja erst mal berechnet sein. Die rekursive Variante kann aber gar nichts berechnen und fliegt sofort mit einer Fehlermeldung "Stack overflow" raus.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)