Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- bool match(int * A, int elementistrato, int * b, int nb){
- int k=0;
- bool match=false;
- for (int i=0; i<elementistrato && !match; i++){
- if (A[i] == b[k]){
- k++;
- if(k==nb)
- match = true;
- }
- else
- k=0;
- }
- return match;
- }
- main()
- {
- int X[400], n_ele, nP, P[20];
- cin>> n_ele;
- for(int i=0; i<n_ele; i++) //R1: (0<=i<=n) && (se viene trovato un match tra A[0 ... 1] e b[0 ... k] la variabile match viene cambiata in true se non viene trovato un match si imposta k = 0)
- cin >> X[i];
- int lim1,lim2,lim3;
- cin>> lim1>>lim2>>lim3;
- cin >> nP;
- for(int i=0; i<nP; i++)
- cin>>P[i];
- cout<<"start"<<endl;
- // da fare
- int elementistrato = lim2*lim3;
- int stratip = n_ele/(elementistrato);
- int n_eleultimostrato = n_ele%(elementistrato);
- bool esisteMatch = false;
- int i;
- if (stratip<=lim1) {
- stratip = lim1;
- for (i=0; i<stratip && !esisteMatch; i++){ //R2: (0<=i<=stratip) && (viene invocata la funzione match cerca se ci sono pattern che creano un match tra gli array X[] e P[])
- esisteMatch = match(X+i*(elementistrato),elementistrato,P,nP);
- }
- if (esisteMatch)
- cout << "Lo strato "<<i-1<<" di T contiene un match" << endl;
- else
- cout << "Nessun match trovato" << endl;;
- }
- else
- cout <<"Nessun match trovato" << endl;
- cout<<"end"<<endl;
- }
- /*
- Prova di correttezza di R2:
- Condizione di entrata: se i = 0 allora 0<=i<=stratip viene poi invocata la funzione match che ritorna un booleano true o false a seconda se trova un match o meno
- Condizione di permanenza: fino a che i è maggiore di 0 e minore di stratip il ciclo continuerà a richiamare la funzione match per la ricerca del match
- Condizione di uscita: i=stratip è la condizione per uscire dal ciclo e la funzione match non verrà più richiamata
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement