Kod: Zaznacz cały
int main(void)
{
struct dyn_state
{
unsigned int upper : 1;
unsigned int lower : 1;
unsigned int close : 1;
unsigned int open : 1;
unsigned int car : 2;
unsigned int door : 2;
};
union znak
{
struct dyn_state znak_st;
unsigned short znak_val;
};
int i,j;
int door_state[3][4] =
{
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
};
int step_state[3][4] =
{
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
};
int pass_state[3][3] =
{
{0,0,0},
{0,0,0},
{0,0,0}
};
int pass = 0;
int pass_in,pass_out;
FILE *fp;
fp = fopen("./input.dat", "rb");
union znak input = {{}};
do
{
input.znak_val = getc(fp);
printf("
%5d", input.znak_val);
printf(" $$$ %d %d %d %d %d %d", input.znak_st.door, input.znak_st.car, input.znak_st.open, input.znak_st.close, input.znak_st.lower, input.znak_st.upper);
switch (input.znak_val & CAR_MASK) // wybór wagonu //
{
case CAR_0:
wagon(0, input.znak_val, door_state, step_state, pass_state);
break;
case CAR_1:
wagon(1, input.znak_val, door_state, step_state, pass_state);
break;
case CAR_2:
wagon(2, input.znak_val, door_state, step_state, pass_state);
break;
};
}
while (input.znak_val != CAR_MASK); // to jest warunek na nastepny przystanek //
pass += *(*(pass_state)) + *(*(pass_state+1)) + *(*(pass_state+2));
pass_in = *(*(pass_state)+1) + *(*(pass_state+1)+1) + *(*(pass_state+2)+1);
pass_out = *(*(pass_state)+2) + *(*(pass_state+1)+2) + *(*(pass_state+2)+2);
printf("
%d %d %d
", pass, pass_in, pass_out);
*(*(pass_state)+1) = 0;
*(*(pass_state+1)+1) = 0;
*(*(pass_state+2)+1) = 0;
*(*(pass_state)+2) = 0;
*(*(pass_state+1)+2) = 0;
*(*(pass_state+2)+2) = 0;
}
return 0;
}
While ma obejmować kod od linii 50 do linii 86...
Dziękuję z góry za pomoc!