|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
[C] Programma con o senza vocali/consonanti
Buongiorno/Buonasera! Ho da svolgere due esercizi molto similari tra loro. In parole povere, nel primo devo far in modo che il programma restituisca il testo inserito dall'utente, senza le vocali; il secondo, è il contrario, cioè che mi restituisca solo le vocali e non le consonanti.
Io son già riuscito a far in modo che il programma restituisca tutto il testo che gli inserisco, però da qui in avanti non so che fare Codice:
#include <stdio.h>
#define MAXBC 123
int main()
{
char buf[MAXBC];
int i, xc;
for( i = 0; (i < (MAXBC+1)) && ((xc = getchar()) != EOF) && (ch != '\n'); i++ )
buf[i] = (char)xc;
buf[i] = '\0';
printf( "%s\n", buf );
return 0;
}
Codice:
if (tolower(xc) == 'a') Gentilmente qualcuno può aiutarmi?
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Nel mentre ho trovato anche questa soluzione per leggere tutti i caratteri con getchar e putchar
Codice:
#include <stdio.h>
int main()
{
int xc;
while ((xc=getchar()) != EOF)
{
putchar(xc);
}
return 0;
}
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
Potresti creare un array con le vocali. Quindi inserire un ciclo for che controlla se cio' che ottieni con il getchar() e' o no contenuto nell'array (quindi controlla se e' una vocale).
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Scusami, ma potresti spiegarmi cosa intendi?
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 250
|
Ottieni il carattere con getchar(). Quindi lo vai a mettere in un for che lo confronta ad uno ad uno coi vari elementi dell'array contenente a, e, i, o, u. Quindi restituisce il carattere solo se e' diverso da questi elementi
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Ok, però come si farebbe?
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Ho capito che per definire l'array dovrei fare
Codice:
char vocali[5]={a,e,i,o,u};
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Basta un if in cui controlli se tolower(carattere letto) è fra a, e, i, o, u.
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
E infatti, rovistando in tutto il materiale che ho a disposizione, l'esercizio in cui non mi doveva dare in output l'ho fatto così
Codice:
#include <stdio.h>
int main()
{
int xc;
int n;
n = 0;
while ((xc = getchar()) != EOF)
{
n++;
if ((tolower(xc) == 'b') || (tolower(xc) == 'c') || (tolower(xc) == 'd') || (tolower(xc) == 'f') || (tolower(xc) == 'g') ||
(tolower(xc) == 'h') || (tolower(xc) == 'l') || (tolower(xc) == 'm') || (tolower(xc) == 'n') || (tolower(xc) == 'p') ||
(tolower(xc) == 'q') || (tolower(xc) == 'r') || (tolower(xc) == 's') || (tolower(xc) == 't') || (tolower(xc) == 'v') ||
(tolower(xc) == 'z') || (tolower(xc) == 'w') || (tolower(xc) == 'y') || (tolower(xc) == 'j') || (tolower(xc) == 'k') ||
(tolower(xc) == 'x'))
putchar(xc);
}
return 0;
}
Codice:
#include <stdio.h>
int main()
{
int xc;
int n;
n = 0;
while ((xc = getchar()) != EOF)
{
n++;
if ((xc == 'a') || (xc == 'e') || (xc == 'i') || (xc == 'o') || (xc == 'u'))
putchar(xc);
}
return 0;
}
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' il primo che è errato
Ti dico solo che il primo lo puoi fare con la stessa condizione del secondo leggermente modificata. |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Si infatti, mi sono sbagliato, volevo intendere il primo esercizio.
In che senso sarebbe errato? Il secondo praticamente è uguale al primo, però non c'è il controllo sulle maiuscole delle vocali...
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Te l'ho detto, non è proprio errato, è prolisso.
Puoi utilizzare la stessa condizione (inserendo anche il tolower magari) leggermente modificata anche nel primo. |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Nel secondo posso inserire il tolower alle vocali. Lo so che è abbastanza lungo, ma non saprei un'altra maniera per accorciarlo..
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prendi la stessa identica condizione del secondo sulle vocali ed utilizzala nel primo al posto di quella sulle consonanti. Ovviamente serve una leggera modifica.
|
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Però facendo così si prende il controllo sulle lettere maiuscole, vero? e nn è che si accorcia tanto...
Comunque dovrebbe essere così Codice:
#include <stdio.h>
int main()
{
int xc;
int n;
n = 0;
while ((xc = getchar()) != EOF)
{
n++;
if ((tolower(xc) == 'a') || (tolower(xc) == 'e') || (tolower(xc) == 'i') || (tolower(xc) == 'o') || (tolower(xc) == 'u'))
putchar(xc);
}
return 0;
}
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quasi, così è identico al secondo. A me sembra molto più corta la condizione nell'if.
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
Si, praticamente si, ho solo aggiunto il controllo dei tolower; altro non saprei fare in più
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Se io scrivo: Codice:
if(condizione)
{
//stampo le vocali
}
else
{
//stampo le consonanti
}
Codice:
if(nuova condizione)
{
//stampo le consonanti
}
else
{
//stampo le vocali
}
|
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
|
In che senso non stampa tutte le consonanti? L'ho provato e in output mi da tutto..
Non ho capito cosa mi vuoi dire..
__________________
IMPOSSIBLE IS NOTHING |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Ti faccio un esempio più concreto: Codice:
if(a == b && c != d)
{
faccioQualcosa();
}
else
{
faccioQualcosaltro();
}
Codice:
if(.....)
{
faccioQualcosaltro();
}
else
{
faccioQualcosa();
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:23.




















