Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 28 sierpnia 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.
upca_c.c:
/**
* @author Tomasz Lubinski
* www.algorym.org
* (c) 2007
*
* UPC-A
*/
#include <stdio.h>
#include <stdlib.h>
short UPCA[12];
int valid = 0;
static char* Systems[] = {
"zwykly kod UPC", "zarezerwowany", "waga prduktow wazonych w sklepie",
"lekarstwa", "artykul nie bedacy zywnoscia", "kupony", "zarezerwowany",
"zwykly kod UPC", "zarezerwowany", "zarezerwowany"
};
int checkSum(short *UPCA) {
int sum = 3 * UPCA[0] +
1 * UPCA[1] +
3 * UPCA[2] +
1 * UPCA[3] +
3 * UPCA[4] +
1 * UPCA[5] +
3 * UPCA[6] +
1 * UPCA[7] +
3 * UPCA[8] +
1 * UPCA[9] +
3 * UPCA[10];
sum %= 10;
sum = 10 - sum;
sum %= 10;
if (sum == UPCA[11]) {
return 1;
}
else {
return 0;
}
}
void UPCAValidator(char* UPCANumber) {
int i;
if (strlen(UPCANumber) != 12) {
valid = 0;
}
else {
for (i = 0; i < 12; i++){
UPCA[i] = UPCANumber[i] - 48;
}
if (checkSum(UPCA)) {
valid = 1;
}
else {
valid = 0;
}
}
}
void main(void)
{
char UPCAString[200];
printf("Podaj numer UPC-A (bez spacji i myslinikow)\n");
scanf("%s", UPCAString);
UPCAValidator(UPCAString);
if (valid) {
printf("Numer UPC-A jest prawidłowy\n");
printf("System: %s\n", Systems[UPCA[0]]);
}
else {
printf("Numer UPC-A jest nieprawidłowy\n");
}
return;
}