Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:26 Der er 42 kommentarer og
1 løsning

Brækforkortelse

Findes der en indbygget funktion i php til at forkorte brøker ned til det mindst mulige (JA, jeg har kigget i manualen, men kan ikke finde noget)??

Hvis ikke, er der så nogen, der har nogle ideer til hvordan noget sådant laves?
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 11:27 #1
Mener du ikke BRØKforkortelse??? Forhåbentlig ikke bræk *S*

Kan du ikke bare dividere helt ud indtil der ikke er en rest?

::sunlock.dk::
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:28 #2
LOL @ min title! Ups!!
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:29 #3
Du kan vel bruge round?
round(tal, decimaler);
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 11:29 #4
Det får nok flere til at kigge *lol*
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:30 #5
up, nej det kan du ikke:(
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:37 #6
Du kan jo lave din egen klamme:
<?php
$tæller = 10;
$nævner = 2;
$nævner > $tæller ? $for = $tæller : $for=$nævner;
for($i=0; $i<$for; $i++){
    if($tæller % $for ==0){
        if($nævner % $for ==0){
            $last_eq_n = $nævner / $for;
            $last_eq_t = $tæller / $for;
        }
    }
}
if($last_eq_n && $last_eq_t){
    echo \'Det blev fundet et ny brøk:<br>\';
    echo $last_eq_t.\'/\'.$lats_eq_n;
}

nb: utestet !!
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:38 #7
tester den lige
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:40 #8
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:40 #9
Add lige:

else{
    echo \'Brøken kunne ikke forkortes\';
}

Til bunden.
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:41 #10
Den virker ikke fordi at jeg kom til at skrive echo $lats_eq_n i stedet for $last_eq_n i bunden.
Sådan skal den være:

<?php
$tæller = 736;
$nævner = 12;
$nævner > $tæller ? $for = $tæller : $for=$nævner;
for($i=0; $i<$for; $i++){
    if($tæller % $for ==0){
        if($nævner % $for ==0){
            $last_eq_n = $nævner / $for;
            $last_eq_t = $tæller / $for;
        }
    }
}
if($last_eq_n && $last_eq_t){
    echo \'Det blev fundet et ny brøk:<br>\';
    echo $last_eq_t.\'/\'.$last_eq_n;
}
else{
    echo \'Brøken kunne ikke forkortes\';
}
?>
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:42 #11
jap! Det fand jeg også ud af!
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:53 #12
Det er jo faktisk en nyttig ting, så jeg har bygget en form på og poster den så alle kan få gavn af den:

<FORM METHOD=GET ACTION=\"<?=$PHP_SELF?>\">
Tæller:
&nbsp;<INPUT TYPE=\"text\" NAME=\"teller\" VALUE=\"<?=$teller?>\">
&nbsp;<INPUT TYPE=\"text\" NAME=\"nevner\" VALUE=\"<?=$nevner?>\">
<INPUT TYPE=\"hidden\" NAME=\"forkort\" VALUE=\"ok\">
<INPUT TYPE=\"submit\" VALUE=\"Forkort\">
</FORM>
<?php

if($forkort){
    $nEvner > $teller ? $for = $teller : $for=$nevner;
    for($i=0; $i<$for; $i++){
        if($teller % $for ==0){
            if($nevner % $for ==0){
                $last_eq_n = $nevner / $for;
                $last_eq_t = $teller / $for;
            }
        }
    }
    if($last_eq_n && $last_eq_t){
        echo \'Det blev fundet et ny brøk:<br>\';
        echo $last_eq_t.\'/\'.$last_eq_n;
    }
    else{
        echo \'Brøken kunne ikke forkortes\';
    }
}
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:54 #13
Typisk at poste noget med fejl!

<FORM METHOD=GET ACTION=\"<?=$PHP_SELF?>\">
Tæller:
&nbsp;<INPUT TYPE=\"text\" NAME=\"teller\" VALUE=\"<?=$teller?>\">
&nbsp;<INPUT TYPE=\"text\" NAME=\"nevner\" VALUE=\"<?=$nevner?>\">
<INPUT TYPE=\"hidden\" NAME=\"forkort\" VALUE=\"ok\">
<INPUT TYPE=\"submit\" VALUE=\"Forkort\">
</FORM>
<?php

if($forkort){
    $nevner > $teller ? $for = $teller : $for=$nevner;
    for($i=0; $i<$for; $i++){
        if($teller % $for ==0){
            if($nevner % $for ==0){
                $last_eq_n = $nevner / $for;
                $last_eq_t = $teller / $for;
            }
        }
    }
    if($last_eq_n && $last_eq_t){
        echo \'Det blev fundet et ny brøk:<br>\';
        echo $last_eq_t.\'/\'.$last_eq_n;
    }
    else{
        echo \'Brøken kunne ikke forkortes\';
    }
}
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 11:56 #14
barefoot <<<

Du er godt nok hurtig, men der er en fejl. Fx kan 1750 ikke forkortes med 3, det vil jeg nu godt sige...

Jeg kan ikke lige se fejlen...

::sunlock.dk::
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:57 #15
formen kan laves sådan her:

<FORM METHOD=GET ACTION=\"<?=$PHP_SELF?>\">
Tæller:
&nbsp;<INPUT TYPE=\"text\" NAME=\"teller\" VALUE=\"<?=$teller?>\">
&nbsp;<INPUT TYPE=\"text\" NAME=\"nevner\" VALUE=\"<?=$nevner?>\">
<INPUT TYPE=\"submit\" name\"forkort\" VALUE=\"Forkort\">
</FORM>
Avatar billede barefoot Nybegynder
31. juli 2001 - 11:59 #16
Tak:-) men:
1750 / 3 =583,333 <=> at brøken ikke kan forkortes.

Jeg glemte forresten at skrive nævner på i formen:

<FORM METHOD=GET ACTION=\"<?=$PHP_SELF?>\">
Tæller:<br>
&nbsp;<INPUT TYPE=\"text\" NAME=\"teller\" VALUE=\"<?=$teller?>\"><br>
Nævner:<br>
&nbsp;<INPUT TYPE=\"text\" NAME=\"nevner\" VALUE=\"<?=$nevner?>\">
<INPUT TYPE=\"hidden\" NAME=\"forkort\" VALUE=\"ok\">
&nbsp;<INPUT TYPE=\"submit\" VALUE=\"Forkort\">
</FORM>
<?php

if($forkort){
    $nevner > $teller ? $for = $teller : $for=$nevner;
    for($i=0; $i<$for; $i++){
        if($teller % $for ==0){
            if($nevner % $for ==0){
                $last_eq_n = $nevner / $for;
                $last_eq_t = $teller / $for;
            }
        }
    }
    if($last_eq_n && $last_eq_t){
        echo \'Det blev fundet et ny brøk:<br>\';
        echo $last_eq_t.\'/\'.$last_eq_n;
    }
    else{
        echo \'Brøken kunne ikke forkortes\';
    }
}
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 11:59 #17
Det virker som om det kun virker med lige tal??
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:00 #18
wizprod => øh ja? Det var jo sådan jeg sendte den i anden omgang:)
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 12:00 #19
barefoot <<<

Det er rigtigt, men den kan vel godt forkortes således:
1750/3=583,3333
583 + 1/3 *S*

Det var det, jeg troede wizprod.com var ude efter...

::sunlock.dk::
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:01 #20
15/3 virker da
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:02 #21
ja ok, det er rigtigt...
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 12:03 #22
Det var derfor jeg spurgte om han ikke bare kunne bruge resten til noget... *S*
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 12:03 #23
tjaaa, båe og... jeg var ude efter at at f.eks. 20/2 blev forkortet til 10/1 osv
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 12:04 #24
wizprod.com <<<

Hvad så med fx 22/7????
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 12:05 #25
skal den bare sige at den ikke kunne forkortes...
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:06 #26
sunlock.dk => men det er jo ikke at forkorte bræker, men at lave hele tal om til brøker. Det er jo en vis forskel.
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 12:07 #27
barefoot + wizprod.com <<<

Ok... jeg misforstod bare spm\'et - sorry :(

Men det virker altså efter hensigten nu :)

::sunlock.dk::
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:07 #28
sunlock => jeg mente selvfølgelig at lave UHELE tal om til brøker:))
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 12:08 #29
hmmm mit domæne er nede (endnu en gang, DHT), så skifter lige server for at teste
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 12:08 #30
barefoot <<<

Trykfejl er gratis *S*

Desuden gik jeg også ud fra det :))
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:11 #31
Avatar billede barefoot Nybegynder
31. juli 2001 - 12:12 #32
Jeg vil ud og spise kirsebær.
Kommer igen om lidt.
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 12:15 #33
prøv lige at indtaste 12/10, det giver IRL 6/5 meeen ikke efter din ellers geniale mskine!
Avatar billede barefoot Nybegynder
31. juli 2001 - 13:00 #34
back!

Ja, det har du ret i og det skyldes en dum men også meget simpel fejl i min maskine.
Som i kan se på koden er det $i som der skal divideres med. Jeg kom til at bruge $for da jo er det samme som nævneren!!!!
Derved kom der altid kun en udregning.
Men nu har jeg rettet det, og som du kan se virker det nu, også med 12/10;

En lidt pinlig fejl som jeg har tendens til at lave alt for tit og ofte:()

http://barefoot.cee.dk/experten/broekforkorter.php?teller=12&nevner=10&forkort=ok
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 13:08 #35
barefoot <<<

ja, nu virker det, men nu kommer du aldrig ind i:
else
{
  echo \'Brøken kunne ikke forkortes som bræk\';
}

Den vil jo heletiden dividere ;)

Derfor er denne absolit... Den kan lige så godt fjernes... prøv med 12/11 *S*

::sunlock.dk::
Avatar billede barefoot Nybegynder
31. juli 2001 - 13:16 #36
sunlock => det er fordi at første værdi at $i er sat til 1.
Denne vil returnere sammen bræk som den originale.
Ved at sætte $i=2 i starten kommer det til at virke helt.
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 13:17 #37
barefoot <<<

Jepper... det var også det jeg mente. Derfor hvis $i=1 skal den gå i else *S*

::sunlock.dk::
Avatar billede barefoot Nybegynder
31. juli 2001 - 13:19 #38
Så er det lettere bare at starte ved $i=2:))
Så slipper man for at kigge på om $i==1;
Sådan har jeg gjordt nu.
Enhver bræk vil som minimum være delelig med 2 hvis den kan forkortes.
Hvis tallet er mindre end 2 så har man originalbrøken da det kun kan være lige tal.
Derfor er der slet ikke nogen grund til at starte før 2:)))
Avatar billede sunlock.dk Nybegynder
31. juli 2001 - 13:20 #39
hehe... det er da utroligt... kan folk ikke skrive BRØK *S*
Avatar billede barefoot Nybegynder
31. juli 2001 - 13:23 #40
damn *GG*
Avatar billede wizprod.com Nybegynder
31. juli 2001 - 14:26 #41
Det virker jo fint nok! Here you go barefoot!
Avatar billede barefoot Nybegynder
31. juli 2001 - 14:29 #42
yearh *G*
Avatar billede barefoot Nybegynder
31. juli 2001 - 14:38 #43
Jeg sender lige den enedlige udgave til fremtidige brugere:

<FORM METHOD=GET ACTION=\"<?=$PHP_SELF?>\">
Tæller:<br>
&nbsp;<INPUT TYPE=\"text\" NAME=\"teller\" VALUE=\"<?=$teller?>\"><br>
Nævner:<br>
&nbsp;<INPUT TYPE=\"text\" NAME=\"nevner\" VALUE=\"<?=$nevner?>\">
<INPUT TYPE=\"hidden\" NAME=\"forkort\" VALUE=\"ok\">
&nbsp;<INPUT TYPE=\"submit\" VALUE=\"Forkort\">
</FORM>
<?php

if($forkort){
    $nevner > $teller ? $for = $teller : $for = $nevner;
    for($i=2; $i<=$for; $i++){

        if($teller % $i ==0){
            if($nevner % $i ==0){
                $last_eq_n = $nevner / $i;
                $last_eq_t = $teller / $i;
            }
        }
    }
    if($last_eq_n && $last_eq_t){
        echo \'Det blev fundet et ny brøk:<br>\';
        echo $last_eq_t.\'/\'.$last_eq_n;
    }
    else{
        echo \'Brøken kunne ikke forkortes som bræk\';
    }
}
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