Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] wiederholte quersumme

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • stevezi
    hat ein Thema erstellt [Erledigt] wiederholte quersumme.

    [Erledigt] wiederholte quersumme

    hi, kann mir vielleicht jemand helfen,

    wie bekomme ich von einer ganzzahl die wiederholte quersumme?

    die normale qs bekomme ich wie folgt:


    <?PHP
    function crossfoot ( $digits )
    {
    // Typcast falls Integer uebergeben
    $strDigits = ( string ) $digits;
    for( $intCrossfoot = $i = 0; $i < strlen ( $strDigits ); $i++ )
    {
    $intCrossfoot += $strDigits{$i};
    }
    return $intCrossfoot;
    }


    echo ( crossfoot ( 156825 ) );
    ?>

    (quersumme im beispiel 27, ich benötige hier den wert "9")

    schon mal danke im vorraus

  • stevezi
    antwortet
    oh, is natürlich auch ganz nett
    denke, ich werde mich für diese möglichkeit entscheiden.

    @all danke nochmal

    Einen Kommentar schreiben:


  • David
    antwortet
    Das geht auch ganz kurz iterativ
    PHP-Code:
    <?php
    function foo($x) {
      while(
    9<$x) {
        
    $x = (int)($x/10) + $x%10;
      }
      return 
    $x;
    }

    // Test
    echo foo(0) . " ";
    echo 
    foo(12) . " ";
    echo 
    foo(123) . " ";
    echo 
    foo(192837465) . " ";

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Dann markiere ich den Beitrag mal als erledigt, bitte nächstes mal selber dran denken

    Einen Kommentar schreiben:


  • stevezi
    antwortet
    danke

    ok, hat mir geholfen, thanks

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von stevezi Beitrag anzeigen
    dachte nur, dass man mit nur einer funktion direkt zur einstelligen qs kommen könnte
    Das mit der rekursiven Funktion (ist ja nur eine) ist sicher die einfachste und eleganteste Version.
    Aber wenn du es unbedingt ohnr Rekursion haben willst, geht das auch:
    PHP-Code:
    function quer_summe($z){
        while (
    $z 9){
            
    $sum 0;
            
    $str "$z";
            
    $len strlen($str);
            for (
    $i 0;$i $len;$i ++){
                
    $sum += $str{$i};
            }
            
    $z $sum;
        }
        return(
    $z);

    Einen Kommentar schreiben:


  • stevezi
    antwortet
    danke

    hab ich mir schon gedacht,
    dachte nur, dass man mit nur einer funktion direkt zur einstelligen qs kommen könnte,

    trozdem. hast mir schon weitergeholfen, danke

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Hallo,
    wieder Stichwort Rekursion, du rufst die Funktion so lange auf, bis das Ergebnis erzielt wurde (einstelliges Ergebnis).

    Pseudocode:
    Code:
    function quersumme(zahl) {
      // quersumme ausrechnen
      if (neue_quersumme > 9) {
        neue_quersumme = quersumme(neue_quersumme);
      }
      return neue_quersumme
    }

    Einen Kommentar schreiben:

Lädt...
X