Oppure

Loading
11/01/10 20:29
Ciao a tutti come devo fare per estrarre da una stringa solo le consonanti.
Poi dovrei estrarre le vocali ne caso la stringa conenga meno di 3 consonanti??
11/01/10 20:35
nessuno
Stai lavorando per un programma che generi il codice fiscale?

Comunque, puoi controllare solamente le 5 vocali ... se non è una di queste, è una consonante.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/01/10 20:38
Si...Potresti faremi un esempio
11/01/10 20:43
nessuno
Un semplice esempio, per ora, puo' essere quello di una if del tipo

if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u')
{
  /* vocale */
}
else
{
  /* consonante */
}


applicata in un ciclo for che esamina tutti i caratteri di una stringa s ...

Prova a ragionarci ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/01/10 20:54
Niente sara la stanchezza ma non ci riesco ora :d:d:d
ci riprovo domani :d:d:d
Grazie per l'aiuto
11/01/10 21:09
Per il nome come faccio a saltare la 2 consonante?????????

int codcogn(const char *str, char *buf){
    int i,j;
    if (!str || !buf) {
        return -1;
    }
    for (i=j=0;j < 3; i++) {
        if (!isvocal(str[i])) {
            buf[j] = str[i];
            j++;
        }
         
    if (j<3){     
    for (i=j=1;j < 3; i++) {
        if (isvocal(str[i])) {
            buf[j] = str[i];
            j++;
        }
        }
    }
}
    return 0;
}
Ultima modifica effettuata da 11/01/10 21:10
12/01/10 13:58
Il Totem
Saltare sempre la seconda consonante? Basta controllare: così prende tutte le consonanti tranne la seconda:
int codcogn(const char *str, char *buf)
{
    int i;

    if (!str || !buf)
        return -1;
    
    for(i = 0; (*str != 'Saltare sempre la seconda consonante? Basta controllare: così prende tutte le consonanti tranne la seconda:

int codcogn(const char *str, char *buf)
{
    int i;

    if (!str || !buf)
        return -1;
    
    for(i = 0; (*str != '{parsed_message}') && (i < 4); str++)
      if ( !isvocal(*str) )
      {
        if (i != 1)
          *(buf++) = *str;
        i++;
      }

    return 0;
} 
} 

Comunque, perchè passi le variabili dichiarandole come puntatori e poi utilizzandole come array? Si dovrebbe mantenere l'omogeneità di stile nonostante la possibilità di tipo.
E un altro appunto: il tuo ciclo presume che str contenga almeno tre consonanti prima della fine, e se ce ne sono solo 2 va in loop. Inoltre, il secondo if non viene mai eseguito, poiché la condizione del for prevede l'uscita solo se j >= 3, il che è evidentemente l'opposto della condizione per entrare nell'if.') && (i < 4); str++) if ( !isvocal(*str) ) { if (i != 1) *(buf++) = *str; i++; } return 0; } }

Comunque, perchè passi le variabili dichiarandole come puntatori e poi utilizzandole come array? Si dovrebbe mantenere l'omogeneità di stile nonostante la possibilità di tipo.
E un altro appunto: il tuo ciclo presume che str contenga almeno tre consonanti prima della fine, e se ce ne sono solo 2 va in loop. Inoltre, il secondo if non viene mai eseguito, poiché la condizione del for prevede l'uscita solo se j >= 3, il che è evidentemente l'opposto della condizione per entrare nell'if.
aaa
12/01/10 18:04
Ti ringrazio