salve, ho provato a scrivere questo semplice programma che controlla il codice di controllo dei codici a barre, ma ogni volta che lo eseguo mi da un codice diverso....-(
per esempio se metto :
1° cifra 0
1° serie di 5 cifre 13800
2° serie di 5 cifre 15173
e lo eseguo per due volte di seguiti mi da 2 risultati diversi.
il risultato atteso dovrebbe essere 5
ma ho come risultato una volta 4 e una volta 2
[raffaello@localhost ~]$ ./barre
digitare la prima (singola) cifra:0
digitare il primo gruppo di 5 cifre:13800
digitare il secondo gruppo di 5 cifre:15173
check digit: 4
[raffaello@localhost ~]$ ./barre
digitare la prima (singola) cifra:0
digitare il primo gruppo di 5 cifre:13800
digitare il secondo gruppo di 5 cifre:15173
check digit: 2
[raffaello@localhost ~]$ gcc --version
gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)
Copyright (C) 2006 Free Software Foundation, Inc.
/*
* programma per che calcola la cifra di controllo
* dei codici a barre
*/
#include<stdio.h>
int main(void)
{
int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, prima_somma, seconda_somma, totale;
printf("digitare la prima (singola) cifra:");
scanf("%d1d", &d);
printf("digitare il primo gruppo di 5 cifre:");
scanf("%d1d%d1d%d1d%d1d%d1d", &i1 ,&i2, &i3, &i4, &i5);
printf("digitare il secondo gruppo di 5 cifre:");
scanf("%d1d%d1d%d1d%d1d%d1d", &j1 ,&j2, &j3, &j4, &j5);
prima_somma = d + i2 + i4 + j1 + j3 + j5;
seconda_somma = i1 + i3 + i5 + j2 + j4;
totale = 3 * prima_somma + seconda_somma;
printf("check digit: %d\n", 9 - ((totale -1) % 10));
return(0);
}
qualcuno è in grado di aiutarmi?