Avatar billede elskermad.dk Nybegynder
30. august 2003 - 16:37 Der er 25 kommentarer og
1 løsning

matematisk udregning vha PHP

Hej Eksperter :)

Jeg skal vha. PHP udregne noget matematik...

opgaven går ud på at jeg skal finde ud af hvormange "brikker" der vil komme til at være på et bræt hvis man når man kommer til et nyt felt skal fordoble antallet af "brikker" fra forrige felt!

I kan se hvordan brættet ser ud her: http://80.197.72.220/felt.gif

Som I kan se bliver tallet rigtigt stort til sidst da der vil komme mange tusinde brikker i de sidste felter!

Jeg har lavet denne kode indtil nu;

<?

$felt = 1;
$antal = 1;

while($felt < 6) { //Antal felter minus 1
    if ($felt > 1) {
    $antalifelt = $antal*2;
    $antal = $antal+$antalifelt;
    }
   
    $felt = $felt+1;
}

echo"
$antal<p>
";

$felter = $felt-1;

echo"
$felter<p>
";

?>

men den regner ikke rigtigt, så håber der er en der kan hjælpe mig med at få den til at regne opgaven rigtigt ud!
Avatar billede elskermad.dk Nybegynder
30. august 2003 - 16:38 #1
while($felt... skal så selvfølgelig være 65 istedet for 6, bare lidt nemmere at tjekke om det virker med et lavere tal da jeg endnu ikke ved hvad resultatet bliver!
Avatar billede soreno Praktikant
30. august 2003 - 17:04 #2
Du får resultatet for n felter ved:

echo pow(2, n);

F.eks.
<?
  show_source("test.php");
  for($i=0;$i<10;$i++)
  {
    echo "Resultat for " . ($i+1) . " felter: " . pow(2, $i) . "<br>";
  }

?>

Output:
Resultat for 1 felter: 1
Resultat for 2 felter: 2
Resultat for 3 felter: 4
Resultat for 4 felter: 8
Resultat for 5 felter: 16
Resultat for 6 felter: 32
Resultat for 7 felter: 64
Resultat for 8 felter: 128
Resultat for 9 felter: 256
Resultat for 10 felter: 512
Avatar billede soreno Praktikant
30. august 2003 - 17:07 #3
Avatar billede soreno Praktikant
30. august 2003 - 17:20 #4
Det var noget vrøvl.

Du får resultatet for n felter ved:

echo pow(2, $n-1);

F.eks.
<?
  show_source("test.php");
 
  $n = 10;
  echo "Resultat for " . ($n) . " felter: " . pow(2, ($n-1)) . "<br>";
?>
Avatar billede elskermad.dk Nybegynder
30. august 2003 - 17:23 #5
ja eller noget lignende den opgave!

så nu har jeg da skaffet sodavand til hele klassen på fredag mange tak for hjælpen!!
Avatar billede bearhugx Nybegynder
30. august 2003 - 20:13 #6
jo jo ... men er det ikke hele brædtet, der skal optæles

1 felt = 1
2 felter  = 1 + 2 = 3
3 felter  = 1 + 2 + 4 = 7

f = antal felter
eller  2^(f-1) + 2^(f-2) + ... + 2^(0)

og som kode

$f = 10; //Eksempel : 10 felter
$brikker = 0;

for($i=0;$i<$f;$i++) {
  $brikker += pow(2, $i);
}
print(" Med $f felter på brætet vil du have $brikker brikker...");
Avatar billede soreno Praktikant
30. august 2003 - 20:19 #7
Ikke iflg. illustrationen:
http://80.197.72.220/felt.gif

:-)
Avatar billede bearhugx Nybegynder
30. august 2003 - 20:43 #8
nope -- ikke ifølge illustrationen - men hvis man læser opgaven :_
"opgaven går ud på at jeg skal finde ud af hvormange "brikker" der vil komme til at være på et bræt hvis man når man kommer til et nyt felt skal fordoble antallet af "brikker" fra forrige felt!"

hvor der explicit står : "hvormange "brikker" der vil komme til at være på et bræt" ... og altså ikke  "på det sidste felt"...

Det er tydeligt at opgaven er om summen af hele brætet og ikke kun det sidste felt (som så ellers bare ville være 2^(f-1))
Avatar billede bearhugx Nybegynder
30. august 2003 - 20:44 #9
man skal jo ikke lade sig styre af at vedkommende har tegnet et billede, som kun giver det halve svar :-))
Avatar billede soreno Praktikant
30. august 2003 - 20:48 #10
Det er ligesom Anders And blade. Der kigger jeg også kun billederne !

:-)
Avatar billede erikjacobsen Ekspert
30. august 2003 - 20:54 #11
med n felter giver summen af alle felter:  2^n - 1
Avatar billede bearhugx Nybegynder
30. august 2003 - 21:04 #12
ej >> nu hvor du siger det, kan jeg se at du faktisk har ret -- jahuu -- ingen underlig for-løkke ... Det er jo faktisk ret simpelt så...

dvs. at der f.eks. med 64 felter, så er der 2^64 - 1  brikker
Avatar billede elskermad.dk Nybegynder
30. august 2003 - 23:47 #13
okay der er da sket lidt siden sidst...

hvis jeg skal komme med det helt præsice spørgsmål som jeg skulle have svar på var det tallet af alle brikkerne på brættet, men da det sidste felt gav så mange i sig selv synes jeg ikke at jeg kunne se forskel på det!

kan i skrive det præcise tal for både det sidste felt og for det sammenlagte antal brikker?
Avatar billede erikjacobsen Ekspert
30. august 2003 - 23:49 #14
Summen: 2^n - 1
Sidste felt: 2^(n-1)
Avatar billede elskermad.dk Nybegynder
30. august 2003 - 23:54 #15
hvordan skal det skrives?

altså,

<?
echo"2^n - 1";
?>

eller hva? og skal n erstattes med antal felter?
Avatar billede erikjacobsen Ekspert
30. august 2003 - 23:59 #16
Brug en lommeregner:

  2    yx    64    -    1

hedder det ca. på min. Det giver ca. 1.84 x 10^19
Avatar billede elskermad.dk Nybegynder
31. august 2003 - 00:02 #17
hvad er yx på en lommeregner?
Avatar billede erikjacobsen Ekspert
31. august 2003 - 00:03 #18
Det står der sådan ca. på min ;)  Potensopløftning
Avatar billede bearhugx Nybegynder
31. august 2003 - 00:03 #19
x opløftet til y  - x^y
Avatar billede elskermad.dk Nybegynder
31. august 2003 - 00:05 #20
hehe ikke så vild til matematik så dejlig i vil hjælpe mig ;D altså 2 i 64'ende minus 1? hvorfor skal man minus en?
Avatar billede erikjacobsen Ekspert
31. august 2003 - 00:07 #21
Du skal trække én fra, for ellers passer tallet ikke (men det er inderligt
ligegyldigt når det er tal omkring de 10^19 )
Avatar billede elskermad.dk Nybegynder
31. august 2003 - 00:07 #22
dvs at der alt i alt er 18.446.744.073.709.551.615 brikker på brættet?
Avatar billede erikjacobsen Ekspert
31. august 2003 - 00:10 #23
Yeps. Dog vil jeg ikke garantere for alle cifre - det kan min gamle
lommeregner (en Technico ESR-903, der må være tæt på 20 år gammel)
ikke lige vise mig.
Avatar billede elskermad.dk Nybegynder
31. august 2003 - 00:14 #24
hehe os helt iorden bar sådan det ligner det :) bruger bare lommeregneren på computeren, den viser da en del tal hehe... mange tak for hjælpen og fortsat god nat hvis I ikke skal sove lidt :D
Avatar billede erikjacobsen Ekspert
31. august 2003 - 00:18 #25
Nå, er der en lommeregner på computeren? Der er da også så meget nymodens stads...

;)
Avatar billede detox Nybegynder
31. august 2003 - 03:22 #26
Du kan bruge 'bc math' til de store tal:
<?
$pow = bcpow(2,64);
echo bcsub($pow,1);
?>
og resultatet er rigtig nok: 18.446.744.073.709.551.615
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