Erklärung eines Programms

Schon, aber es ist
0: 21
1: 10
2: 18

Und nicht
0: 21
1: 18

wie von dir angegeben.

Aber ab sofort nur noch Auskunft gegen Weg.

cwriter
 
Gut ok.
Jetzt sind wir ja bei 18
18 gerade wird also wieder die else funktion ausgeführt?
(18 - 1) * 2 = 34?
 
Tikorz, du musst dir deinen Code und cwriters Beiträge auch schon aufmerksam durchlesen.

In Mathe:
5 / 2 = 2 Rest 1
In C:
5 / 2 = 2
5 % 2 = (Rest) 1 = 1

(2 * 2 + 1 = 5) <- Umkehrung

Bei diesem Code wird nun if( n % 2 != 0) geprüft, also eigentlich if(n % 2 == 1). Und das heisst: Falls n ungerade ist.

In dem zweiten Code steht nirgendwo n % 2, sondern einmal n % 3 und einmal n % 4.

Gruß Technipion
 
Ich verstehe die zweite if abfrage nicht :/
Also nochmal
n=41
n>2? Ja
n ungerade? Ja
n/2 = 21

n= 21
n>2 ? Ja
n ungerade ? Ja
n/2 = 10

n=10
n>2 ? Ja
n ungerade? Nein
n = ( 10 -1 ) * 2
n = 18 ?
Hier ist der Fehler anscheinend ?
 
Hier ist der Fehler anscheinend ?
Bis jetzt stimmt es, aber aus Versehen.

Die Abfrage ist auf Modulo 3, nicht 2.
21 ist schon ungerade, aber das ist nicht gefragt. Gefragt ist, ob 21 durch 3 teilbar ist.

n % 3 == 0 => 21 / 3 = 7 R 0
(Anders gesagt: (n/ 3) * 3 == n)

Und ganz allgemein:

x % y == r <=> (x / y) * y == x + r
(Bedenke, dass Computerrechnungen in Division nicht Assoziativ / Distributiv sind!)

Aus Versehen stimmt deine Folge aber soweit.
Aber 2 Fehler auf 6 Rechnungen? Meinst du das jetzt ernst?
n beginnt mit 42, nicht 41.

Gruss
cwriter
 
Ich komme ab dann nicht mehr weiter warum ist dieses if unter else ?

Warte neuer Kommentar lasst mich kurz noch überlegen !
 
So die Fortsetzung weiß ich jetzt aber nochmals frage bei 18 % 4 kommt 4,5 raus runde ich immer ab ?
 

Anhänge

  • F556EE37-0852-4C66-8EFA-9EA0DD49B023.jpeg
    F556EE37-0852-4C66-8EFA-9EA0DD49B023.jpeg
    88,4 KB · Aufrufe: 5
Zurück