Pages: 1 2 [3]   Go Down
Print
Author Topic: Dubbio su array frastagliati  (Read 5969 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #30 on: 30-01-2011, 09:59:45 »

Ok c'ho riprovato speriamo che questa volta vada meglio...Ho seguito i consigli  

Code:
/*Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata A di stringhe ed un byte a
 e restituisca una matrice A1 copia di A in cui in ogni stringa della colonna a-esima
 ogni occorrenza del carattere ‘g’ è sostituita da un carattere ‘*’.*/
 
 public String metodo (String [][] A , byte a)
{
int max=A[0].length;
int i=0,j=0,k=0;

for(i=0;i<A.length;i++)
if(A[i].length>max)
max=A[i].length;

//creazione seconda dimensione
String [][] A1 = new String [A.length][];

for(i=0;i<A.length;i++)
{
A1[i]=new String [A[i].length];
for(j=0;j<A[i].length;j++)
A1[i][j]=A[i][j];
}

for(j=0;j<max;j++)
for(i=0;i<A.length;i++)
if(j==a-1)
{
A1[i][j]="";
for(k=0;k<A[i][j].length();k++)
{
A1[i][j]+=A[i][j].charAt(k);
if(A1[i][j].charAt(k)=='g')
A1[i][j].charAt(k) = '*';
}
}

return A1;
}
« Last Edit: 30-01-2011, 10:06:50 by salvopuglisi » Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #31 on: 30-01-2011, 11:08:00 »

diciamo che la procedura è sostanzialmente corretta. purtroppo c'è un però xD faccio schifo lo so  ok
allora secondo me è una perdita di tempo riempire prima tutto l'array copia e poi andare a modificare la colonna a-esima cn un altro ciclo. diciamo che tu fai continuamente una copia ma appena l'indice j è uguale a (e non uguale ad a-1 che è sbagliato come hai scritto) allora compi l'operazione della richiesta.quindi prima cmq vorrei apportare delle piccole modifiche al tuo: superata la serie di cicli dove dici creazione seconda dimensione, inizia di nuovo la j. bene questo è inutile. puoi fare solo quello delle righe i, tanto poi devi lavorare solo sulla colonna a, ovviamente facendo attenzione col solito if(a<A[i ].length) per saltare l'elemento mancante. j in ogni caso doveva essere proprio uguale ad a e non ad a-1, poi per il resto è "corretto".
per cui io lo farei in automatico così:
Code:
public String[][] metodo(String[][] A, byte a)
{
String[][] A1=new [A.length][];
for(int i=0;i<A.length;i++)
{
A1[i]=new String[A[i].length];
for(int j=0;j<A[i].length;j++)
{
A1[i][j]="";
if(j==a)
{
for(int k=0;k<A[i][j].length();k++)
if(A[i][j].charAt(k)=='g')
A1[i][j]+='*';
else
A1[i][j]+=A[i][j].charAt(k);
}
else
A1[i][j]=A[i][j];
}
}
 return A1;
}
Logged

"Che la Forza sia con Te"
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #32 on: 30-01-2011, 11:43:56 »

ok bene !! grazie per i consigli preziosi !!! 
Logged
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #33 on: 31-01-2011, 17:36:06 »

Scusatemi ma vorrei capire una cosa mi hanno detto ke quando si ha a che fare con array frastagliati si deve mettere la condizione if(j<A[i ].length)....ma vorrei capire dove e quando si mette...GRAZIE !!!
« Last Edit: 31-01-2011, 17:40:56 by salvopuglisi » Logged
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #34 on: 31-01-2011, 17:42:57 »

Scusatemi ma vorrei capire una cosa mi hanno detto ke quando si ha a che fare con array frastagliati si deve mettere la condizione if(j<A[i ].length)....ma vorrei capire dove e quando si mette...GRAZIE !!!
Lo si usa per evitare di uscire fuori dall' matrice frastagliata ed evitare l' errore IndexOutOfBoundsException ecc ecc di solito lo usi in base a quello che devi fare... tutto quà  pc
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #35 on: 31-01-2011, 18:14:10 »

Capito...Ma vorrei capire se quello che dico io è giusto:

La condizione if(j<A[i ].length) si usa solo nel caso in cui si inizia con il ciclo j e quindi poi va messo dentro i 2 for ?

es:

for(j=0;j<max;j++)
     for(i=0;i<A.length;i++)
             if( j<A[i ].length)       ------->  Huh??
Logged
Stardust
Apprendista Forumista
**
Offline Offline

Posts: 450


L'amore è attesa di una gioia che qnd arrva annoia


« Reply #36 on: 31-01-2011, 18:21:56 »

in qst caso così è scritto bene 
Logged

L'acqua ni vagna...u ventu n'asciuca e... u RUM e PERA n'aiutaaaa...
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #37 on: 31-01-2011, 18:24:17 »

Invece così anche se si ha a che fare con array frastagliati , nn ha senso quello che sto per scrivere giusto?


     for(i=0;i<A.length;i++)
         for(j=0;j<A[i ].length;j++)
                   if( j<A[i ].length)       ------->  ?
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #38 on: 31-01-2011, 19:00:23 »

certo che è inutile così, xkè tramite i due cicli sei sicuro di essere all'interno dei limiti, quindi lavori sempre con elementi esistenti
Logged

"Che la Forza sia con Te"
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #39 on: 31-01-2011, 19:47:41 »

ok apposto !! Grazie
Logged
Pages: 1 2 [3]   Go Up
Print
Jump to: