#include <stdio.h> #include <stdlib.h> #include <string.h> #define INPUTLEN 27 int main() { char szlaszam[INPUTLEN]; int o, i, digit, sum, cs, cc; int mul[] = {9, 7, 3, 1, 9, 7, 3}; printf("GIRO számlaszám 00000000-00000000-00000000 alakban: "); fgets(szlaszam, INPUTLEN, stdin); for (o = 0; o < 19; o += 9) { sum = 0; for (i = 0; i < 7; i++) { digit = szlaszam[o + i] - '0'; sum += digit * mul[i]; } cs = szlaszam[o + 7] - '0'; cc = 10 - (sum % 10); printf("checksum: stored = %d vs calculated = %d -- %sVALID\n", cs, cc, ((cs == cc) ? "" : "IN")); } return 0; }
Az adószám ellenőrzése is tök ugyanez 🙂
Pingback: Support beauty « eFi.blog
Csakhogy szerintem ez így nem jó.
(3) Az ellenőrzőszámok az előttük álló számjegyek ellenőrzésére szolgálnak. Képzésüket a következő algoritmus szerint kell elvégezni: külön az 1-7., valamint külön a 9-15. vagy 9-23. számjegyeket helyértékük csökkenő sorrendjében meg kell szorozni a “9,7,3,1,…9,7,3,1” számokkal, a szorzatokat összeadjuk, és az eredmény egyes helyértékén lévő számot kivonjuk 10-ből. A különbség az ellenőrzőszám. (Ha a különbség “10”, az ellenőrzőszám értéke “0”.)
dolgozó: ehhez az infóhoz forrásod? Anno én ezt egy banki IT-s fickótól kaptam, de szívesen megváltoztatom a ciklus irányát, ha mutatsz valid hivatkozást a te verziódra 🙂
Szerintem innen van a tippje, és elég hivatalosnak tűnik:
1. melléklet a 18/2009. (VIII. 6.) MNB rendelethez
http://net.jogtar.hu/jr/gen/hjegy_doc.cgi?docid=A0900018.MNB&celpara=#xcelparam