Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Estrarre consonanti o vocali
Forum - C/C++ - Estrarre consonanti o vocali

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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??

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:35
Lunedì, 11/01/2010
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à.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:38
Lunedì, 11/01/2010
Si...Potresti faremi un esempio

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6380
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:43
Lunedì, 11/01/2010
Un semplice esempio, per ora, puo' essere quello di una if del tipo

Codice sorgente - presumibilmente C/C++

  1. if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u')
  2. {
  3.   /* vocale */
  4. }
  5. else
  6. {
  7.   /* consonante */
  8. }



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à.
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:54
Lunedì, 11/01/2010
Niente sara la stanchezza ma non ci riesco ora :d:d:d
ci riprovo domani :d:d:d
Grazie per l'aiuto

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:09
Lunedì, 11/01/2010
Per il nome come faccio a saltare la 2 consonante?????????

Codice sorgente - presumibilmente C++

  1. int codcogn(const char *str, char *buf){
  2.     int i,j;
  3.     if (!str || !buf) {
  4.         return -1;
  5.     }
  6.     for (i=j=0;j < 3; i++) {
  7.         if (!isvocal(str[i])) {
  8.             buf[j] = str[i];
  9.             j++;
  10.         }
  11.          
  12.     if (j<3){    
  13.     for (i=j=1;j < 3; i++) {
  14.         if (isvocal(str[i])) {
  15.             buf[j] = str[i];
  16.             j++;
  17.         }
  18.         }
  19.     }
  20. }
  21.     return 0;
  22. }


Ultima modifica effettuata da il 11/01/2010 alle 22:10
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:58
Martedì, 12/01/2010
Saltare sempre la seconda consonante? Basta controllare: così prende tutte le consonanti tranne la seconda:
Codice sorgente - presumibilmente C++

  1. int codcogn(const char *str, char *buf)
  2. {
  3.     int i;
  4.  
  5.     if (!str || !buf)
  6.         return -1;
  7.    
  8.     for(i = 0; (*str != '\0') && (i < 4); str++)
  9.       if ( !isvocal(*str) )
  10.       {
  11.         if (i != 1)
  12.           *(buf++) = *str;
  13.         i++;
  14.       }
  15.  
  16.     return 0;
  17. }
  18. }


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.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 19:04
Martedì, 12/01/2010
Ti ringrazio

PM Quote
Avatar
evilmight (Member)
Expert


Messaggi: 206
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:21
Martedì, 12/01/2010
puoi anche lavorare con una semplice regex ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo