dino_sauro00
25-06-2003, 12:37
Ciao raggazzi (e ciao PGI :) ). Ho questo problema con un programma Java. Allora, ho creato un array con dei numeri casuali e poi ho usato Arrays.sort(array) per mettere i numeri in ordine. Quello che dovrei fare adesso e eliminare i duplicati dall'array controllando se il vicino di un numero e uguale al numero (visto che i numeri sono gia' sortati). Il codice l'ho scritto ed e' il seguente:
import java.util.Arrays;
public class SortArray
{
public static void main (String [] args)
{
int [] array = new int [10];
int arraySize = array.length;
array[0] = 4;
array[1] = 7;
array[2] = 11;
array[3] = 4;
array[4] = 9;
array[5] = 5;
array[6] = 11;
array[7] = 7;
array[8] = 3;
array[9] = 5;
System.out.println ("Array iniziale");
for (int i=0; i<array.length; i++)
System.out.println (array[i]); //array non sortato
Arrays.sort(array); //array sortato
System.out.println ("\nArray ordinato");
for (int i=0; i<array.length; i++)
System.out.println(array[i]);
//qui comincia l'algoritmo che controlla l'array
for (int i=0; i<=arraySize; i++)
{
if (array[i] != array[i+1])
{
//System.out.println (array[i]);
arraySize--;
}
else
{
int pos = i;
for (int x=pos; x<arraySize; x++)
// System.out.println(array[i]);
{
array[x] = array [x+1];
// System.out.println (array[x]);
pos++;
}
arraySize--;
}
}
System.out.print ("\nArray finale");
for (int i=0; i<array.length-arraySize; i++)
System.out.print ("\n" + array[i]);
}
}
Il problema mi si presenta con l'ultimo elemento. Infatti se si lascia l'array cosi' com'e' (con i due 11 finali) funziona, ma se cambio uno dei due 11 in un altro numero piu' grande non funziona dandomi sempre come ultimo elemento l'11. Ho provato anche a cambiare nell'ultimo for
il i<array.length-arraySize e farlo i<=array.length-arraySize che poi funziona con ultimi elementi un 11 e un 12 ma non funziona con due 11. Infatti in questo caso mi stampa pure anche il secondo 11.
Mi spiace per la lunga spiegazione ma e' un problema un po' bastardo.
Grazie a chi rispondera' riguardo a questo problema ma anche a chi mi da qualche dritta per migliorare il mio modo pessimo di programmare.
Ciaoooo
import java.util.Arrays;
public class SortArray
{
public static void main (String [] args)
{
int [] array = new int [10];
int arraySize = array.length;
array[0] = 4;
array[1] = 7;
array[2] = 11;
array[3] = 4;
array[4] = 9;
array[5] = 5;
array[6] = 11;
array[7] = 7;
array[8] = 3;
array[9] = 5;
System.out.println ("Array iniziale");
for (int i=0; i<array.length; i++)
System.out.println (array[i]); //array non sortato
Arrays.sort(array); //array sortato
System.out.println ("\nArray ordinato");
for (int i=0; i<array.length; i++)
System.out.println(array[i]);
//qui comincia l'algoritmo che controlla l'array
for (int i=0; i<=arraySize; i++)
{
if (array[i] != array[i+1])
{
//System.out.println (array[i]);
arraySize--;
}
else
{
int pos = i;
for (int x=pos; x<arraySize; x++)
// System.out.println(array[i]);
{
array[x] = array [x+1];
// System.out.println (array[x]);
pos++;
}
arraySize--;
}
}
System.out.print ("\nArray finale");
for (int i=0; i<array.length-arraySize; i++)
System.out.print ("\n" + array[i]);
}
}
Il problema mi si presenta con l'ultimo elemento. Infatti se si lascia l'array cosi' com'e' (con i due 11 finali) funziona, ma se cambio uno dei due 11 in un altro numero piu' grande non funziona dandomi sempre come ultimo elemento l'11. Ho provato anche a cambiare nell'ultimo for
il i<array.length-arraySize e farlo i<=array.length-arraySize che poi funziona con ultimi elementi un 11 e un 12 ma non funziona con due 11. Infatti in questo caso mi stampa pure anche il secondo 11.
Mi spiace per la lunga spiegazione ma e' un problema un po' bastardo.
Grazie a chi rispondera' riguardo a questo problema ma anche a chi mi da qualche dritta per migliorare il mio modo pessimo di programmare.
Ciaoooo