Avatar billede blueeye97 Nybegynder
21. december 2004 - 22:46 Der er 11 kommentarer og
1 løsning

Split streng op

Hvordan splitter jeg en streng op så jeg kan beregne tværsummen ?
Avatar billede detox Nybegynder
21. december 2004 - 22:56 #1
Lidt besværligt, men det virker:

$t = '12345';
$len = strlen($t);
$tsum = 0;
for ($i=0;$i<$len;$i++) {
    $tsum += $t[$i];
}
echo $tsum;
Avatar billede detox Nybegynder
21. december 2004 - 22:58 #2
Ellers kan du lave en lille funktion der klarer opgaven:

function tsum($t) {
    $len = strlen($t);
    $tsum = 0;
    for ($i=0;$i<$len;$i++) {
        $tsum += $t[$i];
    }
    return $tsum;
}

$tal = '12345';
echo tsum($tal);
Avatar billede blueeye97 Nybegynder
21. december 2004 - 22:59 #3
Kanon.. Tak.. :o)
Avatar billede Slettet bruger
21. december 2004 - 23:18 #4
detox' foreslag regner kun tværsummen ud hvis den i første omgang er 9 eller derunder.
Sådan kan det gøres hvis det skal virke hver gang:

<?php
function tvaer_sum($tal) {
  $tal_str = strval($tal);
  $tal_length = strlen($tal_str);
  $digit_sum = 0;
  for ($pos = 0;$pos < $tal_length;$pos++) {
    $digit_sum += intval($tal_str{$pos});
  }
  if (strlen(strval($digit_sum)) > 1) {
    $digit_sum = tvaer_sum($digit_sum);
  }
  return $digit_sum;
}
echo tvaer_sum(7458);
?>
Avatar billede Slettet bruger
21. december 2004 - 23:20 #5
for tværsummen af 7458 er ikke 7 + 4 + 5 + 8 = 24
men den er
7 + 4 + 5 + 8 = 24
2 + 4 = 6
Avatar billede detox Nybegynder
21. december 2004 - 23:30 #6
gartzen -> jeg tror du forveksler: 'Tværsummen' med: 'Den endelige tværsum'.
Avatar billede detox Nybegynder
21. december 2004 - 23:33 #7
For at finde: 'Den endelige tværsum' kan du blot:

$tal = '768977852'; // tværsum: 59
echo $tal%9; // endelig tværsum: 5
Avatar billede Slettet bruger
21. december 2004 - 23:39 #8
detox -> Dit sidste eksempel holder ikke helt. Hvis den første tværsum fx var på 7 cifre..
Men det kan godt være at en tværsum ikke er "så langt ned man kan komme". Det har jeg bare altid fået at vide :)

Men i hvert fald er der så et kodeeksempel hvis man vil finde den endelige tværsum ;o)
Avatar billede detox Nybegynder
21. december 2004 - 23:46 #9
gartzen -> Du kan altid finde den endelige tværsum ved at dividere med 9, så er resten den endelige tværsum (osse kaldet modular division) og det er uanset hvor mange cifre du har.
Det eneste tilfælde der ikke dur er hvis det oprindelige tal er: 9, men man har jo osse kun brug for tværsum af flercifrede tal.
Avatar billede detox Nybegynder
21. december 2004 - 23:56 #10
Alle multiplikanter af 9 vil selvfølgelig give 0, så den rette metode er:

$tvaersum = $tal%9==0 ? 9 : $tal%9;
echo $tvaersum;
Avatar billede Slettet bruger
21. december 2004 - 23:59 #11
Ok.. Jeg skulle også lige til at sige at der vidst var noget galt :)
Men sejt nok.. Så er der jo slet ingen grund til den funktion jeg lavedde :)
Hvorfor har mine matematik lærere aldrig fortalt mig det? ;o)
Avatar billede detox Nybegynder
22. december 2004 - 00:00 #12
Måske hørte du ikke efter i den time :O)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester