PDA

Visualizza la versione completa : [C] Lunghezza massima della parola contenuta nel testo


asteroid
26-02-2011, 19:03
Sviluppare una function C che, data come parametro di input una stringa che rappresenta
un testo in italiano, determina e restituisce come parametri di output la parola di lunghezza
massima contenuta nel testo e la sua lunghezza. Nel testo le parole sono separate da un
unico spazio.


#include <stdio.h>
#include <string.h>
void conta_caratteri(char *testo,int *n_caratteri);
int main()
{char testo[100];
int n_caratteri,i;
printf("inserisci testo:\n");
gets(testo);
conta_caratteri(testo,&n_caratteri);
printf("la lunghezza massima:%d",n_caratteri);
printf("la parola di lunghezza massima:%s",testo[n_caratteri]);
system("pause");
return 0;
}
void conta_caratteri(char *testo,int *n_caratteri)
{
int i,in_parola;
i=0;
while(testo[i]!='\0')
{
(*n_caratteri)++;
if(testo[i]==' ' || testo[i]=='\n' || testo[i]=='\t')
in_parola=0;
else if(in_parola==0)
in_parola=1;
if(testo[i]>testo[*n_caratteri])
{ *n_caratteri=i;
testo[*n_caratteri]=testo[i];
}
i++;
}
}


perchè mi va in loop quando lo eseguo... :jam:

GliderKite
26-02-2011, 21:04
Prova con strtok:




char * compute( char *text )
{
char *ptr = strtok( text, " \n\t,.;:!\"?" );
char *str = ptr;

while( ptr != NULL )
{
str = strlen(ptr) > strlen(str) ? ptr : str;
ptr = strtok( NULL, " \n\t,.;:!\"?" );
}

return str;
}

dario09
27-02-2011, 21:37
printf("la parola di lunghezza massima:%s",testo[n_caratteri]);
testo e' un array,cosi stampi un solo carattere,devi eliminare "[n_caratteri]"

queste linee non hanno tanto senso,devi collegarle al resto del codice

if(testo[i]==' ' || testo[i]=='\n' || testo[i]=='\t')
in_parola=0;
else if(in_parola==0)
in_parola=1;
poi ti serve un array di appoggio all'array "testo" dove inserire la parola piu lunga
come ha fatto nell'esempio GliderKite
per finire controlla il puntatore "*n_caratteri" mi semra non punti a niente
ciao.

Loading