Salve a tutti, sto impazzendo da qualche ora sul seguente programma da svolgere
Devo realizzare che acquisisca utilizzando la funzione gets una stringa composta da un massimo di 5 parole separati da spazi, per un totale di massimo 60 caratteri. Il programma dovrebbe:
a) Stabilire quante sono effettivamente le parole contenute nella stringa
b) Calcolare la media delle lunghezze delle parole
c) produrre una statistica sulla lunghezza delle parole
Nel punto c) con statistica si intende, visualizzare a video ad esempio:
3 parole di 4 caratteri
1 parola da 6 caratteri
1 parola da 5 caratteri
Io per ora ho risolto i primi due punti, col seguente codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LUNG_STRING 61
#define N 5
int main()
{
int i,d,r;
char stringa[LUNG_STRING];
int quante_parole=0;
int n_blank=0;
float media_parole;
printf("Inserisci una stringa di caratteri separati da spazi\n\n");
gets(stringa);
i=1;
while(stringa[i]!='\0')
{
if ((stringa[i]==' ')&&(stringa[i-1]!=' '))
quante_parole++;
i++;
}
if (stringa[i-1]!=' ')
quante_parole++;
if((quante_parole>N))
printf("\nSono state inserite troppe parole\n");
else
printf("Le parole presenti nella fase sono %d\n",quante_parole);
d=1;
while(stringa[d]!='\0')
{
if(stringa[d]==' ')
n_blank++;
d++;
}
r = strlen(stringa);
if(quante_parole<=N)
{
media_parole = ((float)r - (float)n_blank)/(float)quante_parole;
printf("La lunghezza media delle parole e': %.2f\n",media_parole);
}
return EXIT_SUCCESS;
}
Per il punto c) avevo pensato a spezzare la stringa con strtok e calcolarmi la lunghezza delle sottostringhe ma non saprei come fare, comunque ecco come ho spezzato la stringa:
char *p;
p = strtok(stringa, " ");
while (p != NULL)
{
printf("%s\n", p);
p = strtok(NULL, " ");
}
Il problema è che mi sembra una via complessa, quindi vorrei chiedere una mano a voi per risolvere quest'ultimo punto