Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "es2C.h"
- /*Funzione ausiliaria che calcola la lunghezza della stringa stringa.*/
- int lunghezza(char s[]){
- int i=0;
- while (s[i]!='\0'){ /*finche la stringa non termina, aggiungi uno al contatore*/
- i++;
- }
- return i;
- }
- /*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
- /*Funzione ausiliaria che scorre righe, colonne e diagonale e cerca la parola*/
- int cerca(char s[], int i, int j, char M[RIGHE][COLONNE]){
- int k=0, ris=0, cont=0; /*creo e inizializzo variabili.*/
- int r, c; /*creo variabili extra r e c per manterene i e j invariate.*/
- r=i; c=j; /*inizializzo righe e colonne*/
- /*cerco la parola orizzontalmente*/
- while(s[k]!='\0'){ /*se la stringa cercata è arrivata a fine array, esco*/
- if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
- c++; cont++; k++; /*se vero, scorro le colonne orizzontale) sulla stessa riga, aumento k per vedere la secona lettera, aumento un contatore.*/
- }
- else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
- }
- if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
- ris++; /*risultato incrementato.*/
- k=0; r=i; c=j; cont=0; /*azzero tutti gli indici per controllare le colonne*/
- /*cerco la parola verticalmente*/
- while(s[k]!='\0'){ /*se la stringa cercata è arrivata a fine array, esco*/
- if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
- r++; cont++; k++; /*se vero, scorro le righe(verticale) sulla stessa riga, aumento k per vedere la secona lettera, aumento un contatore.*/
- }
- else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
- }
- if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
- ris++; /*risultato incrementato.*/
- k=0; r=i; c=j; cont=0; /*azzero tutti gli indici per controllare la diagonale*/
- /*cerco la parola in obliquo*/
- while(s[k]!='\0'){ /*se la stringa cercata è arrivata a fine array, esco*/
- if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
- r++; c++; cont++; k++; /*se vero, scorro le righe e le colonne per andare in diagonalea, aumento k per vedere la secona lettera, aumento un contatore.*/
- }
- else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
- }
- if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
- ris++; /*risultato incrementato.*/
- return ris; /*ritorno risultato*/
- }
- /*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
- /*funzione principale*/
- int contaOccorrenze(char s[], char M[RIGHE][COLONNE]){
- int i, j, count;
- count = 0;
- for(i=0; i<RIGHE; i++){ /*scorro righe*/
- for(j=0; j<COLONNE; j++){ /*scorro colonne*/
- count = count + cerca(s, i, j, M); /*sommo i vari ris di ritorno dalla funzione cerca avviata da ogni posizione dell'array.*/
- }
- }
- return count; /*ritorno il numero di ritrovamenti*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement