Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1

    [JAVA]Creare cicili for annidati a runtime

    salve.
    Vi spiego subito il mio problema:
    ho un metodo che ha come parametro un intero.
    in base a quell'intero devo creare tanti cicli for annidati per quanto vale quell'intero.

    esempio:
    codice:
     
    public boolean pippo(int numeroCicli){
         if(numeroCicli>0){
              //qui dovrei creare i for annidati in base a quanto vale il parametro
              return true;
         }
         return false;
    }
    se per esempio inserisco il numero 3, dovrei fare in modo di creare tre cicli for annidati

    si può fare? se si come?
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    116
    Direi che ci va una funzione ricorsiva..
    Una cosa tipo:

    funzione cicloFor(int n) {

    if (n>0) {
    For (eccetera) {
    'codice
    n=n-1;
    cicloFor(n);
    }

    }

    }

  3. #3
    non risolvo granchè con la ricorsione.

    in poche parole dovrei creare un programma che calcola il campionamento casuale semplice (inferenza statistica) sia in modo binomiale che a blocchi.

    prendiamo per ex un array del genere: {'a', 'b', 'c', 'd' //ecc}

    se per esempio l'utente mi inserisce il valore 3, nel modo binomiale dovrei creare un numero di campioni pari alla length dell'array elevata al valore inserito, quindi:

    a a a
    a a b
    a a c
    a a d
    a b a
    a b b
    a b c
    a b d
    a c a
    a c b
    a c c
    a c d
    a d a
    a d b
    a d c
    a d d


    b a a
    b a b
    b a c
    b a d
    b b a
    b b b
    b b c
    b b d
    b c a
    b c b
    b c c
    b c d
    b d a
    b d b
    b d c
    b d d

    c a a
    c a b
    c a c
    c a d
    c b a
    c b b
    c b c
    c b d
    c c a
    c c b
    c c c
    c c d
    c d a
    c d b
    c d c
    c d d

    d a a
    d a b
    d a c
    d a d
    d b a
    d b b
    d b c
    d b d
    d c a
    d c b
    d c c
    d c d
    d d a
    d d b
    d d c
    d d d

    in quello a blocchi dovrei invece fare un numero pari di campioni pari alle combinazioni della length dell'array prese alla grandezza inserita dall'utente, quindi:

    a b c
    a b d
    a c d
    b c d

    mi scuso per la forma del messaggio, ma era giusto per far capire cosa dovrei fare
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    un consiglio: fai una funzione che faccia una volta la creazione del tuo campione, ne crea uno solo. Il problema resta poi fare questo un tot di volte. Questo tot varia in base al tuo numero, ma l'esponente (al cubo) lo sai calcolare, cosi come sai calcolare l'altro indice.
    Supponi sia index
    codice:
    private void funzione (long index){
        for (long ind = 0; ind < index; ind++){
              //funzione che crea un campione, vedi tu se passare parametri
              creaCampione(); 
        }
    }
    questo è solo un modello logico, spero ti sia di aiuto

  5. #5
    Così facendo, però, ho un problema di indici.
    Se io mi creassi un metodo per la creazione la creazione del campione avrei un problema nella gestione degli indici, in quanto dovrei trovare un modo per dirgli di prendermi all'inizio solo il valore in indice 0, poi il valore in 0 e 1 e così via.
    Creando per esempio la classe Pippo:
    codice:
    public class Pippo
    {
        private char[] lets={'a', 'b', 'c', 'd'};
        
        private void creaCampione(int gc){
            for(int i=0; i<gc; i++){
                System.out.print(lets[i] + "\t");
            }
            System.out.println("\n");
        }
        public void listaCampioni(int gc){
            for(long i=0; i<Math.pow(gc, 3); i++){
                creaCampione(gc);
            }
        }
        public static void main(String argv[]){
            new Pippo().listaCampioni(3);
        }
    }
    mi da il seguente output:

    a b c

    a b c

    a b c

    a b c

    a b c

    a b c

    a b c

    a b c

    a b c

    a b c
    //e così via
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Naruto 92
    così facendo, però, ho un problema di indici.
    Se io mi creassi un metodo per la creazione la creazione del campione avrei un problema nella gestione degli indici, in quanto dovrei trovare un modo per dirgli di prendermi all'inizio solo il valore in indice 0, poi il valore in 0 e 1 e così via.

    il mio era un prototipo, non è che il tuo metodo "creacampione()" deve avere per forza questa signature!!!

    Devi fare in modo che ti crei un campione, se hai bisogno di un indice glielo passi da fuori come parametro!!

  7. #7
    potrei anche passargli l'indice come parametro, ma dovrei sapere il momento esatto in cui passargli 0, 1, 2...
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da Naruto 92
    potrei anche passargli l'indice come parametro, ma dovrei sapere il momento esatto in cui passargli 0, 1, 2...

    quello lo devi risolvere tu, io non so come funziona il tuo algoritmo, per fare le cose in modo semplice devi pensare l'algoritmo in modo che crei da solo un campione.

    Scrivi manualmente cosa devi fare (passo per passo) e poi pensa a tradurlo. Pensa l'algoritmo e vedi di cosa hai bisogno.
    Vediamo poi di capire come passargli i vari parametri

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    faccio un'osservazione sull'analogia che c'è tra il creare la tua collezione di campioni e la rappresentazione base-x dei numeri tra 0 e il numero di elementi meno 1 (x^y -1, ovvero "x alla y meno 1") nella collezione stessa, dove x è la lunghezza del set da cui costruisci il campione tipo e y la lunghezza del campione.

    Nel tuo caso x = 4 (a, b, c, d) e y = 3 (aaa, aab eccetera sono tutte lunghe 3)

    Quindi 4 ^ 3 -1 = 64 -1 = 63 (se so ancora fare i conti).
    Adesso il "bello":

    scriviamo i numeri da 0 a 63, in rappresentazione base 4, con tutte le cifre (anche gli 0 iniziali che normalmente ometteremmo):

    0 = 000
    1 = 001
    2 = 002
    3 = 003

    4 = 010
    5 = 011

    E questo lo possiamo tradurre sostituendo alle cifre l'elemento in posizione corrispondente nel set: quindi

    0 -> a
    1 -> b
    2 -> c
    3 -> d

    ed in definitiva:

    0 = 000 -> aaa
    1 = 001 -> aab
    ...
    63 = 333 -> ddd

    Lascio a te l'implementazione (che secondo me si riduce ad un solo ciclo for a questo punto).
    Spero di non averti confuso le idee...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    questo potrebbe andare bene se usassi realmente delle lettere, ma le lettere ve le ho messe come esempio, per capire realmente il problema, ma sta di fatto che uso dei numeri.

    per ex se l'elemento in posizione 0 vale 3. dovrei fare 333.

    tieni inoltre presente che potrebbero essere raggruppamenti a 2, 5, 6, 10, 20,... e l'array potrebbe essere più lungo di 4 o più corto...
    la base quattro non servirebbe a granchè a questo punto.
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

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.