login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Getal in paren verdelen en dan optellen (Opgelost)

Offline jc2 - 29/12/2008 14:19 (laatste wijziging 29/12/2008 14:49)
Avatar van jc2PHP interesse Het is misschien een basisvraag, maar ik kom er niet echt aan uit.
Voornamelijk omdat het als een wiskundig vraagstuk moet worden opgelost en ik superslecht in exacte vakken ben.

Ik heb een code nodig met lengte x.
Deze lengte moet even zijn.
Dit is mij zo gelukt:
  1. if($lengte%2==0){
  2. // blablabla
  3. }
  4. else{
  5. // blablabla
  6. }


Nu dienen de laatste 2 getallen als controlegetal, dus:
  1. $nieuwelengte=$lengte-2;


Vervolgens laat ik via een for-loop de code aanmaken.
  1. for($i=1;$i<=$nieuwelengte;$i++){
  2. $code.=rand(0,9);
  3. }


Dan bepaal ik het aantal paren.
  1. $aantalparen=$nieuwelengte/2;


Tot zover gaat alles nog goed.
Nu wil ik van de tot nu toe gegenereerde code, de paren optellen en het ronde gemiddelde pakken.
Bijv. 12345678 -> (12+34+56+78)/4=45 (=controlegetal!).
De code moet dus worden: 1234567845.

Ik weet hoe ik het controlegetal moet toevoegen aan de string.
Het lukt me ook om getallen op te tellen en te delen.
Mijn probleem is alleen dat ik niet weet hoe ik een x aantal paren kan laten genereren en vervolgens optellen.
Ik weet wel hoe ik dit bij een bepaald aantal paren kan doen, maar dit werkt niet:
  1. $b=0;
  2. $e=2;
  3. for($j=1;$j<=$aantalparen;$j++){
  4. "$paar".$j=substr($code,$b,$e);
  5. $b=$b+2;
  6. $e=$b+2;
  7. }

Hij ziet $paar nu niet meer als een variabele, maar als een string.

Wie kan mij helpen?

Update:
Zojuist ben ik bij 'Snel vragen' geholpen met mijn probleem.
Vreemd, want zo vaak zijn er daar geen gebruikers actief als ik er ben. 
De oplossing luidde als volgt:

  1. for($i=1;$i<=$nieuwelengte;$i++){
  2. $code.=rand(0,9);
  3. if($i%2==0){
  4. $code.="/";
  5. }
  6. else{
  7. }
  8. }
  9.  
  10. $aantalparen=$minlengte/2;
  11.  
  12. $explodecode=explode("/",$code);
  13.  
  14. $eindgetal=0;
  15.  
  16. for($j=0;$j<=$aantalparen;$j++){
  17. $eindgetal=$eindgetal+$explodecode[$j];
  18. }
  19.  
  20. $code.=round($eindgetal/$aantalparen);

1 antwoord

Gesponsorde links
Offline Martijn - 29/12/2008 14:49 (laatste wijziging 29/12/2008 14:53)
Avatar van Martijn Crew PHP je kunt ook een getal maken van x lang ->

  1. $getal=rand(100000,999999); //(6 cijferig in dit geval)
  2. //en dan
  3. $getalArray = str_split($getal,2); // deel in stukjes van 2
  4. $controle = array_count_values($getalArray)/count($getalArray);//tel alles uit de array bij elkaar op en deelt door aantal waardes in array
  5. $controle=round($controle);// afronden
  6.  
  7. $samenGetal= implode("",$getalArray).$controle
  8.  
  9. echo $samenGetal;
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.257s