Anzahl der Stellen einer Zahl



  • hallo,

    hab hier ne aufgabe in der steht, man soll die anzahl der stellen einer zahl überprüfen und vergleichen.

    weiss aber nicht wie ich das machen soll. gibts dafür eine funktion oder lässt sich sowas relativ einfach programmieren?

    danke schonmal



  • Vlt. nicht performant, aber einfach: logarithmus



  • Durch 10 teilen bis die Zahl 0 ist.

    Edit: Geht natürlich nur bei Integern.



  • in string wandeln und die länge des strings ermitteln! 😋 😉 😮

    #include <string.h>  // fuer funktion "strlen"
    #include <stdio.h>   // fuer sprintf,printf
    
    int main(void)
    {
      int zahl = 1234;   // die zahl, kann auch float o. double sein
      char str[10];      // der string in den die zahl kommt
      size_t length;     // variable des types size_t den strlen zurueckgibt
    
      sprintf(str,"%d",zahl);  // zahl wird in str geschrieben
    
      length = strlen(str);    // laenge ermittelt
    
      printf("laenge: %d\n",length);  // und ausgegeben
      return 0;  // und ende gut, alles gut
    }
    


  • kale1990 schrieb:

    in string wandeln und die länge des strings ermitteln! 😋 😉 😮

    #include <string.h>  // fuer funktion "strlen"
    #include <stdio.h>   // fuer sprintf,printf
    
    int main(void)
    {
      int zahl = 1234;   // die zahl, kann auch float o. double sein
      char str[10];      // der string in den die zahl kommt
      int length;     // variable des types int den sprintf zurueckgibt
    
      length = sprintf(str,"%d",zahl);  // zahl wird in str geschrieben
    
      // length = strlen(str);    // unnötig, sprintf() liefert die Länge bereits zurück
    
      printf("laenge: %d\n",length);  // und ausgegeben
      return 0;  // und ende gut, alles gut
    }
    


  • kale1990 schrieb:

    in string wandeln und die länge des strings ermitteln! 😋 😉 😮

    #include <string.h>  // fuer funktion "strlen"
    #include <stdio.h>   // fuer sprintf,printf
    
    int main(void)
    {
      int zahl = 1234;   // die zahl, kann auch float o. double sein
      char str[10];      // der string in den die zahl kommt
      size_t length;     // variable des types size_t den strlen zurueckgibt
    
      sprintf(str,"%d",zahl);  // zahl wird in str geschrieben
    
      length = strlen(str);    // laenge ermittelt
    
      printf("laenge: %d\n",length);  // und ausgegeben
      return 0;  // und ende gut, alles gut
    }
    

    pointercrash() schrieb:

    kale1990 schrieb:

    in string wandeln und die länge des strings ermitteln! 😋 😉 😮

    #include <string.h>  // fuer funktion "strlen"
    #include <stdio.h>   // fuer sprintf,printf
    
    int main(void)
    {
      int zahl = 1234;   // die zahl, kann auch float o. double sein
      char str[10];      // der string in den die zahl kommt
      int length;     // variable des types int den sprintf zurueckgibt
    
      length = sprintf(str,"%d",zahl);  // zahl wird in str geschrieben
    
      // length = strlen(str);    // unnötig, sprintf() liefert die Länge bereits zurück
    
      printf("laenge: %d\n",length);  // und ausgegeben
      return 0;  // und ende gut, alles gut
    }
    

    ist das suche den unterschied? 😕



  • http://xcpp.de/gewonnen.JPG

    hab ich jetzt 1 Mio € gewonnen? lol

    ne das 2te spart doch code...



  • ja nochbesser wenn sprintf die länge zurückgibt....hab ich jetz zum beispiel noch nicht gewusst...
    und @hää???:
    schau mal genau! pointercrash hat die zeilen 11 und 13 verändert...ich hoffe du verstehst es jetz!



  • kale1990 schrieb:

    ja nochbesser wenn sprintf die länge zurückgibt....hab ich jetz zum beispiel noch nicht gewusst...

    Ja, in der Kürze liegt die Würze 🙂 ... und wenn mich nicht alles täuscht, könnte man auch Zeile 1 (<string.h>) rausschmeißen 😉



  • Das ist nicht euer ernst, oder?



  • Tim schrieb:

    Das ist nicht euer ernst, oder?

    Wie ernst brauchst Du's denn? 🤡



  • pointercrash() schrieb:

    Tim schrieb:

    Das ist nicht euer ernst, oder?

    Wie ernst brauchst Du's denn? 🤡

    Wie ernst willst du genommen werden? 😉



  • haha.

    das sag ich nur:
    Serious Cat



  • pointercrash() schrieb:

    Ja, in der Kürze liegt die Würze 🙂 ... und wenn mich nicht alles täuscht, könnte man auch Zeile 1 (<string.h>) rausschmeißen 😉

    Eigentlich kann man den ganzen Code rausschmeissen. Tim hat doch bereits alles gesagt. 😉



  • @tim & groovemaster
    Wo ist euer Problem?
    Aus euren balsamierenden Formulierungen werde ich nicht wirklich schlau. Also, was paßt Euch an dem Thread nicht?



  • groovemaster schrieb:

    Tim hat doch bereits alles gesagt. 😉

    nicht ganz. es gibt einige schicke log10 algorithmen für integers. einfach mal danach googlen...
    🙂



  • jebus schrieb:

    hallo,

    hab hier ne aufgabe in der steht, man soll die anzahl der stellen einer zahl überprüfen und vergleichen.

    weiss aber nicht wie ich das machen soll. gibts dafür eine funktion oder lässt sich sowas relativ einfach programmieren?

    danke schonmal

    Es gibt viele Funktionen. Es gibt auch viele Zahlenformate.
    Es lässt sich auch manches relativ einfach programmieren. 😃
    Vielleicht wäre es hilfreich, wenn du deine Aufgabenstellung präziser(!) formulierst.
    Also, in welchem Format liegt die Zahl vor ?

    MfG
    D.A.
    ( der die Dinge aufklärt ) 😉



  • Gibt's nochmal ne Musterlösung? 😃

    #include <assert.h>
    
    int count_num_impl( int number, int result )
    {
            return number == 0 ? result : count_num_impl( number / 10, result + 1 );
    }
    
    int count_num( int number )
    {
            return count_num_impl( number, 0 );
    }
    
    int main()
    {
            assert( count_num( 10000 ) == 5 );
            assert( count_num( 10001 ) == 5 );
            assert( count_num( 99999 ) == 5 );
            return 0;
    }
    


  • LordJaxom schrieb:

    Gibt's nochmal ne Musterlösung? 😃

    rekursiv durch 10 teilen? 😕
    das muss ein scherz sein...



  • pale dog schrieb:

    rekursiv durch 10 teilen? 😕
    das muss ein scherz sein...

    Aaach Schnickschnack. Jeder gute Compiler optimiert das zu einer Schleife 😉


Anmelden zum Antworten