|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
[C++] Evitare ripetizioni nell'if ...
Salve.
Ho un if di questo tipo: Codice:
if(cognome[ind1] == 'a' || cognome[ind1] == 'e' ||cognome[ind1] == 'o' || cognome[ind1] == 'u' ... ) // per tutte le vocali Ho provato a fare questo ma pur non dandomi errori di sintassi non mi da il risultato voluto. Codice:
if(cognome[ind1] == 'a' || 'e' || 'o' || 'u' ... ) Non so ditemi voi cosa è meglio. A presto! Grazie! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 382
|
una soluzione per accorciare soltanto la lunghezza del codice può essere
Codice:
char c = cognome[ind1];
if ( c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ){...}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Una funzione. O una macro:
Codice:
#define isvowel(c) ((c) == 'a' || (c) == 'e' || (c) == 'i' || (c) == 'o' || (c) == 'u')
/*
* [...]
*/
if (isvowel(cognome[ind1])) {
faiQualcosaDiUtile();
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Inoltre userei una variabile temporanea. Evita la valutazione dell'operator[] piu' di una volta.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
grz mille delle risposte! ... la soluzione di il-pollo credo sia la migliore ma già avevo pensato d fare come lui... il fatto è ke cercavo qlcs di più sintetico...
ok dai vedo cosa inventarmi |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Infatti il primo suggerimento era “Una funzione.”, ma magari così esplora anche il mondo delle macro.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Anche se in questo caso è una soluzione eccessiva, potresti pensare ad una mappa di puntatori a dei funtori.
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2008
Messaggi: 51
|
Codice:
char vocali[] = {'a', 'e', 'i', 'o', 'u'};
bool vocale = false;
for (int i = 0; i < 5; i++)
if (cognome[ind1] == vocali[i])
vocale = true;
Ultima modifica di Noixe : 16-02-2010 alle 12:05. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Si', ma non ha senso esplorare le macro per quelle cose che si fanno normalmente per le funzioni. Meglio lasciarle per quelle dove servono informazioni che si hanno solo a tempo di compilazione (e.g. header guards, salvataggio numero di linea, embedding di un argomento in una stringa ... )
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:05.




















