Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Trasformazione numero da base 10 a base 2

    Salve,
    Sono uno studente alle prese con il suo primo corso di programmazione java,
    Sono arrivato alla ricorsione. Un esercizio mi chiede di trasformare un numero intero decimale fornito dall'utente (parte gia' risolta), in una sequenza binaria di 0 e 1.
    Pensavo di usare un ciclo for e l'operatore % ma i tentativi che ho fatto non mi hanno portato a nulla di buono...
    help please!!
    Grazie mille

    Guido

  2. #2

    ooooooh ci sono riuscito!!!!

    Per tutti coloro che avessero incontrato i miei stessi problemi ... ecco la mia soluzione.

    ------------------------------------------------------------------------------------------------------
    public class BaseBinaria {

    /**
    Stampa da base 10 a base 2
    */
    public static void main(String[] args)
    {
    int n=0;
    do {
    System.out.print("Inserisci un intero positivo: ");
    n = Input.readInt();
    } while (n<=0);

    int q;
    int i=0;
    int resto[]=new int[20];

    do{
    q=n/2; // Risultato della divisione intera
    resto[i]=n%2; // Resto deposito risultati
    n=q;
    i++;
    }while (q>0);

    System.out.print("La rappresentazione binaria di "+n+ " e': ");

    for(i--;i>=0;i--)
    System.out.print(" "+resto[i]);

    System.out.println(" ");

    }

    }
    -----------------------------------------------------------------------------------------------------

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Se t'interessa c'e' anche un metodo della classe Integer che fa il lavoro per te.
    codice:
    String rappresentazioneBinaria = Integer.toBinaryString(n);

  4. #4
    Grazie ... ci vado a dare un' occhiata ^_^

  5. #5
    Ciao, se ho ben capito stai studiando la ricorsione, quindi suppongo che l'esercizio che hai proposto devi svolgerlo ricorsivamente, mentre la soluzione ceh hai dato è iterativa.
    Inoltre non credo che sia nello scopo dell'esercizio usare la funzione che ti è stata suggerita, anche se cmq si usa quella nel caso pratico.

    Per fini di studio cmq la funzione ricorsiva che risolve il problema dovrebbe essere questa

    codice:
    public String decimal2binary(int n) {
    	if (n==0)
    		return "0";
    	else {
    		if (n==1)
    			return "1";
    		else {
    			String bin=decimal2binary(n\2);
    			int r=n%2;
    			return bin+r;
                    }
    	}
    }
    l'ho scritta direttamente nel browser, perdona se ci sono piccoli errori

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non avevo letto la parola ricorsione... :P

  7. #7
    Grazie Mille... sempre meglio sapere piu' modi possibili per risolvere un problema ^_^

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,281
    Così è mooooolto più semplice:

    codice:
    public static String toBinary (int n)
    {
        String s = (n & 1) != 0 ? "1" : "0";
        if ((n >>= 1) != 0)
            s = toBinary (n) + s;
        return s;
    }
    no?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Scusa ma cosa fa l'operatore >>=?

    non l'ho mai visto prima, ho sempre visto soltanto >>, che è lo shift a destra, ma mai con il segno =

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da doraemon83
    Scusa ma cosa fa l'operatore >>=?

    non l'ho mai visto prima, ho sempre visto soltanto >>, che è lo shift a destra, ma mai con il segno =
    E' come per gli operatori +=, -=, *=, /=, |=, &=... se ci aggiungi un uguale dopo eviti di scrivere:
    codice:
    a = a + 2  -->  a += 2;
    a = a >> 2  --> a >>= 2;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.