Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Algoritmo per creazione matrici

    ciao a tutti ragazzi!
    spero qualcuno mi dia una mano urgente (per la mia tesi).
    Smanettoni di java, programmatori... AIUTO
    Avrai bisogno di progettare e implementare un algoritmo che mi risolva questo:
    ho bisogno di avere a disposizione tutte le matrici nxm possibili tale ogni item è = 0|1, ma ad ogni riga è permesso solo un 1. tutte queste possibili matrici sono k=m^n (esempio: n=3, m=2 ->k=8, 8 possibili matrici). so anche che le possibili righe lunghe m con questa caratteristica sono essattamente m (seguo l'esempio: 1° riga = 10, 2° riga=01)

    La mia domanda è: come faccio a creare tutte queste k matrici e poter una ad una salvarla in una o tante variabili?
    Posso creare in java variabili dinamicamente con un ciclo for per esempio?

    Ho avuto questa idea: creare una mega matrice X[i][j][k] dove k indica il numero della matrice, esempio X[][][1]= 10 (seguo esempio n=3,m=2)
    10
    10
    e un'altra matrice sarebbe X[][][2] = 10
    10
    01
    e così via fino ad avere le k matrici diverse delle combinazioni 10 e 01
    Si capisce qualcosa?
    Vorrei poter creare questa mega matrice X! Funziona questa idea secondo voi? Sicuramente avrò bisogno di almeno 3 cicli for; ma non sono come implementarli e come fare con le operazioni tra gli array.

    Forza ragazzi.. vi prego!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Mai pensato di utilizzare delle strutture dati dinamiche, come ArrayList o Vector?

    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

  3. #3
    ciao leleFT,
    scusa la mia ignoranza ma non hai sentito parlare di quelle strutture dinamiche.
    nel libro che uso (evidentemente per i primi passi) non ci sta nessun riferimento.
    Come posso usarle. dato un numero k variabile, posso crear dinamicamente k strutture?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Prova a consultare la documentazione ufficiale di Java.
    In particolare il package java.util.

    Utilizzando quelle strutture dati non hai bisogno di sapere a priori quanti oggetti dovrai immagazzinare: ogni volta che ti serve immagazzinare un nuovo oggetto, semplicemente lo aggiungi alla collezione, che automaticamente si adatta nelle dimensioni per poterlo contenere.



    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

  5. #5

    struttura array di array

    ciao ragazzi/e,
    riprendo questo problemino che vi ho lasciato la scorsa settimana. Vi ricordate la struttura X[][][] che vorrei riempire con matrici nxm per k=m^n volte?
    Vi posto la classe java che fin'ora utilizzo e nei commenti vi segnalo i miei dubbi e problemi.

    //Classe MatriciX con esempio n=3 ed m=2
    import java.io.BufferedReader;
    import java.io.InputStreamReader;

    public class MatriciX {
    public int n;
    public int m;
    int k;
    int x[][];
    int X[][][];

    public MatriciX() {
    System.out.println("Inserisci dimensione delle Matrici X:");
    System.out.println("Numero di righe:");
    n = inputInt();
    System.out.println("Numero delle colonne");
    m = inputInt();
    k = potenzaMN(m,n);

    /* x[][] è una matrice con i vettori lunghi m che contengono essattamente un 1; equivale ad una matrice Identita mxm */
    int x[][] = createMatriceX(m);

    System.out.println("matrice vettori base");
    for (int i = 0; i < x.length; i++) {
    for(int j = 0; j < x.length; j++)
    System.out.print(x[i][j]);
    System.out.println("");
    }


    /* X[][][] è una struttura dati tale che contiene k matrici nxm dove ogni riga delle matrici è una riga della matrice x[][] */

    /* inizializzo le k matrici nxm tutte = 0 */
    int [][][] X = new int [k][n][m];
    for (int l = 0; l < k; l++) {
    for (int i = 0; i < n; i++){
    for (int j = 0; j < m; j++){

    X[l][i][j] = 0;

    }
    }
    }
    //qui mi stampo le caratteristiche di X
    System.out.println("k matrici nxm base:");
    System.out.println("numero di matrici: "+X.length);
    System.out.println("ognuna con righe: "+X[0].length);
    System.out.println("ognuna con colonne: "+X[0][0].length);

    /* a questo punto vorrei scrivere un metodo o delle istruzioni che mi riempiano la struttura X con tutte le possibili combinazioni delle righe di x. In teoria tutte le k matrici nxm sono il risultato del prodotto cartesiano di n volte della matrice x per se stessa.*/

    /* X[0] = la prima matrice nxm, X[0][0] è la prima riga della prima matrice nxm e così via */

    /*dopo quello che vorrei implementare il risultato dovrebbe essere questo: */
    X[0][0] = x[0];
    X[0][1] = x[0];
    X[0][2]= x[0];

    X[1][0] = x[0];
    X[1][1] = x[0];
    X[1][2]= x[1];

    X[2][0] = x[0];
    X[2][1] = x[1];
    X[2][2]= x[0];

    X[3][0] = x[0];
    X[3][1] = x[1];
    X[3][2]= x[1];

    /*e così via fino al ultimo possibile risultato:

    X[7][0] = x[1];
    X[7][1] = x[1];
    X[7][2]= x[1]; */


    System.out.println("prima matrice,prima riga: "+X[0][0]);



    //costruisco le matrici X
    }
    int inputInt(){
    try {
    BufferedReader flussoInput = new BufferedReader
    (new InputStreamReader
    (System.in));
    String stringa = flussoInput.readLine();
    return (Integer.valueOf(stringa).intValue());

    }
    catch (Exception e ){
    System.out.println("Errore: "+e+" in input");
    System.exit(0);
    return (-1);
    }

    }

    int potenzaMN(int b, int p){
    int a = 1;
    for (int i = 1; i < p+1; i++){
    a = a * b;
    }

    return a;
    }

    int[][] createMatriceX(int len){ //Equivale ad una matrice I
    int[][] matrice = new int[len][len];

    for (int i = 0; i < len; i++) {
    for (int j = 0; j < len; j++)
    matrice[i][j] = 0;
    }

    for (int i = 0; i < len; i++)
    matrice[i][i] = 1;

    return matrice;
    }

    public static void main(String args[]){
    new MatriciX();

    }


    }

    ragazzi, pensate che abbia impostato bene il problema e si possa risolvere con le strutture dati che ho creato?
    Avevo anche pensato grazie ai vostri suggerimenti di usare i Vector, ma non riesco a lavorare perchè ogni volta che ad un elemento X[][] assegno un vector.elementAt(i) mi da errore perchè non c'è corrispondenza nell'assegnamento.
    Pensate così posso risolvere qualcosa?
    grazie!!!

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.