Oppure

Loading
09/05/12 19:55
beeonbit
Ah! Goblin mi ha preceduto con una bella modifica, mi sarei divertito a riprendere a scrivere un pò di codice :D Comunque il passaggio di parametri
int argc, char *argv[]
non è indispensabile nel tuo caso: è utilizzato per immettere dei parametri al richiamo del programma,
argc
è il numero di parametri e
argv
un puntatore al vettore dove saranno registrati i parametri. Mentre
break
è utilizzato per uscire da un ciclo o da uno switch.
Avrei strutturato il tutto con uno switch per il menù e per uscire dal programma semplicemente in questo modo:
 case 3:     
                             break;
                        }
                        
                        printf(" \n");
                }while (z!=3);    
    }

Immagino che la tua richiesta sia non altro che un compito a casa di scuola vero? :rofl: quindi non scrivo il codice intero.
aaa
09/05/12 20:00
ancestral
Grazie anche a te beeonbit della spiegazione, ora sono apposto.
Infatti hai indovinato :D è un programma assegnato per casa.
Grazie a tutti.
Problema risolto!
aaa
09/05/12 20:26
Goblin
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
int main(int argc, char *argv[])

3)cosa è questo:
system("PAUSE");     
  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

Postato originariamente da ancestral:

2)cosa è questo:
{break;}




L'uscita dal loop :)

Postato originariamente da ancestral:

4)Quando finisco l'esecuzione del programma e digito 3, prima di chiudere il programma mi esce
sh: 1: PAUSE: not found


Probabilmente il tuo compilatore non riconosce il comando

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