hackentreter Geschrieben 12. Februar 2011 Geschrieben 12. Februar 2011 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!!!
Klotzkopp Geschrieben 13. Februar 2011 Geschrieben 13. Februar 2011 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.
hackentreter Geschrieben 13. Februar 2011 Autor Geschrieben 13. Februar 2011 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!
Klotzkopp Geschrieben 13. Februar 2011 Geschrieben 13. Februar 2011 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.
hackentreter Geschrieben 13. Februar 2011 Autor Geschrieben 13. Februar 2011 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) ?
Klotzkopp Geschrieben 13. Februar 2011 Geschrieben 13. Februar 2011 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.
hackentreter Geschrieben 13. Februar 2011 Autor Geschrieben 13. Februar 2011 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!!!!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden