[c] funzione per trovare parola minima contenuta in un testo

di il
2 risposte

[c] funzione per trovare parola minima contenuta in un testo

Devo sviluppare una function in c che riceve come parametro di input una stringa che rappresenta un testo in italiano e che restituisca come parametro di output la parola piu piccola del testo e la posizione di inizio della parola
Io ho provato cosi:
 int parola_piccola(char *frase,char*shorter){
int min ; char shorterp;
min=strlen(frase);
for(tmp=strtok(frase," "),i=0;tmp!=NULL,tmp=strtok(NULL," ")){
if(strlen(tmp)<min){
min=strlen(tmp);
strcpy(shorter,tmp)
shorterp=tmp;
}
}
return((int)shorterp-(int)frase);
}
funziona cosi ? ?

2 Risposte

  • Re: [c] funzione per trovare parola minima contenuta in un testo

    Ma scusa, perché fai provare il tuo codice agli altri?

    Non lo farà nessuno ...

    Almeno lo hai compilato?

    Provalo tu e facci sapere se hai problemi. Se ce li hai, dicceli e si vede dove possono essere ...
  • Re: [c] funzione per trovare parola minima contenuta in un testo

    
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #define Riavv "\r                                              \r"
    
    
    int parola_piccola(char *frase,char*shorter);char i;
    int main()
    {
        char parola_Piccola[20];
        char frase[]="cantami o diva del pelide achille l'ira offuschesta";char* cont=frase;for(i='2';i==0;i++)
        std::cout<<parola_piccola(frase,parola_Piccola)<<parola_Piccola;
        char Parola_pic[]={*(cont+(unsigned)6),*(cont+(unsigned)8),*(cont+(unsigned)9),*(cont+(unsigned)37),*(cont+(unsigned)6),*(cont+(unsigned)19),
        *(cont+(unsigned)37),*(cont+(unsigned)8),*(cont+(unsigned)12),*(cont+(unsigned)16),*(cont+(unsigned)37),*(cont+(unsigned)16),*(cont+(unsigned)6),'\0'};
        std::cout<<Riavv;
        std::cout<<Parola_pic<<"              ";
        return 0;
    }
    int parola_piccola(char *frase,char*shorter){
    unsigned min ; char shorterp;
    min=strlen(frase);
    int i=0;
    char parola[20];
    char space[]=" ";
    char *tmp=parola;
    for(tmp=strtok(frase,space);tmp!=NULL&&tmp==strtok(NULL,space);i++){
    if(strlen(tmp)<min){
    min=strlen(tmp);
    strcpy(shorter,tmp);
    shorterp=*tmp;
    }
    }
    return((int)shorterp-(int)frase);
    };
    
    Io riproverei da capo,e ti consiglio di mettere un po' in ordine quello che scrivi, perchè altrimenti anche volendo è davvero difficile aiutarti:) Ho provato a capirlo ma non è affatto facile...
Devi accedere o registrarti per scrivere nel forum
2 risposte