PDA

View Full Version : [C] alternativa a catena if else: matrice


redcloud
21-12-2005, 17:58
Salve, devo fare dei controlli su delle stringhe e dovrei verificare che un carattere sia uguale a un carattere specifico o a un set di caratteri specifici. Siccome le combinazioni sono parecchie, mi chiedevo se secondo voi è possibile utilizzare una matrice per mappare queste combinazioni, senza dover scrivere una lunga sequenza di if else. Ho visto utilizzare questa tecnica da un prof. universitario qualche tempo fa ma non ricordo bene come funzionava la storia :D Ricordo soltanto che metteva valori 1 o 0 nella matrice a seconda del risultato della condizione e poi moltiplicava alcune di queste condizioni (o le sommava). Insomma credo che facesse lo stesso che si può fare con if-else ma in maniera più compatta. Consigli?

EnderIII
22-12-2005, 01:52
Forse si trattava di una TABELLA DI VERITA' (cerca su google).

sottovento
22-12-2005, 09:09
Se devi comparare un carattere con un altro od un insieme, uno switch ti risolverebbe la situazione.
Evidentemente la situazione e' piu' complessa, altrimenti avresti gia' fatto cosi'... potresti provare a fare un esempio?

High Flying
Sottovento

redcloud
22-12-2005, 10:16
Se ho un carattere A, devo cercare A, se ho B devo cercare C o D, se ho C devo cercare F o D, se ho D devo cercare B o D ma non E e via dicendo (sono combinazioni precise su tutte le lettere dell'alfabeto).

sottovento
22-12-2005, 13:22
Direi che lo puoi davvero risolvere con una matrice, ottenendo oltretutto una soluzione elegante.

potresti organizzarti cosi': accedi alle righe con il carattere da te letto (eventualmente car - 'A' per partire da zero). La riga (o colonna, come preferisci) selezionata conterra' tutti i caratteri che ti interessa riconoscere

High Flying
Sottovento

redcloud
22-12-2005, 13:33
Beh si c'avevo pensato però il discorso nn era esattamente questo. Il prof poneva i caratteri validi a 1, quelli nn validi a 0 e quelli incerti con valori frazionari a seconda dei valori assumibili (se la a può essere B o C, il valore era 0.5). Dopodichè moltiplicava i valori delle celle e riusciva a definire le soluzioni a seconda del risultato.

redcloud
25-12-2005, 18:01
Up help

andbin
25-12-2005, 18:11
Up helpCiao, intanto auguri! :)
:stordita: Io personalmente non ho ben capito il problema ... non è che potresti fare un esempio pratico?

17Qwerty71
25-12-2005, 20:37
ma quelli invalidi da quelli incerti di cosa differiscono? :confused:

redcloud
26-12-2005, 16:15
Credo di aver risolto, a giorni posterò la soluzione. Grazie a tutti.