View Full Version : [Java] Esercizio di ordinamento..
ciao a tutti, l'esercizio che dovrei fare io è quello di stabilire se le righe di una matrice sono ordinate o meno.
più in particolare come risultato dovrei avere un vettore v in cui nella posizione i-esima ci sia 0 se la righa i-esima della matrice non è ordinata, ci sia 1 se è ordinata in senso crescente o 2 se è ordinata in senso decrescente.
questa è la funzione che avevo fatto io:
edit:
public void Verifica(int m[][]) {
int v[] = new int[m.length];
int n = m[0].length - 1;
int tmp[] = new int[n];
for (int i = 0; i < m.length; i++) {
v[i] = 0;
for (int k = 0; k < n; k++) {
if (m[i][k] < m[i][k + 1])
tmp[k] = 1;
else
tmp[k] = 2;
if (k == 0)
continue;
if (tmp[k] == tmp[0])
v[i] = tmp[0];
if (tmp[k] != tmp[k - 1])
v[i] = 0;
break;
}
System.out.print(v[i]);
}
}
ho modificato il primo post perchè ho apportato qualche modifica al programma che ora funziona tranne per il fatto che non tiene conto dell'ultima cifra di ogni riga... :muro:
malocchio
10-12-2008, 23:25
public void Verifica(int m[][]) {
int v[] = new int[m.length];
int n = m[0].length - 1;
int tmp[] = new int[n];
for (int i = 0; i < m.length; i++) {
v[i] = 0;
for (int k = 0; k < n; k++) {
if (m[i][k] < m[i][k + 1])
tmp[k] = 1;
else
tmp[k] = 2;
if (k == 0)
continue;
if (tmp[k] == tmp[0])
v[i] = tmp[0];
if (tmp[k] != tmp[k - 1])
v[i] = 0;
break;
}
System.out.print(v[i]);
}
}
L'errore è in grassetto.
O metti n = m[0].length;
...
...
for (int k = 0; k < n; k++)
...
oppure
n = m[0].length-1;
...
...
for (int k = 0; k <= n; k++)
...
L'errore è in grassetto.
O metti n = m[0].length;
...
...
for (int k = 0; k < n; k++)
...
oppure
n = m[0].length-1;
...
...
for (int k = 0; k <= n; k++)
...
questo l'avevo già provato, ma il bello è che anche se metto per esempio n+5 oppure m[0].length+5 è sempre la stessa cosa!! :confused:
non mi dà neanche errore e non capisco perchè.... :muro:
ecco, penso di aver risolto:
public void Verifica(int m[][]) {
int v[] = new int[m.length];
int n = m[0].length - 1;
int tmp[] = new int[n];
for (int i = 0; i < m.length; i++) {
v[i] = 0;
for (int k = 0; k < n; k++) {
if (m[i][k] < m[i][k + 1])
tmp[k] = 1;
else
tmp[k] = 2;
if (k == 0)
continue;
if (tmp[k] == tmp[0])
v[i] = tmp[0];
if (tmp[k] != tmp[k - 1])
v[i] = 0;
// break;
}
System.out.print(v[i]);
}
}
praticamente ho dovuto togliere il break.. anche se a me sembrava giusto messo là... :confused:
malocchio
12-12-2008, 21:40
ecco, penso di aver risolto:
public void Verifica(int m[][]) {
int v[] = new int[m.length];
int n = m[0].length - 1;
int tmp[] = new int[n];
for (int i = 0; i < m.length; i++) {
v[i] = 0;
for (int k = 0; k < n; k++) {
if (m[i][k] < m[i][k + 1])
tmp[k] = 1;
else
tmp[k] = 2;
if (k == 0)
continue;
if (tmp[k] == tmp[0])
v[i] = tmp[0];
if (tmp[k] != tmp[k - 1])
v[i] = 0;
// break;
}
System.out.print(v[i]);
}
}
praticamente ho dovuto togliere il break.. anche se a me sembrava giusto messo là... :confused:
Ok scusa, non avevo letto per intero il codice; appena ho letto ultima riga ho guardato il for.
Sì in effetti adesso che vedo bene, quello che ti ho postato non ha senso nel contesto. :stordita:
Ok scusa, non avevo letto per intero il codice; appena ho letto ultima riga ho guardato il for.
Sì in effetti adesso che vedo bene, quello che ti ho postato non ha senso nel contesto. :stordita:
comunque grazie lo stesso...
almeno sei l'unico che ci ha tentato ad aiutarmi.. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.