Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-12-2009, 16: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, 16: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, 17: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, 09: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, 10: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, 10: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, 15: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, 16: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, 16: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, 16: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, 17: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, 17: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, 17: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, 17: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, 17: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, 17: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, 17: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, 17: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, 18: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, 18: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


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
Gli agenti AI stanno superando i limiti:...
Con SAS Viya, gli agenti IA passano dall...
OpenAI prepara 'o', un assistente sempre...
Fra coupon e sconti al check-out, ecco t...
Ninja Foodi MAX 14 in 1 a 329,99€: la mu...
Dario Amodei invitato a cena privata da ...
Poste Italiane sale all'85,82% di TIM: o...
FRITZ!Box 6820 LTE a 59,98€: il router 4...
Minecraft introduce una nuova dimensione...
Grok 4.6, Claude Fable 5.1 e GPT-6 Astra...
Apple: condanna da 5,7 miliardi di dolla...
Halo potrebbe ripartire da zero con il p...
A 200€ (sconto al check-out) è il...
899€, ci sono 2 Smart TV OLED da 55 poll...
Huawei Mate 90, il lancio è ormai...
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: 11:09.


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