Herausfinden wann Übertrag zu trifft



  • ok, ich habe hier einen Counter und ich möchte gerne feststellen, wann folgende Überträge auftreten

    9->10
    99->100
    999->1000
    9999->10000

    Es ist mir schon klar dass ich für das obige Beispiel gerade mal eine if Anweisungen mit 4 OR benötige und ich hätte das gewünschte Ziel erreicht. Ich bin aber auf der suche nach einer allgemeinen Formel, wie kann ich das programmiertechnisch lösen

    also wenn anzahl = 9

    würde es ja so passen

    if(((anzahl+1)%10) == 0){
       return TRUE;
    }
    

    das trifft dann aber auch auf

    anzahl = 19 zu



  • ^^ such mal nach der funktion 'log10'
    🙂



  • Formel1 Freak schrieb:

    ok, ich habe hier einen Counter und ich möchte gerne feststellen, wann folgende Überträge auftreten

    9->10
    99->100
    999->1000
    9999->10000

    Es ist mir schon klar dass ich für das obige Beispiel gerade mal eine if Anweisungen mit 4 OR benötige und ich hätte das gewünschte Ziel erreicht. Ich bin aber auf der suche nach einer allgemeinen Formel, wie kann ich das programmiertechnisch lösen

    also wenn anzahl = 9

    würde es ja so passen

    if(((anzahl+1)%10) == 0){
       return TRUE;
    }
    

    das trifft dann aber auch auf

    anzahl = 19 zu

    int x = 10;
    
    if(((anzahl+1)%x) == 0){
        x = x * 10;
       return TRUE;
    }
    


  • ach so, wenn dir 'log10' zu doof ist (wegen fliesskomma):
    probier mal das:

    // gibt 1 zurueck wenn x+1 zur naechsten zehnerpotenz wechselt
    int only_nines (int x)
    {
      while (x)
      {
        if (x%10 != 9)
          return 0;
        x = x/10;
      }
      return 1;
    }
    

    🙂



  • +fricky schrieb:

    ach so, wenn dir 'log10' zu doof ist (wegen fliesskomma):
    probier mal das:

    // gibt 1 zurueck wenn x+1 zur naechsten zehnerpotenz wechselt
    int only_nines (int x)
    {
      while (x)
      {
        if (x%10 != 9)
          return 0;
        x = x/10;
      }
      return 1;
    }
    

    🙂

    Danke erstmal für die Antworten. Dieses Beispiel gefällt mir am besten.

    @Belli bist du sicher daß dein Beispiel funktioniert? Mit einem "static int" vieleicht, aber so wie es jetzt dasteht, glaube ich es nicht. Möglicherweise habe ich da aber etwas übersehen.



  • Formel1 Freak schrieb:

    @Belli bist du sicher daß dein Beispiel funktioniert? Mit einem "static int" vieleicht, aber so wie es jetzt dasteht, glaube ich es nicht. Möglicherweise habe ich da aber etwas übersehen.

    Das kommt auf den Kontext an. Natürlich darf der Scope von x nicht verlassen werden, solange weitere Überläufe stattfinden können.
    So aus dem Zusammenhang gerissen müsste x tatsächlich global oder static sein.


Anmelden zum Antworten