Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

sKn

Frischling

  • »sKn« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Berlin

Beruf: Mediengestalter Digital- &Printmedien

  • Private Nachricht senden

1

29.10.2008, 21:17

Modulo operator problem

ich bin gerade dabei Heiko kalistas buch durchzugehen.bis jetzt habe ich alles verstanden und auch umgesetzt sowie eigene kleine dinge programmiert bzw damit rumgespielt ( code verändert / sachen eingebaut usw ). nur jetzt bin ich an einem punkt wo ich das dickste fragezeichen ueber meinem kopf habe das je in meinem leben hatte.Es geht um Listing 3.8 auf seite 79 / 80.
hier der code :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>

using namespace std; 

int main () 
{
    int CountDown; 

    cout << "Bitte Countdown eingeben: "; 
    cin >> CountDown; 

    if (CountDown%2 == false) 
    {
        cout << "Nur ungerade Zahlen werden unterstuetzt" <<endl; 
    }
    else 
    {
        for(int i= CountDown; i>=0; i--)
        {
            cout << "Countdown: " << i << endl; 

            if ( i == CountDown/2 + 1)
                cout << "Die Haelfte ist vorbei" << endl; 

        }
    }
    return 0; 
}


es geht um die zeile

C-/C++-Quelltext

1
if (CountDown%2 == false)


wirklich alles verstanden und kann es auch nachvollziehen nur das einzigste mal wo kalista über Modulo rechenoperatoren sprichtist auf seite 77 / 78 @ 3.9.
diese werden folgt beschrieben

( / ) divisoroperator
( % ) -> damit erhalten wir automatisch den rest der division
anders wird dieser modulo operator nciht angesprochen.

schau ich mir also die zeile

if (CountDown%2 == false)

an , sagt mir diese , was ich bis jetzt gelernt habe:
if countdown rest 2 gleich falsch
häääääää welcher rest oO.

schau ich mir also zeile
if ( i == CountDown/2 + 1)
an ,verstehe ich diese, weil ungerade zahl in diesem fall (eingabe von countdown) geteilt durch 2 +1 ergibt die hälfte des eingegebenen countdowns.

Vielleicht sollte man das in einer evtl. 3 Auflage beachten, das man den % operator bissle besser beschreibt.
keine ahnung ob ich momentan aufm schlauch stehe und in die falsche richtung denke.doch ist das der fall ,dann entschuldige ich mich.und ihr dürft mir einen tiernamen geben und von hinten '"§*"(§4 xD.

PS: sry das dies wiedermals ein poste meinerseits ist , aber ich will es halt richtig verstehen, hoffe euch nicht damit zu nerven. *in die ecke stell*

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

2

29.10.2008, 21:25

Der Vergleich mit false ist hier dumm gelaufen.
Besser wäre mit 0.
if (CountDown%2 == 0) ist besser, tut aber das Gleiche!

Das Rechnen mit dem Rest (kurz: Modula) hatten wir in der Grundschule!
Ist im Buch das wirklich bissl zu kurz gekommen?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

29.10.2008, 21:31

Der Modulo Operator gibt den Rest einer Division zurück. In diesem Fall bekommst du den Rest zurück der bei einer Division von CountDown / 2 übrig bleibt. Für jede gerade Zahl (n*2) bekommst du also 0 geliefert, ansonsten 1.

Jetzt erlaubt C++ das Zahlen implizit zu boolschen Werten gecastet werden. Dabei wird 0 zu einem false und der Rest (!= 0) zu true. Die Zeile besagt also:

Wenn der Rest der Division von CountDown durch 2 gleich 0 ist, dann...

Anders, und wohl einleuchtender wäre:

C-/C++-Quelltext

1
if ( CountDown % 2 == 0 )
@D13_Dreinig

sKn

Frischling

  • »sKn« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Berlin

Beruf: Mediengestalter Digital- &amp;Printmedien

  • Private Nachricht senden

4

29.10.2008, 21:31

muss sagen ja ist in dem buch echt zu kurz gekommen ! und das er hier plötzlich mit false arbeitet obwohl er es nicht mit einem wort beschrieben hat / besser gesagt benutzt hat bricht einem das genick !

Werbeanzeige