PDA

View Full Version : [JAVA] n interi consecutivi da una struttura


Maverick82^
24-04-2006, 21:17
Salve,

ho questo problema. Data una sequenza di interi, devo poter stabilire se in tale sequenza sono contenuti n interi consecutivi.
Per ora sono riuscito a fare questo: ad esempio se ho la lista 2,3,7,9,10,11 mi calcolo 2,3,9,10,11. Ora di questa lista mi interessa sapere se vi sono contenuti n interi positivi.

Si accettano suggerimenti :P ;)

pisto
24-04-2006, 23:47
sono l'unico a non aver capito cosa dici? :stordita:

Maverick82^
25-04-2006, 00:13
Salve,

ho questo problema. Data una sequenza di interi, devo poter stabilire se in tale sequenza sono contenuti n interi consecutivi.
Per ora sono riuscito a fare questo: ad esempio se ho la lista 2,3,7,9,10,11 mi calcolo 2,3,9,10,11. Ora di questa lista mi interessa sapere se vi sono contenuti n interi positivi.

Si accettano suggerimenti :P ;)

chiedo scusa,forse nn mi sono espresso bene.. :)

allora faccio un esempio pratico. Ho la mia lista di interi 2,3,7,9,10,11,15,17. Voglio sapere se ci sono (ad esempio) 3 numeri interi consecutivi, in questo caso si, e sono 9,10,11.
Quello che sono riuscito a fare fino ad ora è calcolarmi una nuova lista solo con numeri interi consecutivi tra loro, quindi nell'esempio precedente 2,3,9,10,11. Ora avendo questa lista, come faccio a sapere se ci sono 3 numeri consecutivi?

;)

pisto
25-04-2006, 12:47
public class Consecutivi {

public static void main(String... arg){
trovaConsecutivi(new int[]{2,4,7,8,9,13,16,17,18,19});
}

static void trovaConsecutivi(int[] lista){
for(int i=0; i<lista.length-3;i++)
if(lista[i]==lista[i+1]-1 && lista[i]==lista[i+2]-2)
System.out.println(lista[i]+" "+lista[i+1]+" "+lista[i+2]);
}

}

la lista naturalmente deve esser ordinata, magari con Arrays.sort(int[])

Ziosilvio
25-04-2006, 13:08
Data una sequenza di interi, devo poter stabilire se in tale sequenza sono contenuti n interi consecutivi.
Ordina la sequenza.
Poi, per ciascuna sottosequenza di lunghezza n della sequenza ordinata, controlla se è formata da numeri consecutivi.

Maverick82^
25-04-2006, 22:27
ragazzi grazie per l'aiuto, anche se ho risolto in maniera differente senza dover ordinare la sequenza.
private Vector consecutivi(Vector postiDisponibiliNoComma,int nPosti) {
Vector cons=new Vector();
int val=0,count=0,corrente=0;
Integer intVal,intVal2;

//primo elemento
intVal=Integer.parseInt((String)postiDisponibiliNoComma.elementAt(0));
val=intVal.intValue();
corrente=val;

for(int i=0; i<postiDisponibiliNoComma.size(); i++) {
intVal=Integer.parseInt((String)postiDisponibiliNoComma.elementAt(i));
val=intVal.intValue();

cons.add(val);

if(corrente==val-i) {
corrente=val-i;
count++;

if(count==nPosti)
break;
} else {
cons.removeAllElements();
cons.add(val);
count=1;
corrente=val-i;
}
}

return cons;
}


è una soluzione un pò incasinata da spiegare, ma sembra funzionare.

ciao e grazie