 
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 ;)
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?
;)
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.