Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Confronto tra elementi di una matrice

    Salve a tutti, vi spiego il problema: ho una matrice 8x4, in cui sono memorizzati dei valori. Devo confrontare i valori inseriti nelle colonne. Il confronto va fatto tra : OVEST ed EST, e tra NORD e SUD seguendo questo schema:

    NORD SUD EST OVEST
    1
    2
    3
    4
    ....
    8

    Ho scelto di organizzarmi in queso modo, pensate che vada bene?


    class MatriceFunzione
    {
    public static void main(String[] args)
    {
    int mat[][] = new int[8][4];
    int i,j;

    // Quadrati colorati a cui assegno i rispettivi colori

    // ----- Primo Tiles ----

    mat[0][0]=0;
    mat[0][1]=0;
    mat[0][2]=2;
    mat[0][3]=3;

    // ----- Secondo Tiles ----

    mat[1][0]=1;
    mat[1][1]=1;
    mat[1][2]=2;
    mat[1][3]=3;
    // ----- Terzo Tiles -----

    mat[2][0]=2;
    mat[2][1]=2;
    mat[2][2]=2;
    mat[2][3]=1;

    // -----Quarto Tiles----

    mat[3][0]=0;
    mat[3][1]=1;
    mat[3][2]=4;
    mat[3][3]=4;

    // ----- Quinto Tiles ----

    mat[4][0]=1;
    mat[4][1]=2;
    mat[4][2]=3;
    mat[4][3]=2;

    // ----- Sesto Tiles ----

    mat[5][0]=1;
    mat[5][1]=2;
    mat[5][2]=1;
    mat[5][3]=0;

    // ----- Settimo Tiles -----

    mat[6][0]=1;
    mat[6][1]=2;
    mat[6][2]=3;
    mat[6][3]=4;

    // ----- Ottavo Tiles----

    mat[7][0]=1;
    mat[7][1]=2;
    mat[7][2]=3;
    mat[7][3]=4;

    /*
    for(j=0; j<=3; j++)
    {
    if (j==1)
    System.out.println("NORD");
    }
    if (j==2)
    System.out.println("SUD");
    }*/
    }

    Aiutatemi con il ciclo for..!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non si capisce che genere di confronto devi fare: se devi verificare che tutti gli elementi di NORD siano uguali agli elementi di SUD (e/o idem per EST e OVEST),
    codice:
    boolean flag = true;
    for (int i = 0; i < mat.length && flag; i++) {
      flag = (mat[i][0] == mat[i][1]);
    }
    System.out.println("NORD E SUD "+(flag ? "" : "NON ")+"SONO UGUALI");
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Grazie tante, ma...

    Grazie per avermi aiutato, anche se sono stato abbastanza vago nella spiegazione.
    Il confronto in questo modo andrebbe bene, ma il problema e che devo estenderlo per l'intera matrice, quindi potrebbe essermi utile un array bidimensionale, in modo da confrontarli tutti..
    Il mio problema e che non riesco a caricare nell'array i punti di NORD, SUD, EST, OVEST, in modo da confrontarli.
    Ho pensato, ad esempio:

    int n= this.getN();
    int m = this.getM();
    int[][] copia = new int[n][m];
    for(int i = 0; i < n; i++)
    {
    for(int j = 0; j < m; j++)
    {
    cm[i][j] = this.getValore(i, j);
    }
    }
    return copia;

    Ma mi ritorna una serie di errori, dovuti principalmente a getN() e getM().
    Cosa mi consiglieresti?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    adesso mi hai confuso ancora di più. Se non ricordo male, tu eri il tizio con il problema di come affiancare le immagini in modo che due bordi combaciassero, giusto? Ora il problema che hai tu è che devi confrontare gli elementi di due array (al di là del fatto che hai messo tutto in matrice-array bidimensionale), giusto? Mi confonde il "non riesco a caricare i punti di NORD, SUD, EST, OVEST" in quanto la soluzione che ti ho postato fa "implicitamente" il caricamento di quei punti. Per intenderci, se tu volessi scrivere un metodo che ritorni un array (colonna) dalla matrice, potresti fare

    codice:
    private static final int NORD = 0;
    private static final int SUD = 1;
    private static final int EST = 2;
    private static final int OVEST = 3;
    
    private int[] getColumn(int ord) {
      int[] temp = new int[mat.length];
      for (int i = 0; i < temp.length; i++) {
        temp[i] = mat[i][ord];
      }
      return temp;
    }
    
    public int[] getN() {
      return this.getColumn(NORD);
    }
    
    //idem per SUD,EST,OVEST
    A quel punto hai, dopo ogni chiamata l'array con la colonna specifica, con cui potrai andare a fare i confronti che vuoi. Altrimenti, illuminami che ho la testa altrove (e nel buio).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    HAI RAGIONE

    Si sono proprio io...
    Praticamente stavo lavorando con il BufferedImage per gestire i bordi delle immagini e affiancarle di conseguenza se i bordi erano uguali, ma tutto questo mi dava in uscita un unica e sola immagine, perchè la seguenza era da me impostata.
    Invece devo creare un modo dinamico con varie sequenze di quadrati. Cioè scelto il primo quadrato random gli altri vanno di conseguenza inseriti automaticamente.
    Fatto questo dovrò copiare dei frammenti di immagini in ogni quadrato, in modo da ottenere diverse immagini.....con la seguenza di spezzoni diversi.
    Capisci adesso perchè non riesco a spiegarmi bene, e un casino incredibile........AIUTO!!!!!!!!
    L'idea è nata da un'ingegnere che si chiama Wang, e i quadrati con i bordi colorati sono detti Tiles.
    Grazie di tutto comunque...spero di poter contare anche su di te....
    Buona giornata!!

  6. #6
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103
    Spero di non aver interpretato male il tuo problema:

    prova così:

    System.out.println("NORD-SUD");

    int i=0;
    int k=i+1;

    for(i<7;i++){
    for(int j=0;j<2;j++){
    // fai il confronto che devi fare...io faccio il maggiore...
    if(m[i][j]>m[k][j]) .....
    }
    }

    System.out.println("EST-OVEST");

    int g=0;
    int k1=g+1;


    for(g<7;i++){
    for(int j=2;j<4;j++){
    // fai il confronto che devi fare...io faccio il maggiore...
    if(m[g][j]>m[k1][j]) .....
    }
    }
    M|$T3R®

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    32

    Grazie

    Grazie tante...
    Ho inserito anche altri due for per il confronto che dovevo fare...e il risultato è giustissimo.

  8. #8
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103
    Prego non c'è di chè....

    ciao
    M|$T3R®

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.