Pages: [1] 2   Go Down
Print
Author Topic: come non eccedere i limiti dell'array???  (Read 2296 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
thompson
Matricola
*
Offline Offline

Posts: 40



« on: 05-07-2010, 15:52:21 »

 testate ho un bel problemino!!! come si fa a NON eccedere i limiti dell'array frastagliato???
sareste così gentili da aiutarmi?
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 05-07-2010, 20:14:43 »

Direi che un controllo sull'indice dell'array più interno (secondo livello o colonne - in genere è j) rispetto al massimo indice accettato dalla singola riga dell'array frastagliato (in genere è mioarray [i].length, ove i in genere è l'indice dell'array più esterno -primo livello o righe-) sia quello che fa al caso tuo .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #2 on: 06-07-2010, 08:23:48 »

perdona la mia ignoranza   testate ma potresti farmi un esempio???
Per esempio con questo metodo?
Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di byte ed un array S di interi, e restitusica un boolean che indichi se esiste in S un valore pari alla somma degli elementi di una qualche colonna di A (La somma di ogni colonna deve essere calcolata una volta sola.
Non si possono usare array ausiliari. Attenzione agli elementi mancanti)

e con le righe?
Scrivere un metodo che prenda in input un array bidimensionale frastagliato S di stringhe,
e restituisca un boolean che indichi se esiste una coppia di stringhe in S l'una inversa dell'altra.

se non sono frastagliati riesco a svolgerli normalmente


Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #3 on: 06-07-2010, 09:12:48 »

Posta il codice che useresti se gli array bidimensionali non fossero frastagliati, che ti faccio vedere dove andrebbero inseriti i controlli e quali controlli .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #4 on: 06-07-2010, 09:20:35 »

Code:
/*Esercizio 1 del 20 Aprile 2010
scrivere un metodo che prenda in input un array bidimensionale frastagliato
A di byte ed un array S di interi, e restitusica un boolean che indichi se
esiste in S un valore pari alla somma degli elementi di una qualche
colonna di A (La somma di ogni colonna deve essere calcolata una volta sola.
Non si possono usare array ausiliari. Attenzione agli elementi mancanti)*/

public class Metodo1del20aprile
{
  public static boolean metodo(long[][]A,int[]S)
  {
    boolean cntr=false;
    
    for(int i=0;i<A[0].length;i++)
      {
        
        long l=0;
        for(int j=0;j<A.length;j++)
        {
          l=l+A[j][i];
        System.out.println(l);
      }
    
      for(int h=0;h<S.length;h++)
      {
        if(l==S[h]){
          cntr=true;
        }
      }
    }return cntr;
  }
    

    
public static void main(String[]args)
{
  long[][]A={{9,5,2,1},
             {4,6,8,5},
             {5,8,1,2}};
  int S[]={1,2,6,8};
  boolean cntr=metodo(A,S);
  System.out.println(cntr);
  }
}
e poi quello con le stringhe

Code:
/* Esercizio 2
Scrivere un metodo che prenda in input ua array bidimensionale frastagliato S di stringhe,
e restituisca un boolean che indichi se esiste una coppia di stringhe in S l'una inversa dell'altra.
*/
public class Met2Febbraio
{
  public static boolean metodo (String[][] S)
  {
    for (int i=0; i<S.length; i++)
      for (int j=0; j<S[i].length; j++)
      {
        String inversa="";
        for (int k=1; k<=S[i][j].length(); k++)
          inversa += S[i][j].charAt(S[i][j].length() - k);

        for (int l=i; l<S.length; l++)
          for (int m=j; m<S[l].length; m++)
            if (inversa.equals(S[l][m]))
              return true;
      }
    return false;
  }
 public static void main(String[]args)
{
  String[][]A={{"ciao","pere","fabio","ziopino"},
               {"bello","grande","ciao","pdpd"},
               {"oaic","vaivai","tundra","melone"}};
  boolean cntr=metodo(A);
  System.out.println(cntr);
            
  }
        
}

il mio dilemma sta nel fatto di non sapere come NON uscire dall'array quando bisogna scorrerli in VERTICALE
perchè ho notato che se si scorrono in ORIZZONTALE non ci sono problemi
grazie mille per la disponibilità pray yoh
« Last Edit: 06-07-2010, 09:49:25 by thompson » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
Seferex
Matricola
*
Offline Offline

Gender: Male
Posts: 34



« Reply #5 on: 06-07-2010, 14:45:08 »

Prova a dare un'occhiata agli esercizi che ho svolto nell'altro topic (il secondo esercizio)

http://forum.sdai.unict.it/index.php?topic=8700.15

Dovrebbe essere corretto e ovviamente ho fatto anche il controllo per non eccedere la dimensione dell'array
Logged
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #6 on: 06-07-2010, 15:09:43 »

grazie sefefex ma ho provato il tuo esercizio completo di main e purtroppo esce anche, però può essere che sbagli io
 ecco il main relativo al tuo esercizio
Code:
public static void main(String[]args)
  {
    String[][]A={{"bcd","abc","cde"},
                {"abc","dsf","dfd"},
                {"cde","abc"}};
    boolean cnt=metodo2giugno(A);
    System.out.println(cnt);
  }
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
Seferex
Matricola
*
Offline Offline

Gender: Male
Posts: 34



« Reply #7 on: 06-07-2010, 15:12:50 »

Scusa non ho capito, non funziona con il metodo che ho fatto io?
Logged
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #8 on: 06-07-2010, 15:15:11 »

esce anch'esso dall'array! però, ti ripeto che può essere che sbagli io
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #9 on: 06-07-2010, 15:19:25 »

Potrò rispondere in tarda serata. Ora sono un po' di fretta. Perdono pray!
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Seferex
Matricola
*
Offline Offline

Gender: Male
Posts: 34



« Reply #10 on: 06-07-2010, 16:15:58 »

Ho provato a fare un esercizio (ora faccio l'altro)
Cosi funziona?

Code:
/*Esercizio 1 del 20 Aprile 2010
scrivere un metodo che prenda in input un array bidimensionale frastagliato
A di byte ed un array S di interi, e restitusica un boolean che indichi se
esiste in S un valore pari alla somma degli elementi di una qualche
colonna di A (La somma di ogni colonna deve essere calcolata una volta sola.
Non si possono usare array ausiliari. Attenzione agli elementi mancanti)*/

class esercizio
{
public boolean metodo (byte [][]A, int []S)
{
int i,j,k,z;
boolean trovato=false;
for (i=0;i<S.length;i++)
{
byte somma =0;
trovato=false;
for (j=0;j<A.length;j++)
for (k=0;k<A[j].length;k++)
if(k<A[j].length)
for(z=j+1;z<A.length;z++)
{
somma+=A[j][k]+A[z][k];
if(S[i]==somma)
trovato=true;
}
}

if(trovato==true)
return true;
else return false;
}
}
Logged
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #11 on: 06-07-2010, 16:30:00 »

  ancora no, mi sta venendo da piangere...
non capisco come si fa
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
Seferex
Matricola
*
Offline Offline

Gender: Male
Posts: 34



« Reply #12 on: 06-07-2010, 16:49:31 »

ma è strano...
Questo if che ho messo:

Code:
if(k<A[j].length)

dovrebbe evitare che vada fuori O.o
Logged
thompson
Matricola
*
Offline Offline

Posts: 40



« Reply #13 on: 06-07-2010, 17:04:50 »

Code:
class esercizio
{
public static boolean metodo (byte [][]A, int []S)
{
int i,j,k,z;
boolean trovato=false;
for (i=0;i<S.length;i++)
{
byte somma =0;
trovato=false;
for (j=0;j<A.length;j++)
for (k=0;k<A[j].length;k++)
if(k<A[j].length)
for(z=j+1;z<A.length;z++)
{
somma+=A[j][k]+A[z][k];
if(S[i]==somma)
trovato=true;
}
}

if(trovato==true)
return true;
else return false;
}
public static void main(String[]args)
{
  byte[][]A={{9,5,2,3},
             {1,1,1},
             {5,8,1,2}};
  int S[]={1,2,6,8};
  boolean cntr=metodo(A,S);
  System.out.println(cntr);
  }
}
prova tu stesso vedi se va, da me niente, ma può essere che sbaglio qualcosa
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione.
Seferex
Matricola
*
Offline Offline

Gender: Male
Posts: 34



« Reply #14 on: 06-07-2010, 17:09:36 »

FORSE ho risolto

nell'if prova a mettere

Code:
if(k<A[j].length-1)
Logged
Pages: [1] 2   Go Up
Print
Jump to: