myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   C-Programmierung: Modulo in if-Befehlt (https://mygully.com/showthread.php?t=2569124)

Colodian 12.02.12 12:42

C-Programmierung: Modulo in if-Befehlt
 
Hallo Zusammen

Ich habe eine Frage:

Was ist an diesem Code falsch (erhalte beim kompilieren immer einen Fehler -.-) :

Code:

if(Einwurf / 0.05 == %0)

        {
        ...
        }

Der Fehler ist irgendwie beim Modulo... Der Wert "Einwurf" ist richtig deklariert.

EDIT:
Habe etwas falsch verstanden ;)
Funktioniert jedoch mit dem Code immer noch nicht:
Code:

  if (Einwurf % 0.05 == 0)
error: invalid operands to binary % (have 'float' and 'double')|

Thelvan 12.02.12 13:13

Muss das nicht so?
if(Einwurf % 0.05 == 0)

mrburns 12.02.12 13:16

Zitat:

error: invalid operands to binary % (have 'float' and 'double')|
das heißt, dass du das Modulo nicht mit Fließkommazahlen als Operanden aufrufen darfst, probiers mal mit
if ((Einwurf*100)%5 == 0)

Colodian 12.02.12 13:18

Jep, funktioniert aber leider immer noch nicht... Einwurf ist eine float-Variable, sollte doch möglich sein oder?

mrburns 12.02.12 13:21

Zitat:

Jep, funktioniert aber leider immer noch nicht... Einwurf ist eine float-Variable, sollte doch möglich sein oder?
ahh, na dann schon gar nicht ;)
da musst du 'Einwurf' so erweitern, dass es eine ganze Zahl (Int) wird

Your_Conscience 12.02.12 16:23

Zitat:

Zitat von mrburns (Beitrag 23272701)
da musst du 'Einwurf' so erweitern, dass es eine ganze Zahl (Int) wird

Entweder so, oder du verwendest die Funktion modf.
Code:

#include <stdio.h>
#include <math.h>

int main()
{
    double divident = 11, divisor = 5, rest, quotient;   
    rest = modf(divident / divisor, &quotient);
   
    if (rest == 0) {
        printf("%f ist ohne Rest durch %f teilbar\n", divident, divisor);
    } else {
        printf("%f durch %f = %f Rest %f\n", divident, divisor, quotient, rest);
    }

    return 0;   
}


jon.west 12.02.12 17:10

Schreib mal

Code:

if(Einwurf % 0.05f == 0)

        {
        ...
        }

Nebenbei: Ich weiß nicht, ob man Modulo auf Kommazahlen anwenden kann :confused: Glaube bei x % y, muss y immer eine Ganzzahl sein :eek:

Epeos 12.02.12 19:25

Nur mal so: Wenn Du eine Zahl durch 0.05 teilst, heisst das, dass Du sie mit 20 multiplizierst. Jetzt erklär mir mal, wie da ein ganzzahliger Rest rauskommen soll...

WilliWeasel 13.02.12 20:56

kleiner Tipp schreib erstmal was du willst dann kann dir auch wer helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.