Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Gestione stringa

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56

    Gestione stringa

    Salve a tutti,

    Sono appena approdato su questo linguaggio, e per "appena approdato" intendo che per ora ho solo studiato la funzione "print()".

    Mi sono portato avanti creando un convertitore da decimale a binario, nessun problema sul "grezzo" e velocissimo algoritmo che ho usato per la conversione, il mio problema sta nella stampa della stringa contenente il numero binario:

    Codice PHP:
          <?php         
             $dec
    =$_REQUEST['decimale'];          
             
    $bin ".";               
                if (isset(
    $_REQUEST['bin'])) {             
                   while (
    $dec 0) {               
                      if (
    $dec == 1)                  
                         
    $bin '1'.$bin
                   
                      else                 
                         
    $bin '0'.$bin;             

                      
    $dec /= 2;         
                    }      
                 }
             print(
    $bin);      
          
    ?>
    Il risultato è giusto, ma la stampa del numero in binario viene preceduta da una serie di '0'. Ade sempio per il numero 8:
    codice:
    0000...00001000.
    Cosa sbaglio ?

  2. #2
    Il problema non e' nella stampa, ma nell'algoritmo. La tua elaborazione prosegue finche' il numero decimale e' maggiore di zero, ma l'unica modifica che fai a quel numero e' dividerlo per 2. Ora, e' evidente che nessun numero maggiore di zero diventa zero solo a forza di dividerlo per due (l'elaborazione termina comunque quando il numero diventa sufficientemente piccolo perche' venga considerato zero dall'approssimazione), quindi devi fare il controllo sulla parte intera di $dec.

    Codice PHP:
    function mybin($dec) {
        
    $bin '';
        while ( 
    intval($dec) > ) {
            
    $bin $dec $bin;
            
    $dec /= 2;
        }
        return 
    $bin;
    }

    echo 
    mybin(8); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Tutto....
    Ovviamente la PHP non può essere sprovvista nella conversione di numeri, infatti esiste la funzione decbin() in grado di convertire un numero intero in binario senza fare cicli,moduli come hai fatto tu.....viceversa se vuoi convertire un binario in decimale usa bindec().





    Fonti :
    http://it.php.net/manual/en/function.bindec.php
    http://it.php.net/manual/en/function.decbin.php

  4. #4
    Originariamente inviato da Ophy94
    Tutto....
    Ovviamente la PHP non può essere sprovvista nella conversione di numeri, infatti esiste la funzione decbin() in grado di convertire un numero intero in binario senza fare cicli,moduli come hai fatto tu.....viceversa se vuoi convertire un binario in decimale usa bindec().





    Fonti :
    http://it.php.net/manual/en/function.bindec.php
    http://it.php.net/manual/en/function.decbin.php
    Immagino fosse un esercizio didattico visto che parla di essersi appena avvicinato al linguaggio.

    Ma poi LA PHP?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    perdonami non voglio contestarti ma mi sembrava giusto dire che esistono delle funzioni già belle create in grado di effettuare questa conversione, quindi gli sarebbe stato mooolto più facile fare con le due funzioni citate in precedenza.


    Non ho capito comunque il significato di "Ma poi LA PHP? "

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    56
    Originariamente inviato da k.b
    Il problema non e' nella stampa, ma nell'algoritmo. La tua elaborazione prosegue finche' il numero decimale e' maggiore di zero, ma l'unica modifica che fai a quel numero e' dividerlo per 2. Ora, e' evidente che nessun numero maggiore di zero diventa zero solo a forza di dividerlo per due (l'elaborazione termina comunque quando il numero diventa sufficientemente piccolo perche' venga considerato zero dall'approssimazione), quindi devi fare il controllo sulla parte intera di $dec.

    Codice PHP:
    function mybin($dec) {
        
    $bin '';
        while ( 
    intval($dec) > ) {
            
    $bin $dec $bin;
            
    $dec /= 2;
        }
        return 
    $bin;
    }

    echo 
    mybin(8); 
    Giusto, mi devo ancora abituare all'uso delle variabili in PHP. Grazie per le correzioni

    @Ophy94 Non conoscevo questa funzione, mi sarà molto utile

  7. #7
    Originariamente inviato da Ophy94
    Non ho capito comunque il significato di "Ma poi LA PHP? "
    Boh mi suona strano al femminile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.