Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

c algorithmus - finde kleinste zahl

Empfohlene Antworten

Veröffentlicht

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!!!

Ich glaube, dir sind da beim Abschreiben ein oder zwei Fehler unterlaufen.

IF S<= THEN
Hier fehlt beispielsweise etwas.

soweit bin ich ungefähr gekommen :P

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.

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!

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.

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) ?

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.