Колишня школярка звернулась із задачею на Сі - є функція, на вхід якої передається вказівник на текстовий рядок, на виході маємо 1, якщо рядок той що треба, -1 - помилковий рядок, 0 - невідповідність даті (????). Який рядок слід передати, щоб отримати на виході 1? int check(char *code)
{
int value = 0;
int i;
char crc1 = 0;
char crc2 = 0;
char codeddate[4];
if(strlen(code) != 6)
return -1;
for(i=3; i>=0; i--)
{
value |= code[i] & 0x07;
value = value << 3;
crc1 = (crc1 ^ code[i]) & 0x07;
}
value = value >> 3;
crc1 = 0x30 | crc1;
crc2 = 0x30 | (code[2] ^ code[3]);
if(crc1 != code[4])
return(-1);
if(crc2 != code[5])
return(-1);
codeddate[3] = 0x30 | (value & 0x000F);
value = value >> 4;
codeddate[2] = 0x30 | (value & 0x0001);
value = value >> 1;
codeddate[1] = 0x30 | (value & 0x000F);
value = value >> 4;
codeddate[0] = 0x30 | (value & 0x0003);
codeddate[4] = '\0';
if(atoi(codeddate) + 200 >= atoi(BUILD_DATE))
return(1);
else
return(0);
}