Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Gam on 21-01-2009, 15:01:31



Title: Matrice bidimensionale di stringhe
Post by: Gam on 21-01-2009, 15:01:31
Ragazzi ciao, volevo chiedervi se c'è differenza tra un " ARRAY FRASTAGLIATO DI STRINGHE " e " UNA MATRICE BIDIMENSIONALE FRASTAGLIATA DI STIRNGHE ".

Il mio dubbio consiste nel fatto di considerare per matrice bidimensionale frastagliata di stringhe, una matrice bidimensionale normalissima che per essere però frastagliata abbia le stringhe vuote.
Es.:
Code:
String A[][]= { {"casa","chiesa","",""},
                                  {"casa","chiesa","mare",""},
                                  {"casa","chiesa","montagna","letto"},
                                  {"casa","chiesa","",""} };
E' giusto in questo modo oppure devo considerarla come un normale array frastagliato?
Grazie


Title: Re:Matrice bidimensionale di stringhe
Post by: Aigor on 21-01-2009, 15:09:54
Quella creata da te non è una matrice bidimensionale frastagliata di stringhe ma una matrice quadrata di stringhe, alcune delle quali vuote !!
Una matrice bidimensionale frastagliata si presenta così :

Code:
String A= { {"questa", "è"},
                   {"una","matrice","bidimensionale"},
                   {"frastagliata"}};
Dove il numero di colonne per righe non è sempre uguale.
Per quanto riguarda l'array frastagliato non credo che esista una cosa del genere, anche perchè in cosa potrebbe essere frastagliato un semplice array ?  .penso


Title: Re:Matrice bidimensionale di stringhe
Post by: Fr3d3R!K on 21-01-2009, 15:18:31
esattamente come dice Aigor, inoltre se vedi i testi degli esami ci sono esempi di matrici frastagliate, ad esempio:
[ (“abc”, “dewfg”, …), (…), …, (…, “xyfw”, …), …] è una matrice frastagliata.
L'array frastagliato invece penso esista, ed un esempio può essere la "singola riga" della matrice sopra (essendo la matrice un array di array la singola riga è un array anch'esso frastagliato). Mi correggano se sbaglio.


Title: Re:Matrice bidimensionale di stringhe
Post by: Aigor on 21-01-2009, 15:23:48
Ma un array di array di stringhe con una sola riga, ovvero un solo array non è altro che un array, quindi perchè chiamarlo array frastagliato ? E soprattutto se non c'è la discordanza di lunghezza tra le varie righe in cosa è frastagliato ? Forse solo nel gioco di parole assurdo che ho scritto  .rido


Title: Re:Matrice bidimensionale di stringhe
Post by: hax on 21-01-2009, 15:58:08
per array frastagliato credo sia sottinteso bidimensionale, quindi se è un array bidimensionale è una matrice.


Title: Re:Matrice bidimensionale di stringhe
Post by: Fr3d3R!K on 21-01-2009, 16:15:57
effettivamente ora che ci penso ho detto una stupidaggine, un array non ha nulla in cui essere frastagliato.
P.S. hai inventato un nuovo sciogli-lingua però!!! .wink .rido


Title: Re:Matrice bidimensionale di stringhe
Post by: MisteroLupo on 21-01-2009, 16:27:55
per array frastagliato credo sia sottinteso bidimensionale, quindi se è un array bidimensionale è una matrice.
Se è un array bidimensionale non è necessariamente una matrice, le matrici frastagliate non esistono! :nono


Title: Re:Matrice bidimensionale di stringhe
Post by: hax on 21-01-2009, 17:03:25
allora perchè esistono esercizi come questo?:
Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S......


Title: Re:Matrice bidimensionale di stringhe
Post by: MisteroLupo on 21-01-2009, 17:09:43
Un errore IMHO.

Da wikipedia (http://it.wikipedia.org/wiki/Matrice):
Quote
In matematica, una matrice è uno schieramento rettangolare di oggetti;[...]


Title: Re:Matrice bidimensionale di stringhe
Post by: hax on 21-01-2009, 17:42:11
avendo incontrato più volte in vari esercizi la scritta "matrice frastagliata" credevo che array bidimensionale fosse equivalente...  :boh


Title: Re:Matrice bidimensionale di stringhe
Post by: Aigor on 21-01-2009, 18:09:44
Un errore IMHO.

Da wikipedia (http://it.wikipedia.org/wiki/Matrice):
Quote
In matematica, una matrice è uno schieramento rettangolare di oggetti;[...]

 .huh Perdonami ma allora le matrici quadrate cosa sono, puro passatempo ??
Non so chi abbia scritto quella roba su wiki ma è decisamente errata.

Dagli appunti del Prof. Quattrocchi :
Code:
Definizione 7.3 Siano m e n due numeri naturali. Una matrice A di tipo mxn su R è
una tabella di numeri reali
A =
            a11 a12 ... a1n
            a21 a22 ... a2n
            ........................
           am1 am2 .. amn


dove aij appartiene a R per i = 1; 2;... ;m e j = 1; 2;..... ; n. Scriveremo anche
A = (aij) ; i = 1; 2; ..... ; m; j = 1; 2; :.... ; n
Indicheremo con il simbolo M(m; n;R) l'insieme delle matrici di tipo mxn su R. [...]
Se m = n, allora la matrice A si dice quadrata di ordine n; in tal caso scriveremo M(n;R)
invece di M(m; n;R).



Title: Re:Matrice bidimensionale di stringhe
Post by: carmelo_ct on 21-01-2009, 18:38:12
ragazzi, sn in crisi. Allora, mi spiegate bene la differenza tra array di array, matrici, array frastagliati, array bidimensionali frastagliati, matrici frastagliate ematrici bidimensionali frastagliati?

Scusate ma nn c'ho capito nulla, in quanto nn seguo le lezioni. Poi, per ogni tipo di argomento che vi ho richiesto, potete scrivermi un ciclo diciamo di "defaul" che mi faccia scandire bene le posizioni? grazie mille! :-(


Title: Re:Matrice bidimensionale di stringhe
Post by: Vivynz on 21-01-2009, 20:45:33
allora scusatemi se non sono impazzita un array può essere ad una dimensione o a più dimensioni....nel caso dell'array bidimensionale i modi per denominarlo sono diversi...array di array,matrice...è la stessa cosa...quando si parla di array frastagliati,anche se non specificato, è inteso che siano bidimensionali..infatti un array ad una dimensione non può essere frastagliato visto che è come se avesse una sola riga..!!!!
cmq che argomenti hai chiesto??


Title: Re:Matrice bidimensionale di stringhe
Post by: Blonic on 21-01-2009, 21:10:28
Sì, tutto quello che dice Vyvinz è corretto, apparte il fatto che secondo me è più corretto dire "array bidimensionale non frastagliato" rispetto a "Matrice", in quanto mentre il primo modo per chiamarlo rispecchia una terminologia da programmatore, il secondo è un termine della matematica discreta.

Cosa intendi per "scandire" tutte le posizioni? Forse ti serve un ciclo per assegnare ad ogni locazione un valore? (Tradotto in terra-terra: Vuoi riempire un array?)

Se è come ho capito io ti basta un semplice for di questo tipo:
Code:
import.javax.swing.*                     //Questo lo metti prima ancora di dichiarare la classe

//Quest'altro all'interno di un metodo
for(int i=0; i<array.length; i++)
   array[i] = Integer.parseInt(JOptionPane.showInputDialog("Inserisci l'elemento " + i));

Con quelle 3 righe riempi un vettore "array" di Int con valori personalizzati.


Title: Re:Matrice bidimensionale di stringhe
Post by: MisteroLupo on 21-01-2009, 21:11:18
Dagli appunti del Prof. Quattrocchi :
[...]
Appunto, n è uguale per tutte le righe quindi sono tutte della stessa lunghezza. :-OK


Title: Re:Matrice bidimensionale di stringhe
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 22-01-2009, 00:51:00
Un errore IMHO.

Da wikipedia (http://it.wikipedia.org/wiki/Matrice):
Quote
In matematica, una matrice è uno schieramento rettangolare di oggetti;[...]

 .huh Perdonami ma allora le matrici quadrate cosa sono, puro passatempo ??
Non so chi abbia scritto quella roba su wiki ma è decisamente errata.

Dagli appunti del Prof. Quattrocchi :
Code:
Definizione 7.3 Siano m e n due numeri naturali. Una matrice A di tipo mxn su R è
una tabella di numeri reali
A =
            a11 a12 ... a1n
            a21 a22 ... a2n
            ........................
           am1 am2 .. amn


dove aij appartiene a R per i = 1; 2;... ;m e j = 1; 2;..... ; n. Scriveremo anche
A = (aij) ; i = 1; 2; ..... ; m; j = 1; 2; :.... ; n
Sei tu in errore, secondo la definizione universalmente accettata di matematici per matrice.
Semplicemente, una matrice ha un numero di righe che possiamo chiamare m e un numero di colonne che possiamo chiamare n, ma non si pone che debba valere la condizione che m=n.
Poi, come caso particolare (ma non generale) se si dovesse avere m=n, la matrice sarebbe detta appunto quadrata.
Le matrici quadrate ovviamente non sono un passatempo. Hanno applicazioni reali e usi ben precisi (ma ora non me ne vengono in mente) :boh.

Tornando al discorso su array/matrici frastagliate, un array normalmente è una sequenza di "cose" indicizzata con numeri consecutivi (che iniziano da 0 o 1 a seconda del linguaggio di programmazione scelto), un array in cui gli elementi sono a loro volta degli array è un array bidimensionale, e uno in cui ogni elemento è un array bidimensionale è un array tridimensionale... in generale esistono quindi array multidimensionali, secondo la definizione ricorsiva grezzamente accennata da me.

Una matrice può essere rappresentata in Java anche tramite un array bidimensionale in cui ogni riga ha esattamente lo stesso numero di elementi di ogni altra riga dello stesso array bidimensionale. Anche in questo caso, è banale la possibilità di rappresentare matrici quadrate.

Un array bidimensionale è detto frastagliato quando esiste almeno una coppia di righe (di indice diverso) in cui una delle due ha almeno un elemento in più dell'altra (semplicemente, hanno un numero di elementi diversi reciprocamente).

Una matrice (in senso matematico) non può essere di conseguenza mai e poi mai definita "frastagliata".

L'abuso di notazione che ha portato a vedere tuttavia tale accoppiamento di parole (matrice e frastagliata) in alcuni compiti nasce, secondo me, dal fatto che linguaggi di programmazione (che in passato potevano avere riscosso più successo ma che magari erano meno potenti espressivamente) permettevano la definizione solo di array multidimensionali in cui ogni dimensione era mantenuta costante in tutte le sovra-dimensioni (cioè non si poteva avere la frastagliatura), e di conseguenza era banale poter associare "array bidimensionale" con "matrice".

Con queste nozioni che avete adesso, quindi, non avrete problemi a capire che quando si parla di "matrice frastagliata" si sta facendo riferimento sicuramente a un "array bidimensionale frastagliato".

Saluti .ciaociao.


Title: Re:Matrice bidimensionale di stringhe
Post by: MisteroLupo on 22-01-2009, 11:57:34
[...]
Sempre esauriente e chiarissimo!! .applausi


Title: Re:Matrice bidimensionale di stringhe
Post by: carmelo_ct on 22-01-2009, 17:27:05
cmq che argomenti hai chiesto??

Scusami, intendevo, sugli array, matrici, ecc... che ho chiesto, potreste postarmi dei cicli diciamo di "default", che mi facciano scandire le posizioni di ognuno? grazie...


Title: Re:Matrice bidimensionale di stringhe
Post by: carmelo_ct on 22-01-2009, 17:30:09
Sì, tutto quello che dice Vyvinz è corretto, apparte il fatto che secondo me è più corretto dire "array bidimensionale non frastagliato" rispetto a "Matrice", in quanto mentre il primo modo per chiamarlo rispecchia una terminologia da programmatore, il secondo è un termine della matematica discreta.

Cosa intendi per "scandire" tutte le posizioni? Forse ti serve un ciclo per assegnare ad ogni locazione un valore? (Tradotto in terra-terra: Vuoi riempire un array?)

Se è come ho capito io ti basta un semplice for di questo tipo:
Code:
import.javax.swing.*                     //Questo lo metti prima ancora di dichiarare la classe

//Quest'altro all'interno di un metodo
for(int i=0; i<array.length; i++)
   array[i] = Integer.parseInt(JOptionPane.showInputDialog("Inserisci l'elemento " + i));

Con quelle 3 righe riempi un vettore "array" di Int con valori personalizzati.

Ti ringrazio, ma io volevo sapere, per esempio, come si ci fa a muoversi dentro un array frastagliato per esaminare un elemento.


Title: Re:Matrice bidimensionale di stringhe
Post by: hax on 22-01-2009, 18:43:23
Code:
for (int i=0;i<matrice.length;i++)
      for (int j=0;j<matrice[i].length;j++)
             .....................
             .....................
in questo modo ti scorri tutta la matrice frastagliata


Title: Re:Matrice bidimensionale di stringhe
Post by: carmelo_ct on 22-01-2009, 19:14:41
Code:
for (int i=0;i<matrice.length;i++)
      for (int j=0;j<matrice[i].length;j++)
             .....................
             .....................
in questo modo ti scorri tutta la matrice frastagliata
grazie