Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale
Nelle ultime settimane abbiamo provato la Corsair Vanguard Air 99 Wireless, una tastiera tecnicamente da gaming, ma che in realtà offre un ampio ventaglio di possibilità anche al di fuori delle sessioni di gioco. Flessibilità e funzionalità sono le parole d'ordine di una periferica che si rivolge a chi cerca un prodotto capace di adattarsi a ogni esigenza e ogni piattaforma
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-12-2009, 17:26   #1
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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;
}
Pensato di fare un controllo nel for così
Codice:
if (tolower(xc) == 'a')
però poi non so cosa fare per non farla riscrivere...
Gentilmente qualcuno può aiutarmi?
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2009, 17:54   #2
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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;
}
ma comunque non so come andare avanti
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2009, 18:46   #3
blackgin
Member
 
L'Avatar di blackgin
 
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).
blackgin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 10:28   #4
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
Scusami, ma potresti spiegarmi cosa intendi?
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 11:04   #5
blackgin
Member
 
L'Avatar di blackgin
 
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
blackgin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 11:29   #6
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
Iscritto dal: Apr 2005
Città: Prov. di Torino
Messaggi: 164
Ok, però come si farebbe?
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 16:06   #7
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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};
però, dopo averlo definito, come faccio a metterlo in un for in modo tale che mi controlli le lettere?
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 17:09   #8
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 17:34   #9
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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;
}
e l'altro che mi deve far solo vedere le vocali così

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;
}
e così dovrebbero essere giusti. Mi chiedevo solo se c'era un'altra maniera per fare il secondo esercizio, limitando un pò le operazioni che il programma doveva eseguire, al posto degli ||..
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 17:51   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' il primo che è errato Anzi, più che errato troppo prolisso.

Ti dico solo che il primo lo puoi fare con la stessa condizione del secondo leggermente modificata.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:01   #11
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:05   #12
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:12   #13
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:24   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Cadetto Entusiasta Guarda i messaggi
Nel secondo posso inserire il tolower alle vocali. Lo so che è abbastanza lungo, ma non saprei un'altra maniera per accorciarlo..
Prendi la stessa identica condizione del secondo sulle vocali ed utilizzala nel primo al posto di quella sulle consonanti. Ovviamente serve una leggera modifica.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:39   #15
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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;
}
premetto che non l'ho provato; se ho capito bene, è così che intendi?
__________________
IMPOSSIBLE IS NOTHING
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:43   #16
cionci
Senior Member
 
L'Avatar di cionci
 
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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:44   #17
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 18:49   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Cadetto Entusiasta Guarda i messaggi
Si, praticamente si, ho solo aggiunto il controllo dei tolower; altro non saprei fare in più
Così però non stampa tutte le consonanti.

Se io scrivo:

Codice:
if(condizione)
{
   //stampo le vocali
}
else
{
   //stampo le consonanti
}
Che operazione devo fare su "condizione" per fare in modo di poter scrivere:
Codice:
if(nuova condizione)
{
   //stampo le consonanti
}
else
{
   //stampo le vocali
}
Mantenendo la stessa identica funzionalità del codice ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 19:04   #19
Cadetto Entusiasta
Member
 
L'Avatar di Cadetto Entusiasta
 
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
Cadetto Entusiasta è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2009, 19:20   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Cadetto Entusiasta Guarda i messaggi
In che senso non stampa tutte le consonanti? L'ho provato e in output mi da tutto..
Volevo dire che in quel modo stampa tutte le consonanti, ma non le vocali.

Ti faccio un esempio più concreto:
Codice:
if(a == b && c != d)
{
   faccioQualcosa();
}
else
{
   faccioQualcosaltro();
}
Scrivimi la condizione per cui il codice sotto sia equivalente a quello sopra:
Codice:
if(.....)
{
   faccioQualcosaltro();
}
else
{
   faccioQualcosa();
}
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
Starfield arriva su PS5: data ufficiale,...
iPad Air 13" (M4) scende di prezzo: -100...
Oracle annuncia Java 26 con il Java Veri...
OPPO Find N6 è ufficiale: sottile...
Influencer sotto controllo Agcom: arriva...
Scontro in OpenAI sul ChatGPT per adulti...
Apple Watch Series 11 a 349€ e altri int...
Starlink rinnova i piani residenziali in...
POCO X8 Pro e Pro Max ufficiali: potenza...
Jensen Huang propone i token come nuovo ...
Realme 16 Pro e 16 Pro+ tra i più...
Dall'enciclopedia all'algoritmo: Encyclo...
Il CEO di Epic Games Tim Sweeney ha comp...
PSSR aggiornato su PS5 Pro: Sony svela i...
Scope elettriche low cost a prezzo strac...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v