Feststellen ob Ergebnis eine floatzahl ist.



  • Also ich möchte wissen ob aus z.b.

    5/2 oder 68/2 oder 203221/2 eine Kommazahl rauskommt. Ich weiss leider nicht wie man das in C macht.

    if ((a/b)---->Was kommt hier rein?<----)
    {
    
    BLA BLUB
    
    };
    

    P.S. Aus der division mit 2 kommt wenn es eine Kommazahl ergibt immer eine mit ****.5 raus. Ich möchte nämlich einen rechner schreiben der von Dezimal in Binär umwandelt. Den anderen fall hab ich schon der war eigentlich einfach nur hier fehlt mir der eine Befehl.





  • LOL hab auch gar nicht gesucht muss ich gestehen.

    Naja aus fehlern lernt man ja nur.

    THX



  • a % b == 0



  • nee das mit a%b=0 geht nicht weil er dann so lange dividiert und erst am ende guckt ob eine null oder ein rest rauskommt. Ich brauche das aber bei nur einer division. HAbs ja aber jetzt. So gehts falls jemand es wissen will.

    void dez (void)
    {
      float dez=0;
    
      printf("Bitte dezimale Zahl eingeben:");
      scanf("%f", &dez); 
    
      dez=dez/2;
    if(dez == (int)dez)
    {
        printf("Keine Kommazahl");
    
    }
    else
    {
        printf("KOMMAZAHL");
    
    };
    


  • So ich wüsste gerne ob es möglich ist einen Zahlenstring einzulesen und dann davon die einzelnen Zahlen aufzurufen.

    Immoment muss ich wenn eine Binärzahl umwandeln will, alle 1 und 0 einzeln eingeben also alle hintereinander. Geht dies auch das ich alle gleichzeit hinschreibe und auslese und dann z.b. in die variable bin tue und dann die einzelnen zahlen mit bin[1] aufrufe??

    Weiss nicht ob das geht und hab nix dazu gefunden.

    Bitte nicht zu schwierig erklären bin noch anfänger.



  • modulo ist eine operation. vertrau mir da mal.

    es gibt auch modulo fuer floats: fmod()



  • c.rackwitz schrieb:

    modulo ist eine operation

    , die nur auf int/short/long geht. Ein a % b, wenn a und b float sind, schluckt der Compiler nicht.



  • Naja ist ja auch egal da ich dieses Problem ja schon gelöst habe. Bitte beantwortet noch meine Frage die ich dannach gestellt habe.



  • Darf man fragen, warum dein Dezimal->Binär Umrechner unbedingt mit Gleitkommawerten arbeiten muß? Wenn du sowieso keine Werte mit Nachkommastellen haben willst, ist int oder long wesentlich besser geeignet.

    Tobi89 schrieb:

    Geht dies auch das ich alle gleichzeit hinschreibe und auslese und dann z.b. in die variable bin tue und dann die einzelnen zahlen mit bin[1] aufrufe??

    Du kannst deine Zahl auch als Zeichenkette (char-Array) einlesen und dann jede Ziffer direkt ansprechen (da mußt du aber von Hand kontrollieren, daß der Anwender keine ungültigen Werte eingegeben hat) oder per strtol() in eine Zahl umrechnen.



  • Da es ein Verfahren gibt wie man dezimal in Binär umwandelt und man dafür nach dem Rest gucken muss und 2tens hab ich erst ein halbes Jahr Ansi C inner Schule und kenne mich noch nicht ganz so gut aus wie ihr alle.

    Aber danke ich weiss nur nicht wie ich das machen soll mit dem Char array.

    also ich würds z.b. so machen:

    [cpp]
    int bin[8];
    printf("Zahl eingeben");
    scanf("%i%i",&bin[0],&bin[1]); <--- der Scanf Befehl geht nicht, weiss halt nicht wie ich die einzelnen Zahlen scannen kann.



  • Tobi89 schrieb:

    Da es ein Verfahren gibt wie man dezimal in Binär umwandelt und man dafür nach dem Rest gucken muss und 2tens hab ich erst ein halbes Jahr Ansi C inner Schule und kenne mich noch nicht ganz so gut aus wie ihr alle.

    Und genau um "nach dem Rest zu gucken", gibt es den mehrfach erwähnten Modulo-Operator % 😉

    Aber danke ich weiss nur nicht wie ich das machen soll mit dem Char array.

    Ich würde es so machen:

    char value[33];
    scanf("%s",value);//liest das komplette Array ein
    ...
    


  • Hmm es geht jetzt fast alles ausser das ich das z.b. vergleichen kann.

    if (value[1] == 2)
        {
         printf("in Value steht eine 2");   
    
        }
    

    Das geht leider nicht, das ist aber genau das was ich brauche. Bringt es was wenn ich den char string einzeln in einen int string packe wenn das überhaupt möglich ist.



  • @supertux:

    dass ich fmod() erwaehnt hab, das hast du nicht gelesen?

    tobi89:
    '2'

    wenn c == '2', dann 2 == c - '0'



  • Das ist mir auch klar das das C Programm sinnlos ist nur es geht halt nicht weil es immer in den Else fall geht. Ich weiss nicht wie man die vergleichen kann. Wie z.b. hier, wenn ich eine 2 eingebe geht er trozdem immer in den else fall.

    char value[33];
        printf("Zahl eingeben!!");
        scanf("%s",value);
    
        if (value[0] == 2)
        {
         printf("steht eine 2 drin.");   
    
        }
        else
        {
        printf("steht keine 2 drin");
    
        }
    


  • weil 2 != '2'

    denn 2 ist ne zahl und '2' ist ein zeichen.

    ... greif dir ein tutorial. nein, hilfe != gratislehrer. tutorials gibts ueberall, und gute. nimm dir eins.

    hast du meinen post ueberhaupt gelesen?
    ich schreib da 2 == '2' - '0' und du ueberliest das...



  • Tobi89 schrieb:

    scanf("%i%i",&bin[0],&bin[1]); <--- der Scanf Befehl geht nicht, weiss halt nicht wie ich die einzelnen Zahlen scannen kann.

    dir ist klar, warum es nicht geht, oder? Wie soll scanf wissen, wo die eine Zahl anfängt und wo die andere aufhört?

    Nimm man: atoi(3).

    c.rackwitz schrieb:

    @supertux:

    dass ich fmod() erwaehnt hab, das hast du nicht gelesen?

    Doch. Wenn man aber nur deinen ersten Beitrag liest, könnte man es auch verstehen, dass man % mit floats anwenden kann.


Anmelden zum Antworten