-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvin_check_sum.h
26 lines (25 loc) · 1.8 KB
/
vin_check_sum.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef vin_control_sum_h
#define vin_control_sum_h
#include <iostream>
#include <cstring>
#include <map>
#include <vector>
#define VIN_LENGTH 17 //длина строки с ВИН-кодом по стандарту ISO
const std::map<char,int> replaceMap = {
{'1',1},{'2',2},{'3',3},{'4',4},{'5',5},
{'6',6},{'7',7},{'8',8},{'9',9},{'0',0},
{'A',1},{'B',2},{'C',3},{'D',4},{'E',5},
{'F',6},{'G',7},{'H',8},{'J',1},{'K',2},
{'L',3},{'M',4},{'N',5},{'P',7},{'R',9},
{'S',2},{'T',3},{'U',4},{'V',5},{'W',6},
{'X',7},{'Y',8},{'Z',9},{'a',1},{'b',2},
{'c',3},{'d',4},{'e',5},{'f',6},{'g',7},
{'h',8},{'j',1},{'k',2},{'l',3},{'m',4},
{'n',5},{'p',7},{'r',9},{'s',2},{'t',3},
{'u',4},{'v',5},{'w',6},{'x',7},{'y',8},{'z',9}
};//ассоциативный массив соответствия замены буквенных символов на их числовое представление на первом этапе вычисления контрольной суммы
const std::vector<int> multiplyVec{8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2};//вектор, на который будет умножаться полученная последовательность на втором этапе
bool checkVin(char*str);//проверить строку на соответствие VIN-коду по стандарту ISO 3779
std::vector<int> getReplace(char*str);//получить набор чисел после замены букв в VIN-коде цифрами из ассоциативного массива
int getCheckSum(std::vector<int>v);//получить контрольную сумму из вектора чисел, перемноженного на константый вектор, представленный в этом заголовочном файле
#endif