Zum Inhalt springen

c algorithmus - finde kleinste zahl


hackentreter

Empfohlene Beiträge

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 :P

for(N=15; N<500; N++){

danke im vorraus!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :P

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

a=N
Du 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 verstehe
Du meinst das END? Vermutlich soll hier einfach nur das Programm beendet werden, weil ja eine passende Kombination gefunden wurde.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...