Autore Topic: Eliminare triplicati da matrice  (Letto 805 volte)

Offline ixol

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy ace
  • Sistema operativo:
    windows 7
Eliminare triplicati da matrice
« il: 03 Ottobre 2014, 19:11:06 CEST »
0
Ciao a tutti ho questo codice:
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.memoryactivity);
               
                avvia=(Button) findViewById(R.id.avvia);
                prova=(TextView) findViewById(R.id.prova);
               
                avvia.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String stringa="";
                                int row=2;
                                int column=3;
                                int x=row*column/2;
                                int tabella[][] = new int[row][column];
                                int num;
                                int quanti[] = new int[x];
                                boolean completo[] = new boolean[x];
                               
                                for(int i=0;i<=row-1;i++){
                                        for(int j=0;j<=column-1;j++){
                                                num=(int)(Math.random()*x);
                                                if(completo[num]==false){
                                                        tabella[i][j]=num;
                                                        quanti[num]++;
                                                }

                                                int x_copia=x-1;

                                                while(x_copia>=0){
                                                        if(quanti[x_copia]>=2){
                                                                completo[x_copia]=true;
                                                        }
                                                        x_copia--;
                                                }
                                                               
                                                                                                                                                               
                                                }
                                        stringa = stringa + "\n";
                                        }
                                stringa = stringa + completo[2] + " " + completo[1] + " " + completo[0];
                               
                                                       

                                prova.setText("L'ordine è:\n" +stringa+".");
                        }
                });
               
                }

che prende in modo casuale dei valori da 0 a 2 e li inserisce nella matrice. Per ogni valore devono esserci 2 copie, ne di meno ne di più. Ho provato a scrivere il codice all'interno del ciclo for, ma è sbagliato dato che nella stampa lo zero a volte mi esce in 3/4 copie e provando a stampare i completo[0] completo[1] e completo [2] mi da true o false quasi a caso... non riesco a capire come fare...
sto studiando java in modo autonomo e questa è un'idea di un professore quindi volevo vedere se riuscivo a crearla senza aver finito il corso, ma è spuntato fuori questo problema

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Eliminare triplicati da matrice
« Risposta #1 il: 03 Ottobre 2014, 19:18:26 CEST »
0
Sposto il thread perchè non è una domanda che ha a che fare con android.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline ixol

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    galaxy ace
  • Sistema operativo:
    windows 7
Re:Eliminare triplicati da matrice
« Risposta #2 il: 03 Ottobre 2014, 19:21:17 CEST »
0
EDIT: provando con un ciclo dentro al for si crea solo un loop, non riesco a trovare soluzione :S

Post unito: 04 Ottobre 2014, 13:26:13 CEST
ok ho risolto con una soluzione un pò forzata ma efficace, posto il codice se servisse a qualcuno in futuro:
Codice (Java): [Seleziona]
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.memoryactivity);
               
                avvia=(Button) findViewById(R.id.avvia);
                prova=(TextView) findViewById(R.id.prova);
               
                avvia.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                String stringa="";
                                int row=4;
                                int column=5;
                                int x=row*column/2;
                                int tabella[][] = new int[row][column];
                                int num;
                                int quanti[] = new int[x];
                               
                                for(int i=0;i<=row-1;i++){
                                        for(int j=0;j<=column-1;j++){
                                               
                                                int x_copia=x;
                                                while(x_copia>0){
                                                        num=(int)(Math.random()*x);
                                                        if(quanti[num]<2){
                                                                tabella[i][j]=num;
                                                                quanti[num]++;
                                                                x_copia=0;
                                                        }
                                                }
                                        stringa = stringa + "[" + tabella[i][j] + "]";                                                                         
                                        }
                                        stringa = stringa + "\n";
                                        }

                                prova.setText("L'ordine è:\n" +stringa);
                        }
                });
               
                }
« Ultima modifica: 04 Ottobre 2014, 13:26:14 CEST da ixol, Reason: Merged DoublePost »