Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361

    [Java] Dominio 2^n

    Ciao ragazzi ho un piccolo problemino...
    devo creare il dominio di una funzione booleana..
    io ho per esempio 4 variabili... devo memorizzare in un array le 2^n possibili combinazioni

    0001
    0010
    0011
    ecc....

    come posso fare?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Le domande relative al linguaggio Java vanno ora inserite nell'apposito forum dedicato.
    Sposto la discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    361
    chiedo scusa...

  4. #4
    Utente di HTML.it L'avatar di newbie
    Registrato dal
    Dec 2005
    Messaggi
    299
    Se il tuo obiettivo è in pratica avere tutti i numeri in binario (ad esempio oer n = 4) da 0000 a 1111, si potrebbe fare così:
    1) fai partire un ciclo for(int i = 0; i < Math.pow(2, n); i++)
    2) a ogni iterazione, puoi ottenere a partire dal numero i la sua rappresentazione come stringa binaria con Integer.toBinaryString(i)
    3) quando devi utilizzare la stringa come array di cifre binarie, per ottenere l'i-esima cifra basta sottrarre 48 (corrispondente a "0") all'i-esimo elemento della stringa

    Almeno spero...

    Svegliati, Neo. Matrix ti possiede...

  5. #5
    ma così ottiene tutte le combinazioni?

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  6. #6
    Spero di aver capito bene quello che serviva...questo codice dovrebbe stampare tutte le combinazioni di 0 e 1 a seconda del numero che metti in "n" (numero delle colonne). :master:

    codice:
    public class Prova {
        
        final static int cost = 2;
        
        public static void main(String[] args) {
            
            int n = 4;
            int m, k, s;
            
            m = exp(cost,n);
            int[][] comb = new int[m][n];
            
            for (int j=1; j<=n; j++){
                k = m/exp(2,j);
                s = 1;
                for (int i=1; i<=m; i++){
                    if (s%2!=0){
                       comb[i-1][j-1] = 0;
                       if (i%k==0){
                           s++;
                       }
                    }
                    else{
                       comb[i-1][j-1] = 1;
                       if (i%k==0){
                           s++;
                       }
                    }
                }
            }
            for (int i=0; i<m; i++){
                System.out.println();
                for (int j=0; j<n; j++)
                    System.out.print(comb[i][j] + " ");
            }
        }
        
        private static int exp(int m, int n){
            int z = m;
            for (int i=2; i<=n; i++)
                z = z * 2;
            return z;
        }
    }
    Scusa il nome delle variabili non molto esplicativi ma ho buttato già sta cosa velocemente...se vuoi qualche spiegazione chiedi pure.

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

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.