Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Programma gestione lampadine [C]
Forum - C/C++ - Programma gestione lampadine [C] - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
ancestral (Normal User)
Newbie


Messaggi: 5
Iscritto: 08/05/2012

Segnala al moderatore
Postato alle 22:00
Mercoledì, 09/05/2012
Grazie anche a te beeonbit della spiegazione, ora sono apposto.
Infatti hai indovinato :D è un programma assegnato per casa.
Grazie a tutti.
Problema risolto!

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 22:26
Mercoledì, 09/05/2012
Testo quotato

Postato originariamente da ancestral:

Grazie mille Goblin!!!!!
Sei il mio salvatore.... ahahah adesso mi metto a trovarle tutte ahahah .... mi sa che finirò l'anno possimo.
Comunque, apparte le battute, vorrei chiederti delle cose:
1) cosa vuol dire questo passaggio di parametri
Codice sorgente - presumibilmente C/C++

  1. int main(int argc, char *argv[])


3)cosa è questo:
Codice sorgente - presumibilmente C/C++

  1. system("PAUSE");    
  2.   return 0;





Uso come compilatore Dec C++ e quando creo un nuovo progetto di default mi crea un pattern vuoto con i comandi sopra riportati

Testo quotato

Postato originariamente da ancestral:

2)cosa è questo:
Codice sorgente - presumibilmente Plain Text

  1. {break;}






L'uscita dal loop :)

Testo quotato

Postato originariamente da ancestral:

4)Quando finisco l'esecuzione del programma e digito 3, prima di chiudere il programma mi esce
Codice sorgente - presumibilmente C/C++

  1. sh: 1: PAUSE: not found




Probabilmente il tuo compilatore non riconosce il comando

Testo quotato

Postato originariamente da ancestral:
Scusatemi se vi rompo ancora, ma oltre alla soluzione, mi interessa di più capire il funzionamento e la logica che c'è dietro



Allora, la logica è l'aritmetica binaria, come dovresti sapere, visto che l'implementazione, almeno un accenno, c'e' anche nel tuo sorgente originale.

Tenuto conto che questa è roba che ho studiato circa 20-30 anni fa, mi scuso per qualche imprecisione.

La variabile c contiene la somma del valore decimale dello stato delle lampadine, effettuando un AND logico con la rispettiva posizione binaria della lampadina ho un ritorno del suo stato.
Un semplice esempio:

le 8 lampadine rappresentano i BIT di un BYTE, "00000000" il range di valori è da 0 a 255.

10100000 in questo caso abbiamo acceso le lampadine 1 e 3 il cui valore da binario a decimale è 5 eseguendo una AND LOGICA su tutti i valori del byte ho come ritorno che solo le lampadine 1 e 3 sono accese

per meglio comprendere metto in verticale
1=1
0=2
1=4
0=8
0=16
0=32
0=64
0=128

la somma dei bit è 1+4 = 5

10100000 AND
10000000 =
10000000

dunque in forma decimale l'espessione
(5 and 1) = 1

10100000 AND
00100000 =
00100000

(5 and 4) = 4

tutti i restanti test mi daranno uno 0

10100000 AND
01000000 =
00000000

(5 and 2)=0

Come si nota il risultato della AND ritorna il valore testato da qui nasce l'implementazione:
d = (char)pow(2, h); // mi ritorna la posizione da testare
if ((c & d) == d) and logica che mi dice se il bit è acceso (true) o spento (false) in base al risultato mi comporto di conseguenza

poniamo c=7
11100000  (1+2+4)
le prime 3 lampadine sono accese, se spengo la 2 (01000000) avrò: 10100000 c=5.

e così  via
Spero di essere stato chiaro, :blush:


Ibis redibis non morieris in bello
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo