질문한개만 할께요!!!!!!! 결과값이 이상하네요!!! 간단함 고수님들 도움좀
by풀잎
#include stdio.hint check_digit(int a[]);
#define N 12
int main(void)
{
int check;
int a[N];
int i;
printf(12개의 digit들을 입력하세요:);
for(i=0; iN; ++i)
scanf(%d,&a[i]); check=check_digit(a);
if(check != 0)
check=10-check;
if(check==a[11])
printf(Validated);
else
printf(error in barcode \n);return 0;
}int check_digit(int a[]){
int k=0;
int m=1;
int sum;
int sum_1=0;
int sum_2=0;
while(k12)
{
sum_1=sum_1+a[k];
k = k+ 2;
}
sum_1=3*sum_1; while(m12)
{
sum_2 = sum_2+a[m];
m=m+2;
}
sum=sum_1+sum_2;
return sum%10;}프로그램 간단히 설명해보면 12개의 숫자를 입력받으면 11번째 숫자까지의 홀수항의 합 곱하기 3에다가 짝수항의 숫자의 합을 더한값의 일의자리숫자를 10에서 뺀 숫자가(0일경우에는 빼지않고 그대로 0)맨마지막 12번째 숫자와 같으면 Valid출력, 다르면 error출력 하는 프로그램인데요 여기에 0 7 9 4 0 0 8 0 4 5 0 1을 입력하면 Valid가 나와야하는데 왜 error가 나올까요? 그 이유를 알고싶어요 ㅠㅠ 고수님들 도와주셈!!
-
으뜸
우와!!!!!!!진짜정말로 감사드립니다!!!!!!!! ㅜㅜㅜㅜㅜㅜㅜㅜ우와오아ㅗ아ㅗ아ㅗ아!!드디어됀다
-
푸르나
while(m12){
sum_2 = sum_2+a[m];
m=m+2;
}
를
while(m11){
sum_2 = sum_2+a[m];
m=m+2;
}
로 고쳐주시면 될 것 같습니다.
그리고 조건을 m 12로 하시는 것 보다 m N - 1로 하시는게 더 나을것 같네요