ВОПРОС: http://www.hpcodewars.org/past/cw17/problems/Prob02--CheckDigit.pdfHP Code Wars Проверьте ошибку алгоритма цифры
Вот мой код:
int checkdigit(){
int n,i,j,sum1,sum2,k;
char ch;
printf("Enter the number of lines.Then enter ther the codes!");
scanf("%d",&n);
char *codes[n];
int msum[n];
int fsum[n];
for(i=0;i<n;++i){
scanf("%s",codes[i]);
}
for(i=0;i<n;++i){
for(j=0,k=3;j<21;j+=3,k+=3){
char *num;
num=codes[i];
ch=num[j];
sum1+=atoi(ch);
if(k<21)
ch=num[k];
sum2+=atoi(ch);
}
msum[i]=sum1*3;
fsum[i]=((msum[i]+sum2)%10);
if(fsum[i]!=0)
fsum[i]-=10;
}
for(k=0;k<sizeof(fsum);k++){
printf("%s %d",codes[k],fsum[k]);
}
return 0;
}
Кодекс в настоящее время выходит из строя после приема первого кода UPC в качестве входных данных.
Да, msum это имя массива –
'зсапЕ ("% s", коды [я]);': 'коды [я]' ISN» t указывает на llocated memory. – BLUEPIXY