PDA

View Full Version : [C++] operatore "OR (|)", espressioni equivalenti


Albitexm
06-06-2010, 15:02
Devo verificare che in un gruppo di 6 variabili di tipo int, almeno una assuma
un valore uguale a una variabile di confronto. Ossia:
If a==x OR b==x OR c==x OR d==x OR e==x OR f==x
{y=1}

Ho pensato di risolvere creando delle espressioni OR "concatenate", ovvero:
if (a==x OR b==x) {k=1}, if (c==x OR d==x) {w=1}, if (e==x OR f==x) {z=1},
if (k==1 OR w==1) {r=1}, if (r==1 OR z==1) {Y=1}

Domanda: non c'è un modo più semplice per risolvere l'espressione sopra?
C'è una funzione che potrebbe essermi utile a scrivere in modo alternativo
questa espressione?

DanieleC88
06-06-2010, 21:50
Mah, potresti farti una funzione che accetta un numero arbitrario di argomenti in input dello stesso tipo (vedi <stdarg.h (http://en.wikipedia.org/wiki/Stdarg.h)>) e con un ciclo controlla la loro "validità" come meglio credi.

Ma ne vale la pena?
Quanti controlli fai di questo tipo che sei spinto a farti addirittura una funzione dedicata? :D

Magari cerca di riorganizzare il codice per semplificarlo il più possibile.
ciao ;)

Albitexm
07-06-2010, 02:02
.

Ma ne vale la pena?
Quanti controlli fai di questo tipo che sei spinto a farti addirittura una funzione dedicata?


Il problema è che io sto scrivendo il codice "serialmente", ma pensando a una
successiva trasformazione di esso in "parallelo". Usando le istruzioni del "PPL"
di VC++ 2010. In particolare cerco di capire se potrò usare "parallel_for" e
"parallel_for_each". Ma non ho ancora capito se posso includere nei loop
espressioni di questo tipo o lavorano solo su dati unari di variabili int.
Ma pensando alle prestazioni finali mi torna in mente la tua affermazione: "ma
ne vale la pena?". La Microsoft afferma che con queste librerie si può parallelizzare il propio codice senza modificarlo. Ma io son giunto alla conclusione che con riguardo alle prestazioni, è impossibile non modificare il codice. :muro: