Veröffentlicht 12. Februar 201114 j hey, ich habe ein problem mit einer alten klausuraufgabe die ich nicht lösen kann. wir sollen die kleinste zahl N finden, deren quadrat die summe von mehr als 3 aufeinanderfolgenden zahlen (jede zahl zur dritten potenz). die kleinste zahl muss größer als 1 sein. gebe folgende zahlen aus: kleinste zahl (N), erste zahl in der reihe © und letzte zahl in der reihe (L). ich habe eine lsg gegeben die ich nicht wirklich in ein c programm übersetzen kann. sie sieht wie folgt aus... FOR N=15 to 500 @ S=N*N @ L=INT((S/4)^(1/3)) @ FOR C=L TO 3 STEP -1 S=S-C*C*C @ IF S=0 THEN DISP N;C;L @ END ELSE IF S<= THEN S=S+L*L*L @ L=L-1 NEXT C @ NEXT N @ DISP "Not found" hmmm ich bin mir schon die ganze zeit am kopf zerbrechen aber irgendwie verstehe ich es net. wäre klasse wenn mir jemand helfen könnte soweit bin ich ungefähr gekommen for(N=15; N<500; N++){ danke im vorraus!!!
13. Februar 201114 j Ich glaube, dir sind da beim Abschreiben ein oder zwei Fehler unterlaufen. IF S<= THENHier fehlt beispielsweise etwas. soweit bin ich ungefähr gekommen for(N=15; N<500; N++){Das sieht doch schon gut aus. Mach einfach mal weiter, dann haben wir auch etwas, über das wir reden können.
13. Februar 201114 j Hey danke für die Antwort! Sorry, haste recht! es sollte if S<0 THEN heißen. Den rest habe ich nochmal überprüft der passt. so dann mache ich mal weiter for(N=15; N<500;N++){ S=N*N; a=N //diesen part verstehe ich überhaupt net (L=INT((S/4)^(1/3)) //k=L; //um den höchsten wert dert reihe zu speichern for(C=L;C>3;C--){ S=S-C*C*C; b=C; if(S==0) printf("N=%d; C=%d; L=%d",a,b,k); //nächste anweisung verstehe ich nicht, wahrscheinlich weil ich L=INT... oben nicht verstehe else if(S<0){ S=S+L*L*L ; L=L-1; } } danke schonmal für eure hilfe!
13. Februar 201114 j a=NDu brauchst keine zusätzlichen Variablen. //diesen part verstehe ich überhaupt net (L=INT((S/4)^(1/3))L ist S/4 hoch ein Drittel. In C ist ^ aber nicht der Potenzoperator, dafür gibt es die Funktion pow aus <math.h>. Hoch ein Drittel ist übrigens dasselbe wie die dritte Wurzel. //nächste anweisung verstehe ich nicht, wahrscheinlich weil ich L=INT... oben nicht versteheDu meinst das END? Vermutlich soll hier einfach nur das Programm beendet werden, weil ja eine passende Kombination gefunden wurde.
13. Februar 201114 j hey //diesen part verstehe ich überhaupt net (L=INT((S/4)^(1/3)) ne der mathematische teil ist klar, aber vom verständnis. was ist INT? ist damit gemeint das wir nur integer wählen? und wenn ja wie stelle ich das sicher? und wie kommt man eigentlich auf (S/4)^(1/3) ?
13. Februar 201114 j was ist INT? ist damit gemeint das wir nur integer wählen? und wenn ja wie stelle ich das sicher?Bei dieser Berechnung kommt im Allgemeinen keine ganze Zahl heraus. Das INT soll signalisieren, dass nur der ganzzahlige Teil des Ergebnisses in L landet. Wenn du L als int deklariert hast, passiert das hier automatisch. und wie kommt man eigentlich auf (S/4)^(1/3) ?Die dritte Wurzel ist die Umkehrung der dritten Potenz. Und durch 4, weil du mindestens 4 aufeinanderfolgende Zahlen suchst. Es lässt sich mathematisch zeigen, dass dieser Ausdruck gerade etwas größer ist als das größte mögliche L.
13. Februar 201114 j Die dritte Wurzel ist die Umkehrung der dritten Potenz. Und durch 4, weil du mindestens 4 aufeinanderfolgende Zahlen suchst. Es lässt sich mathematisch zeigen, dass dieser Ausdruck gerade etwas größer ist als das größte mögliche L. Cool! Vielen Dank für deine Mühe!!!!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.