Teardrop92
17-05-2012, 19:40
Salve a tutti, sono uno studente di Ingegneria, alle prese per la prima volta con l'Informatica :)
Ho il seguente programma da svolgere:
Si scriva un programma 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 deve:
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
Per ora, sono riuscito a svolgere solo i primi 2 punti, con il seguente codice ( mi rendo conto che potrebbe essere migliorato, ma prima preferirei trovare una soluzione a tutti i quesiti :))quindi vorrei chiedere una mano a voi:
#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; /* numero spazi bianchi */
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]!=' ')) /* calcolo quante parole sono presenti nella stringa */
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]==' ') /* calcolo il numero di spazi bianchi presente nella stringa */
n_blank++;
d++;
}
strlen(stringa);
r = strlen(stringa);
if(quante_parole<=N)
{
media_parole = ((float)r - (float)n_blank)/(float)quante_parole;
/* la lunghezza media delle parole sarà data dalla lunghezza della stringa meno gli spazi bianchi, il tutto diviso per il numero delle parole */
printf("La lunghezza media delle parole e': %.2f\n",media_parole);
}
return EXIT_SUCCESS;
}
Ho il seguente programma da svolgere:
Si scriva un programma 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 deve:
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
Per ora, sono riuscito a svolgere solo i primi 2 punti, con il seguente codice ( mi rendo conto che potrebbe essere migliorato, ma prima preferirei trovare una soluzione a tutti i quesiti :))quindi vorrei chiedere una mano a voi:
#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; /* numero spazi bianchi */
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]!=' ')) /* calcolo quante parole sono presenti nella stringa */
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]==' ') /* calcolo il numero di spazi bianchi presente nella stringa */
n_blank++;
d++;
}
strlen(stringa);
r = strlen(stringa);
if(quante_parole<=N)
{
media_parole = ((float)r - (float)n_blank)/(float)quante_parole;
/* la lunghezza media delle parole sarà data dalla lunghezza della stringa meno gli spazi bianchi, il tutto diviso per il numero delle parole */
printf("La lunghezza media delle parole e': %.2f\n",media_parole);
}
return EXIT_SUCCESS;
}