Verständnisfrage :rolleyes:



  • aXYZn schrieb:

    (a%b)<0.5 int rundet das ergebnis auf 0
    (a%b)>0.5 int rundet das ergebnis auf 1
    !(a%b<0.5&&a%b>0.5) int gibt den div.-rest aus

    (a%b)<0.5??? das ist mathematisch nicht möglich, denn Modulo nur auf natürlichen Zahlen definiert ist und dasselbe gilt in C.



  • aXYZn schrieb:

    _matze schrieb:

    Was ist denn deiner Ansicht nach die "richtige Uhrzeit"??

    agi schrieb:

    Edit: Ich meine mit Uhrzeit, aktuelle Stunden (24h) 😃

    Die kriegst du aber nicht mit deiner Modulo-Operation! Da kommt logischerweise jede Sekunde ein anderer Wert raus, und mit ganzen Stunden hat der wenig zu tun. Wenn schon, dann eher sowas wie "time_t t=(time(NULL)%(3600*24))/3600;" (dürften die heute vergangenen Stunden sein), wäre aber auch Quatsch. Alles, was die aktuelle Zeit betrifft, findest du im genannten Link.



  • supertux schrieb:

    (a%b)<0.5??? das ist mathematisch nicht möglich, denn Modulo nur auf natürlichen Zahlen definiert ist und dasselbe gilt in C.

    Also wird der Wert nicht mal ein femto sekündchen lang kleiner als 0.5

    Falls das tat. nicht so wäre dann würde daraus folgen das int es automatisch auf 0 rundet, oder? 😕

    Gruß
    agi 🙂



  • aXYZn schrieb:

    Falls das tat. nicht so wäre dann würde daraus folgen das int es automatisch auf 0 rundet, oder?

    da wird nix gerundet. ints sind ganze zahlen ohne was dazwischen. unter integers ist 5/2=2 rest 1, nicht 2.5
    🙂



  • hi!

    genau aber wenn der rest 1%10 wäre also 0.1 dann wird ja draus 0 oder? und bei 1%2 wird ja draus 1 oder?



  • aXYZn schrieb:

    genau aber wenn der rest 1%10 wäre also 0.1 dann wird ja draus 0 oder? und bei 1%2 wird ja draus 1 oder?

    1%10 bedeutet 'rest von 1/10' also die 1 selber, weil sie nicht durch 10 teilbar ist. bei 1%2 kommt das gleiche raus, weil 1 auch nicht durch 2 teilbar ist. erst die 10 ist durch 10 teilbar, d.h. % ergibt 0 (kein rest). bei 'ner 11%10 haste wieder rest 1, weil 11/10 = 1 rest 1.
    🙂



  • aXYZn schrieb:

    hi!

    genau aber wenn der rest 1%10 wäre also 0.1 dann wird ja draus 0 oder? und bei 1%2 wird ja draus 1 oder?

    was verstehst du an Interger Division bzw. Division mit natürlichen Zahlen nicht? 1%10 ist 1, da 1 = 10*0 + 1 und der Rest der Divsion ist 0.

    Modulo macht nur Sinn auf |N (bzw. Z), auf |R hat keine Division einen Rest. a % b = c bedeutet also a = b * x + c, wobei a, b, c, und x alle natürliche Zahlen sind. Dasselbe gilt auf C, was ist denn da so schwer zu verstehen bzw. akzeptieren?



  • a % b = c bedeutet also a = b * x + c

    1 % 10 = c

    1 = 10 * x + c

    Warum ist das x glied gleich 0?

    Hmmm...

    1=10x +1 | -1
    0 = 10
    x |:10
    x=0

    Zweiter Versuch:

    1%2=c

    1%2=c

    1=2x+1 | -1
    0=2
    x | :2
    x=0

    Hmmm...

    Dritter Versuch

    7%3=c
    7=3x+1 |-1
    6=3
    x |:3
    x=2 // Als was bezeichnet man das x Glied?

    Ist c ein Konstantes Glied, also hat in der Regel immer den Wert 1?

    😕 ich bin irwie zu blöd dafür... 🤡



  • supertux schrieb:

    Dasselbe gilt auf C, was ist denn da so schwer zu verstehen bzw. akzeptieren?

    was du mit C meinst, wenn du schon N, Z und R erwähnst. ich nehme an, du meinst die programmiersprache.
    🙂



  • aXYZn schrieb:

    // Als was bezeichnet man das x Glied?

    als 'teiler' z.b.

    aXYZn schrieb:

    Ist c ein Konstantes Glied, also hat in der Regel immer den Wert 1?

    nö, das was beim teilen übrigbleibt, also was sich nicht mehr runterteilen lässt. c schwankt zwischen 0...b-1
    🙂

    aXYZn schrieb:

    ich bin irwie zu blöd dafür...

    du hast nur reelle zahlen zu sehr verinnerlicht (die mit den nachkommastellen), vergiss die einfach mal kurz und schau mal hier: http://de.wikipedia.org/wiki/Ganze_Zahl
    🙂



  • +fricky schrieb:

    supertux schrieb:

    Dasselbe gilt auf C, was ist denn da so schwer zu verstehen bzw. akzeptieren?

    was du mit C meinst, wenn du schon N, Z und R erwähnst. ich nehme an, du meinst die programmiersprache.
    🙂

    Mit C meine ich die Sprache C, mit N natürliche Zahlen, Z ganze Zahlen und |R reelle Zahlen.

    @aXYZn: du hast anscheinend Modulo nicht verstanden: http://de.wikipedia.org/wiki/Modulo



  • Du hattest in der Grundschule sicher mal "7 durch 4 ist 1 Rest 3"? Damals kanntest Du noch garkeine natürlichen Zahlen, geschweigedenn Nachkommastellen oder Runden.

    Und der obige Satz wäre in C wie folgt dargestellt:

    (7 / 4 == 1) && (7 % 4 == 3)
    

    Modulo ("Rest") jetzt verstanden? 😃



  • LordJaxom schrieb:

    Du hattest in der Grundschule sicher mal "7 durch 4 ist 1 Rest 3"? Damals kanntest Du noch garkeine natürlichen Zahlen.

    natürliche zahlen kennt bestimmt jedes kind, noch bevor's in die schule kommt.
    🙂



  • LordJaxom schrieb:

    Du hattest in der Grundschule sicher mal "7 durch 4 ist 1 Rest 3"? Damals kanntest Du noch garkeine natürlichen Zahlen, geschweigedenn Nachkommastellen oder Runden.

    Und der obige Satz wäre in C wie folgt dargestellt:

    (7 / 4 == 1) && (7 % 4 == 3)
    

    Modulo ("Rest") jetzt verstanden? 😃

    🤡 ^^ Ja!

    Modulo ist ja eine Funktion. Das wusste ich ja noch garnicht, geschweige denn hat ich während meiner Schullaufbahn noch nie (Realschule in BW) Falls ich mal mein Abi nachhole lern ich es dann dort als Funktion kennen?

    Gruß
    agi



  • natürliche zahlen kennt bestimmt jedes kind, noch bevor's in die schule kommt.

    außer ich xD! *schäm*



  • aXYZn schrieb:

    Modulo ist ja eine Funktion. Das wusste ich ja noch garnicht

    mathematisch gesehen isses wohl 'ne funktion. in C ist es ein 'operator'

    aXYZn schrieb:

    natürliche zahlen kennt bestimmt jedes kind, noch bevor's in die schule kommt.

    außer ich xD! *schäm*

    du hast sie nur vergessen.
    🙂



  • mathematisch gesehen isses wohl 'ne funktion

    lernt man das im Abi? Dann muss ich mein Abi nachholen xD. In der Realschule hatte ich Modulo als mathematische Funktion noch nie zu gesicht bekommen.

    Oder muss man da auf eine höhere Ebene => Hochschule

    Bitte das Interessiert mich. 😃



  • aXYZn schrieb:

    lernt man das im Abi?

    klar, ich weiss aber nicht mehr wann's dran kam, hatte aber auch nur mathe grundkurs. im leistungskurs kommt bestimmt noch mehr, zahlentheoretische grundlagen, rechnen mit kongruenzen und so.
    hier kannste mit der modulo-funktion rumspielen: http://www62.wolframalpha.com/input/?i=Plot[Mod[x%2C+10]%2C+{x%2C+0%2C+100}]
    🙂



  • Dazu fällt mir ein, daß in nahezu allen Programmiersprachen das mit der Integerdivision unglücklich gelöst ist. Ich brauche meist den Rest auch noch und wenn einmal e = x/y und danach r = x%y dasteht, schmeißen alle mir bekannten Compiler die Hard- oder Soft- Dividiermaschine zweimal an.
    Das ist verdammt häßlich zum einen und unperformant dazu 😞 . Aber C kann nunmal nur ein Ergebnis zurückgeben. Wenn es die Performance erfordert, muß ich immer an inline- ASM herumbasteln und das auf Funktionenebene mit durchgereichten Pointern nachbilden - immer viel Spaß mit Rückfall in ASM- Zeiten, aber wenn's core- loops sind, winkt schon mal die knappe Verdoppelung der Geschwindigkeit.

    Aber ANSI- C bietet nichts dazu? Find' ich jetzt nicht sooo toll.



  • Also mein gcc hier macht bei

    void divmod (int a, int b, int *div, int *mod) {
    	*div = a/b;
    	*mod = a%b;
    }
    

    nur eine Division.

    Ansonsten kann man ja auch sowas machen:

    div = a/b;
    mod = a - div*b;
    

Anmelden zum Antworten