Кого Вы пытаетесь убедить? Инженеры или менеджер? При попытке убедить своих коллег инженера, что я думаю, что Ваш лучший выбор состоит в том, чтобы обратиться к их требованию сделать высококачественную часть программного обеспечения. Существуют многочисленные исследования, которые показывают, что это находит ошибки, и если они заботятся о выполнении хорошего задания, которое должно быть достаточно для них.
, При попытке убедить управление, необходимо будет, скорее всего, сделать некоторое обоснование стоимости/преимущества, говоря, что стоимость дефектов, которые будут не обнаружены, больше, чем стоимость записи тестов. Обязательно включайте intagable затраты также, такие как потеря потребительского доверия, и т.д.
int checkSum(const std::vector<int>& code) const
{
if (code.size() < 8) return false;
for( SIZE_T i = 0; i< code.size(); i++ )
{
if( code[i] < 0 ) return false;
}
int sum1 = code[1] + code[3] + code[5]
int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);
int checksum_value = sum1 + sum2;
int checksum_digit = 10 - (checksum_value % 10);
if (checksum_digit == 10) checksum_digit = 0;
return checksum_digit;
}
Алгоритм описан в этой статье википедии о EAN , обратите внимание, что EAN-8 вычисляется так же, как EAN-13.
Вот рабочий пример из http://www.barcodeisland.com/ean8.phtml :
Предполагая, что мы хотим закодировать 7-значное сообщение «5512345», мы бы вычислили контрольную сумму следующим образом:
Barcode 5 5 1 2 3 4 5
Odd/Even Pos? O E O E O E O
Weighting 3 1 3 1 3 1 3
Calculation 5*3 5*1 1*3 2*1 3*3 4*1 5*3
Weighted Sum 15 5 3 2 9 4 15
Итого 15 + 5 + 3 + 2 + 9 + 4 + 15 = 53. 7 необходимо добавить к 53, чтобы получить число, делимое на 10, таким образом, контрольная сумма равна 7, а завершенное значение штрих-кода - «55123457. ".
string code="55123457";
int sum1 = code[1] + code[3] + code[5]
int sum2 = 3 * (code[0] + code[2] + code[4] + code[6]);
int checksum_value = sum1 + sum2;
int checksum_digit = 10 - (checksum_value % 10);
if (checksum_digit == 10)
checksum_digit = 0;