Ciao a tutti,
ho un problema con un programma in cui data una sequenza numerica molto lunga,presa da file, devo ricercare una sequenza numerica più piccola di cui devo dare io la dimensione e inoltre il programma mi deve dire quante volte si ripete tale sequenza.Il programma inizialmente l'ho fatto bene perchè ho scritto un algoritmo che andava bene per una sequenza di due numeri,ma chiaramente così non va bene perchè deve valere anche per dimensioni maggiori.Posto solamente la parte di codice dove sta il problema tanto il resto del programma è solo apertura del file,allocazione dinamica ecc.
L'algoritmo iniziale è questo:
Per capirci riemp è la dimensione dell'array preso da file,dim è la dimensione(assegnato da tastiera) dell'array più piccolo che vogliamo ricercare esempio due per cercare la sequenza 1,2.Contatore_ripetizione è il contatore che ho usato per farmi dire la programma quante volte si ripete la sequenza cercata e Incremento è un altro contatore per fare ripetere il processo di comparazione. Il problema è che il programma non va,parte ma dopo avere inserito i numeri da cercare non va avanti e suppongo che il problema sia nel while perchè se non trova la sequenza esempio 1.codice:int incremento = 1; int contatore_ripetizioni=0; for (int i=0;i<riemp;i++) { for (int j=0;j<dim;j++) { if (vet1[i]==vet2[j]) { while (incremento != dim) { if (vet1[i+incremento]==vet2[j+incremento]) { contatore_ripetizioni++; incremento++; } else break; } } else j++; } }
P.S. else break; sta là perchè non sapevo come interrompe il ciclo nel caso in cui nella comparazione tipo 1 2 3,magari trova 1 2 mentre il 3 no allora deve uscire dal ciclo while.