Sviluppare una function C che, dati come parametri di input un array di char e il suo size, determina e restituisce come parametro di output l’array occorrenze (di size 21) del numero delle occorrenze dell’evento a precede ognuna delle 21 lettere dell’alfabeto italiano (cioè occorrenze[0] è il numero di volte in cui accade che “a precede a”, cioè che nel testo compare aa, occorrenze[1] è il numero di volte in cui accade che “a precede b”, cioè che nel testo compare ab, occorrenze[2] è il numero di volte in cui accade che a precede c, cioè che nel testo compare ac, …).


  1. /**
  2.     Sviluppare una function C che, dati come parametri di input un array di char e
  3.     il suo size, determina e restituisce come parametro di output l’array
  4.     occorrenze (di size 21) del numero delle occorrenze dell’evento a precede
  5.     ognuna delle 21 lettere dell’alfabeto italiano (cioè occorrenze[0] è il numero
  6.     di volte in cui accade che “a precede a”, cioè che nel testo compare aa,
  7.     occorrenze[1] è il numero di volte in cui accade che “a precede b”, cioè
  8.     che nel testo compare ab, occorrenze[2] è il numero di volte in cui accade
  9.     che a precede c, cioè che nel testo compare ac, …).
  10.  **/
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14.  
  15.  void occor_prec_a(int n, char s[], int occor[]) {
  16.  
  17. int i,j;
  18. char *alfabeto = "abcdefghilmnopqrstuvz";
  19.  
  20.         for(= 0; i < 21; i++)
  21.         occor[i] = 0;
  22.  for(i=0;i<n;i++)
  23.         {
  24.                 s[i]=tolower(s[i]);
  25.         //facciamo diventare tutta da frase in minuscolo in modo da semplificare
  26.         }
  27.         // Scorro tutte le lettere della stringa
  28. for(i=0;i<strlen(s);i++) {
  29.         // Ogni volta che trovo una a
  30. if(s[i] == 'a') {
  31.     // Scorro tutte le lettere dell'alfabeto
  32.   for (j=0;j<21;j++) {
  33.       // Controllo tutti le lettere dell'alfabeto, se mi trovo in uno spazio non prendo in considerazione
  34.             if(s[i+1]==alfabeto[j] && s[i+1]!=' ')
  35.             { // l'array avrà quindi le occorrenze di tutte le lettere dopo a
  36.                 occor[j]++;
  37.             }
  38.                     }
  39.                 }
  40.                         }
  41. int x=0, b=21;
  42.  
  43. for (x=0;x<b;x++) {
  44.     // Ma stampo solo le occorrenze esistenti
  45.         if(occor[x]!=0) {
  46.             printf("a%c %d\n",alfabeto[x],occor[x]);
  47.         }
  48. }
  49.  
  50.  }
  51.  
  52.  int main() {
  53.  
  54. char s[]="Alle anatre piace essere attraenti perche' sono attente";
  55. int occor[21];
  56. int n=strlen(s);
  57. occor_prec_a(n,s,&occor);
  58.  
  59. }


Learn More :