Salve a tutti,
mi sono appena registrato e chiedo scusa se ho sbagliato qualcosa.
Io avrei bisogno di un aiutino in questo programma in C:
Dovrei creare un programma che mi gestisca 8 lampadine con una variabile "c" come char che, lavorando su 8 bit mi consente di andare a modificare il valore di ognuno di essi grazie ad una maschera e agli | o & .
Non capisco dove sbaglio, ma a quanto pare, l'inizializzazione a 0 di c non mi riesce in quanto, se stampo il valore, mi esce vuoto; poi se al primo avvio digito 0 per accendere una lampadina a mia scelta (le quali, teoricamente dovrebbero essere a 0), mi dice "Hai spento la lampadina";
non capisco dove ho sbagliato.
Eccovi il codice
#include <stdio.h>
main ()
{
char c;
int z, n, j, i;
char mask;
//c=0b0000;
i=0;
c=0;
do
{
printf("inserisci 1 se vuoi accendere, 0 se vuoi spegnere, 2 se vuoi visualizzare \n");
scanf("%d", &z);
if (z==1)
{
mask=1;
printf("inserisci il numero della lampadina che vuoi accendere \n");
scanf("%d", &n);
mask=mask<<(n-1);
c=c|mask;
if (c==0)
{
printf("La lampadina è gia accesa \n");
}
else
{
printf(" Hai acceso la lampadina \n");
}
}
else
{
if (z==0)
{
mask=0;
printf("inserisci il numero della lampadina che vuoi spegnere \n");
scanf("%d", &n);
mask=mask<<(n-1);
c=c&mask;
if (c!=0)
{
printf("La lampadina è gia spenta \n");
}
else
{
printf("Hai spento la lampadina \n");
}
}
else
{
mask=0;
for(j=1;j<9;j++)
{
mask=mask<<(j-1);
c=c&mask;
if (c==1)
{
printf("1");
}
else
{
printf("0");
}
}
}
}
printf(" Digita 0 se vuoi ripetere l'esecuzione, altrimenti digita 1 \n");
scanf("%d", &i);
}
while (i==0);
}
//char x=0xff;
//char x=01011111b;