/**
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, …).
**/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void occor_prec_a(int n, char s[], int occor[]) {
int i,j;
char *alfabeto = "abcdefghilmnopqrstuvz";
for(i = 0; i < 21; i++)
occor[i] = 0;
for(i=0;i<n;i++)
{
s[i]=tolower(s[i]);
//facciamo diventare tutta da frase in minuscolo in modo da semplificare
}
// Scorro tutte le lettere della stringa
for(i=0;i<strlen(s);i++) {
// Ogni volta che trovo una a
if(s[i] == 'a') {
// Scorro tutte le lettere dell'alfabeto
for (j=0;j<21;j++) {
// Controllo tutti le lettere dell'alfabeto, se mi trovo in uno spazio non prendo in considerazione
if(s[i+1]==alfabeto[j] && s[i+1]!=' ')
{ // l'array avrà quindi le occorrenze di tutte le lettere dopo a
occor[j]++;
}
}
}
}
int x=0, b=21;
for (x=0;x<b;x++) {
// Ma stampo solo le occorrenze esistenti
if(occor[x]!=0) {
printf("a%c %d\n",alfabeto[x],occor[x]);
}
}
}
int main() {
char s[]="Alle anatre piace essere attraenti perche' sono attente";
int occor[21];
int n=strlen(s);
occor_prec_a(n,s,&occor);
}