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 30 Dicembre 2022