Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Matrice [C / C++]

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

2
voti

[31] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 1:22

Ok. Un approccio senza matrice potrebbe essere il seguente.

Codice: Seleziona tutto
//uint8_t è un alias per unsigned char di fatto.

void EnableLine(uint8_t line_n){
    if(line_n>=8){
        //Qui va deciso il comportamento in caso di errore nei dati di ingresso.
        //Dipende dalla tua applicazione specifica
    }
   else{
          uint8_t p_1,p_2,p_3;

          p_1=line_n&1;           //Il primo bit del numero è il valore della linea p_1

          line_n=line_n>>1;      //Shift del numero di una posizione a "destra".
          p_2=line_n&1;           //Il secondo bit del numero (diventato il primo dopo >>1) è il valore della linea p_2

          line_n=line_n>>1;       //Shift del numero di una posizione a "destra".
          p_3=line_n&1;            //Il terzo bit del numero (diventato il primo dopo >>1) è il valore della linea p_3

          //Ed ora fa quello che devi con questi tre valori, p_1, p_2 e p_3

    }
}


Se non ti sono chiari gli operatori bit a bit e di shift ti consiglio di leggere come funzionano perché molto usati.
Le tre variabili poi non sono nemmeno necessarie, quindi in memoria (almeno potenzialmente) non richiede nessun dato se non il parametro passato alla funzione.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

0
voti

[32] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 1:27

Si, gli operatori bit a bit li conosco, e so a cosa servono... non ho mai avuto l'occasione di usarli nei miei programmi... Grazie :)
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

1
voti

[33] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 1:33

Bene, allora hai trovato un tipico esempio :)
Di niente :D
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

1
voti

[34] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 1:38

ora ho capito come funziona!
Avendo per esempio 5 ( 1 0 1)

-> 1 0 1 & 0 0 1 = 0 0 1 (HIGH)
-> 1 0 1 >> 0 0 1 = 0 1 0
-> 0 1 0 & 0 0 1 = 0 0 0 (LOW)
-> 0 1 0 >> 0 0 1 = 0 0 1
-> 0 0 1 & 0 0 1 = 0 0 1 (HIGH)
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

1
voti

[35] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 1:39

Esattamente :mrgreen: !
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

0
voti

[36] Re: Matrice [C / C++]

Messaggioda Foto Utentedaniele1996 » 20 apr 2014, 1:41

volendo potrei anche usare il char, al posto di uint8_t giusto?
Avatar utente
Foto Utentedaniele1996
570 2 7 11
Sostenitore
Sostenitore
 
Messaggi: 1143
Iscritto il: 29 ago 2011, 11:29

1
voti

[37] Re: Matrice [C / C++]

Messaggioda Foto UtenteTardoFreak » 20 apr 2014, 1:41

Che bello questo forum.
Quando sei cotto arrivano gli amici! :ok:

Un plauso (e punti meritati) a Foto Utentefairyvilje :ok:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[38] Re: Matrice [C / C++]

Messaggioda Foto UtenteTardoFreak » 20 apr 2014, 1:42

uint8_t corrisponde a unsigned char.
Senza segno le operazioni sono (a volte) più veloci.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,4k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15764
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[39] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 1:44

char te lo sconsiglio perché ammetterebbe numeri negativi e imporrebbero un controllo ulteriore. Puoi usare unsigned char, uint8_t è semplicemente un modo più breve abbastanza comune per chiamarlo, e assicura (non è sempre vero) che si stia lavorando con qualcosa di un byte.

Codice: Seleziona tutto
typedef unsigned char uint8_t

E' l'istruzione che genera l'alias.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

1
voti

[40] Re: Matrice [C / C++]

Messaggioda Foto Utentefairyvilje » 20 apr 2014, 1:47

TardoFreak ha scritto:Quando sei cotto arrivano gli amici! :ok:

Troppo gentile, ma io di microcontrollori sono una capra in realtà. :mrgreen:
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
11,4k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 2452
Iscritto il: 24 gen 2012, 19:23

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti