algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Algorytm Luhn'a (mod 10) - Implementacja w C/C++
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 02 kwietnia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

luhn.c:
//algorytm Luhn'a
//www.algorytm.org
//(c)2007 by Tomasz Lubinski

#include <stdio.h>

char DoubleArray[10] = {0, 2, 4, 6, 8, 1, 3, 5, 7, 9};

/*
 * Check number - return check digit
 */
int luhnCheckDigit(char *number) {
                int i;
		int sum = 0;
		int length = strlen(number);

		for (i=2; i<=length; i++) {
			if (i%2 != 0) {
				sum += number[length - i] - 48;
			} else {
				sum += DoubleArray[number[length - i] - 48];
			}
		}

		sum %= 10;
		sum = 10 - sum;
		sum %= 10;

		return sum;
}

/*
 * Luhn Algorithm
 * Check number - return 1 if check digit in number is correct, 0 otherwise
 */
int luhnCheck(char *number) {
                int i;
		int sum = 0;
		int length = strlen(number);

		for (i=1; i<=length; i++) {
			if (i%2 != 0) {
				sum += number[length - i] - 48;
			} else {
				sum += DoubleArray[number[length - i] - 48];
			}
		}

		if (sum % 10 == 0) {
			return 1;
		}
		return 0;
}

/* Get number and check it */
int main(void)
{
		char number[1000];

		printf("Podaj numer do sprawdzenia\n");
		scanf("%s", number);

		if (luhnCheck(number))
		{
			printf("Numer jest prawidlowy\n");
		}
		else
		{
			printf("Numer jest nieprawidlowy\n");
		}

          return 0;
}
Dodaj komentarz