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?

REGON - Implementacja w C/C++
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 13 października 2005 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.

regon_c.c:
/**
 * @author Tomasz Lubinski
 * www.algorym.org
 * (c) 2005
 *
 * REGON
 */

#include <stdio.h>
#include <stdlib.h>

short REGON[11];
int valid = 0;
int REGONLength = 0;

int checkSum9() {
	int sum = 8 * REGON[0] +
	          9 * REGON[1] +
		  2 * REGON[2] +
		  3 * REGON[3] +
		  4 * REGON[4] +
		  5 * REGON[5] +
		  6 * REGON[6] +
		  7 * REGON[7];
	sum %= 11;
	if (sum == 10) {
		sum = 0;
	}
	if (sum == REGON[8]) {
		return 1;
	}
	else {
		return 0;
	}
}


int checkSum14() {
	int sum = 2 * REGON[0] +
	          4 * REGON[1] +
		  8 * REGON[2] +
		  5 * REGON[3] +
		  0 * REGON[4] +
		  9 * REGON[5] +
		  7 * REGON[6] +
		  3 * REGON[7] +
		  6 * REGON[8] +
		  1 * REGON[9] +
		  2 * REGON[10] +
		  4 * REGON[11] +
		  8 * REGON[12];
	sum %= 11;
	if (sum == 10) {
		sum = 0;
	}
	if (sum == REGON[13]) {
		return 1;
	}
	else {
		return 0;
	}
}

int checkSum() {
	if (REGONLength == 9) {
		return checkSum9();
	}
	else {
		return (checkSum9() && checkSum14());
	}
}

void REGONValidator(char *REGONNumber) {
        int i;

	if ((strlen(REGONNumber) != 9) && (strlen(REGONNumber) != 14)) {
		valid = 0;
	}
	else {
		REGONLength = strlen(REGONNumber);
		for (i = 0; i < REGONLength; i++){
			REGON[i] = REGONNumber[i] - 48;
		}
		if (checkSum()) {
			valid = 1;
		}
		else {
			valid = 0;
		}
	}
}

void main(void)
{
        char REGON[200];

        printf("Podaj numer REGON\n");
        scanf("%s", REGON);

        REGONValidator(REGON);
        
        if (valid == 1) {
        	printf("Numer REGON jest prawidlowy\n");
        }
        else {
        	printf("Numer REGON jest nieprawidlowy\n");
        }
	return;
}
Dodaj komentarz