Occorrenze consecutive massime di lettere

Una funzione occorrenzeConsecutive riceve come parametro una stringa. La funzione stampa un messaggio con quale carattere ha più occorrenze consecutive nella stringa proposta e quanti sono. Es. se la stringa fosse “aaaabbbbbbbbccaafff” dovrebbe stampare “ll carattere con maggiori occorrenze consecutive è b con 8 occorrenze”. Crea una funzione main che testi come una scatola nera la funzione richiamandola più volte con diverse stringhe di prova stampando la coppia stringa inserita/risultato.

Un esercizio non esattamente semplice, intuitivamente più adatto a studenti universitari probabilmente. L’intuizione sta nell’usare un doppio ciclo con un semplice confronto e con un contatore e un contatore max che registrano eventuali occorrenze massime parziali.

#include <iostream>

using namespace std;

int const LUNGHEZZA = 100;

void occorrenzeConsecutive(char _stringa[])
{
    int i,j;
    char buffer;
    int maxoccur = 0;  //massimo numero di oocrrenze registrate
    char maxchar = ' ';
    int occur = 1;  //occorrenze per la lettera in canna
    for (i=0; i < LUNGHEZZA; i++)
    {
        
        if (!_stringa[i])
            break;

        buffer = _stringa[i];
        for (j=i+1; j < LUNGHEZZA; j++)
        {
            if (!_stringa[j])
                break;

            if (buffer == _stringa[j]) 
            {
                cout << buffer <<" = " << _stringa[j] << endl;
                occur++;
            }
            else
            {
                if (occur > maxoccur)
                {
                    maxoccur = occur;
                    maxchar = buffer;
                }
                    
                occur = 1;    
            }
        } 
    }

    cout << "La lettera con piu' occorrenze e' "<< maxchar << " con  #" << maxoccur <<" occorrenze" <<endl;

    return;
}

int main()
{
    char parola[LUNGHEZZA];

    printf("Inserisci una parola da analizzare ");
    fgets(parola,LUNGHEZZA, stdin);   
     
    occorrenzeConsecutive(parola);

    //aaaabbbbbbbbccaafff  b ha 8 occorrenze

    printf("Premi un tasto per uscire");
    getchar();
    return 0;
}

Ultima modifica 10 Novembre 2022