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!!! Zitieren
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. Zitieren
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! Zitieren
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. Zitieren
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) ? Zitieren
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. Zitieren
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!!!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.