Pages: 1 [2]   Go Down
Print
Author Topic: array frastagliati  (Read 2106 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #15 on: 21-01-2012, 10:28:33 »

Posto l'esercizio corretto di Daréios89

Code:
public class Frastagliati2
{
public static void main(String [] args)
{
String [][] S={{"ciao","mamma"},
                       {"arricciao","mam","niente"},
       {"aof"}};
       
      System.out.println(metodo(S,"ao"));
       
}


public static boolean metodo(String[][] S, String y){

// Calcolo colonna max
int max = 0;
for (int i=0; i<S.length; i++)
if (S[i].length > max)
max = S[i].length;



boolean trovata = false;
for (int c=0; c< max; c++){ // colonne

if (trovata) // boolean modificato da questi for: se resta true la stringa esiste in tutta la colonna
return true;

trovata = true;
for (int r=0; r< S.length; r++) // righe
if (c < S[r].length) // se la colonna c esiste nella riga r...
if (S[r][c].indexOf(y) == -1){ // se la stringa NON contiene la sottostringa y imposto a false il boolean e stoppo la ricerca su quella colonna
trovata = false;
break;
}
}
return trovata;
}
}

Nell'altro non ho capito cosa si deve fare... boh
Logged

Diventa ciò che sei nato per essere
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #16 on: 21-01-2012, 10:39:14 »

Grazie Crasher, ci darò un' occhiata 

Nell' altro bisogna eseguire la somma degli elementi contenuti in una specifica colonna.
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #17 on: 21-01-2012, 10:46:53 »

Code:
public class SommaColonne
{
public static void main(String [] args)
{
String [][] S={{"ciao","mamma"},
                      {"arricciao","mam","niente"},
      {"ao"}};
 
System.out.println(metodo(S,1));
}

public static String metodo(String[][] S, int c){

String a = "";
for (int r=0; r< S.length; r++) // righe
if (c < S[r].length)
a += S[r][c];

return a;
}
}
« Last Edit: 21-01-2012, 10:56:28 by Crasher » Logged

Diventa ciò che sei nato per essere
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #18 on: 21-01-2012, 13:17:09 »

Ah....e quindi il mio contiene delle imperfezioni?
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #19 on: 21-01-2012, 14:41:20 »

Ah....e quindi il mio contiene delle imperfezioni?
Non ci fai caso che fai un for inutilissimo?
A che ti serve il for per scorrere le colonne se devi controllare solo la colonna c?
Il programma alla fine è corretto (con la sola differenza che tu identifichi la prima colonna con 1, mentre il mio parte da 0).
« Last Edit: 21-01-2012, 14:42:53 by Crasher » Logged

Diventa ciò che sei nato per essere
Luca_Comis
Matricola
*
Offline Offline

Gender: Male
Posts: 28


« Reply #20 on: 21-01-2012, 17:13:04 »

A quanto ho capito quindi l'array frastagliato nel for non riesce a trovare da solo la dimensione ogni volta, ma la dobbiamo dare noi controllando se esiste o no l'elemento dell'array.

Quindi per questo mi andava out of bounds, almeno credo..

Traducendo il mio problema in codice, il punto cruciale dovrebbe essere questo:
Code:
if (c < S[r].length)

cioè se l'indice della colonna corrente è minore della dimensione del "sottoarray" allora l'elemento esiste.

Credo proprio di aver capito 

Ringrazio Daréios89 e Crasher per il supporto didattico pray
« Last Edit: 21-01-2012, 19:04:21 by Luca_Comis » Logged
mattia.loscalzo0
Matricola
*
Offline Offline

Posts: 46


« Reply #21 on: 31-01-2012, 19:23:56 »

io l'ho fatto cosi:

public static boolean metodo (String A[][],String str) {
   
   int cmax=0;
   
   for (int r=0;r<A.length;r++) {
      
      if (A[r].length>cmax)
         cmax=A[r].length;
      
   }
   
   for (int c=0; c<cmax;c++) {
      
      int count=0; int colonna=0;
      
      for (int r=0; r<A.length;r++) {
         
         if(A[r].length>c) {
            
            for (int i=0; i<A[r][c].length();i++) {
               
               for (int x=i+1; x<=A[r][c].length(); x++) {
                  
                  if (str.equals(A[r][c].substring(i,x))) {
                     
                     count++;
                     x=A[r][c].length();
                     i=A[r][c].length();
                  }
                  if (count==(A.length-colonna)) {
                     
                     return true;
                  }
               }
            }
         }
         else { colonna++;
         }
      }
   }
   return false;
}
}
Logged
Pages: 1 [2]   Go Up
Print
Jump to: