Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Errore struttura dati

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[52] Re: Errore struttura dati

Messaggioda Foto Utentefairyvilje » 7 apr 2014, 16:07

Codice: Seleziona tutto
struct Zone{
    public:
        Zone(int pin0, int pin1, int pin2, int AnalogPin);

        void setPinMatrix(int pin0, int pin1, int pin2, int AnalogPin);
        void initialize();
        void readInput();
        boolean comp();

    private:
        int AnalogPin;
        int pinMatrix[3];
        int firstRead[8];
        int AnalogRead[8];

        static int Matrix[8][3];
};

int Zone::Matrix[8][3]= {
                          {LOW,  LOW,  LOW },
                          {LOW,  LOW,  HIGH},
                          {LOW,  HIGH, LOW },
                          {LOW,  HIGH, HIGH},
                          {HIGH, LOW,  LOW },
                          {HIGH, LOW,  HIGH},
                          {HIGH, HIGH, LOW },
                          {HIGH, HIGH, HIGH}
                    };

Zone::Zone(int pin0, int pin1, int pin2, int AnalogPin){
    pinMatrix[0] = pin0;
    pinMatrix[1] = pin1;
    pinMatrix[2] = pin2;
    AnalogPin = AnalogPin;
}

void Zone::setPinMatrix(int pin0, int pin1, int pin2, int AnalogPin){
    pinMatrix[0] = pin0;
    pinMatrix[1] = pin1;
    pinMatrix[2] = pin2;
    AnalogPin = AnalogPin;
}

void Zone::initialize(){
    for(int i=0; i<3; i++){
       pinMode(pinMatrix[i], OUTPUT);
    }

    readInput();

    for(int j=0; j<8; j++){
     firstRead[j] = AnalogRead[j];
    }
}

void Zone::readInput(){
    for(int i=0; i<8; i++){
       for(int j=0; j<3; j++){
          digitalWrite(pinMatrix[j], Matrix[i][j]);
       }   
       AnalogRead[i] = analogRead(AnalogPin); 
    }
}

boolean Zone::comp(){
    int f=0;

    for(int i = 0;i < 8; i++){
        if(firstRead[i] == AnalogRead[i])f++; 
    }
   
    return (f==8);
}


Questo è il codice un po' riordinato nel suo complesso. Ho scritto un costruttore in base al tuo codice preesistente ma nulla ti vieta di avere un comportamento di default differenziato.
"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
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[53] Re: Errore struttura dati

Messaggioda Foto Utentedaniele1996 » 7 apr 2014, 16:07

lo staticha la stessa funzione che ha in java?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[54] Re: Errore struttura dati

Messaggioda Foto Utentedaniele1996 » 7 apr 2014, 16:09

No, a scuola fsacciamo talmente poco che ci vado per passatempo!
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[55] Re: Errore struttura dati

Messaggioda Foto Utentefairyvilje » 7 apr 2014, 16:10

daniele1996 ha scritto:lo staticha la stessa funzione che ha in java?

Static ha molti significati in C++. In questo contesto, nella dichiarazione di membri statici, il funzionamento è praticamente equivalente.
"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
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[56] Re: Errore struttura dati

Messaggioda Foto Utentedaniele1996 » 7 apr 2014, 16:13

Quindi quella matrice appena creata in un oggetto non verrà ricreata, giusto?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[57] Re: Errore struttura dati

Messaggioda Foto Utentefairyvilje » 7 apr 2014, 16:17

No, è unica, modificabile (non essendo costante) e leggibile da tutti gli oggetti di quel tipo. Viene creata in memoria all'inizio dell'esecuzione e rimane "viva" fino al temine del programma.
Un membro statico non è legato agli oggetti ma al ciclo di vita della classe stessa :)
"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
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[58] Re: Errore struttura dati

Messaggioda Foto Utentedaniele1996 » 7 apr 2014, 16:20

ma dopo che io creo l'oggetto così:
Codice: Seleziona tutto
Zone miaZona(pin1,pin2,pin3,analogpin);


Accedo così:

Codice: Seleziona tutto
miaZona.initialize();

? (è un esempio)

Ottimo, così posso risparmiare ram in quel modo :)
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[59] Re: Errore struttura dati

Messaggioda Foto Utentefairyvilje » 7 apr 2014, 16:21

:ok:
"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
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[60] Re: Errore struttura dati

Messaggioda Foto Utentedaniele1996 » 7 apr 2014, 16:23

In precedenza avevo richiamato i costruttori... ma non sapevo come crearli...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

2
voti

[61] Re: Errore struttura dati

Messaggioda Foto Utentefairyvilje » 7 apr 2014, 16:27

Se vuoi continuare a programmare microcontrollori (e non solo) ti consiglio davvero di studiarti in modo non superficiale il C ed il C++. Procurati un buon manuale, non di arduino e di come programmare per questo o quest'altro microcontrollore, ma un manuale di programmazione C/C++. Una volta imparati puoi usarli ovunque quindi è tutto di guadagnato per il tuo curriculum.
"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
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti