Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. #include "es2C.h"
  2.  
  3. /*Funzione ausiliaria che calcola la lunghezza della stringa stringa.*/
  4. int lunghezza(char s[]){
  5.    int i=0;
  6.    while (s[i]!='\0'){ /*finche la stringa non termina, aggiungi uno al contatore*/
  7.       i++;
  8.    }
  9.    return i;
  10. }
  11.  
  12. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
  13. /*Funzione ausiliaria che scorre righe, colonne e diagonale e cerca la parola*/
  14. int cerca(char s[], int i, int j, char M[RIGHE][COLONNE]){
  15.    int k=0, ris=0, cont=0; /*creo e inizializzo variabili.*/
  16.    int r, c; /*creo variabili extra r e c per manterene i e j invariate.*/
  17.    r=i; c=j; /*inizializzo righe e colonne*/
  18.  
  19. /*cerco la parola orizzontalmente*/
  20.    while(s[k]!='\0'){  /*se la stringa cercata è arrivata a fine array, esco*/
  21.       if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
  22.          c++; cont++; k++; /*se vero, scorro le colonne orizzontale) sulla stessa riga, aumento k per vedere la secona lettera, aumento un contatore.*/
  23.       }
  24.       else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
  25.    }
  26.    if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
  27.       ris++; /*risultato incrementato.*/
  28.  
  29.    k=0; r=i; c=j; cont=0; /*azzero tutti gli indici per controllare le colonne*/
  30.  
  31. /*cerco la parola verticalmente*/
  32.    while(s[k]!='\0'){ /*se la stringa cercata è arrivata a fine array, esco*/
  33.       if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
  34.          r++; cont++; k++; /*se vero, scorro le righe(verticale) sulla stessa riga, aumento k per vedere la secona lettera, aumento un contatore.*/
  35.       }
  36.       else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
  37.    }
  38.    if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
  39.       ris++; /*risultato incrementato.*/
  40.  
  41.    k=0; r=i; c=j; cont=0;  /*azzero tutti gli indici per controllare la diagonale*/
  42.  
  43. /*cerco la parola in obliquo*/
  44.    while(s[k]!='\0'){  /*se la stringa cercata è arrivata a fine array, esco*/
  45.       if (s[k]==M[r][c]){ /*controllo se la lettera in posizione k della parola che cerco è uguale ala posizione i*j*/
  46.          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.*/
  47.       }
  48.       else k=lunghezza(s); /*altrimenti k diventa la lunghezza della stringa ed esce dal while */
  49.  
  50.    }
  51.    if (cont==lunghezza(s)) /*controllo se il contatore è uguale alla lunghezza: in questo caso, la parola cercata è contenuta*/
  52.       ris++; /*risultato incrementato.*/
  53.  
  54.    return ris; /*ritorno risultato*/
  55. }
  56.  
  57. /*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
  58. /*funzione principale*/
  59. int contaOccorrenze(char s[], char M[RIGHE][COLONNE]){
  60.    int i, j, count;
  61.    count = 0;
  62.    for(i=0; i<RIGHE; i++){ /*scorro righe*/
  63.       for(j=0; j<COLONNE; j++){ /*scorro colonne*/
  64.             count = count + cerca(s, i, j, M); /*sommo i vari ris di ritorno dalla funzione cerca avviata da ogni posizione dell'array.*/
  65.       }
  66.    }
  67.  
  68.    return count; /*ritorno il numero di ritrovamenti*/
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement