Wenn es den Algorithmus passt, sollte es eine Ausgabe von True haben und wenn dies nicht der Fall ist, sollte die Ausgabe falsch sein. Irgendeine Idee, wo es schief geht?Luhn Algorithmus manchmal arbeiten manchmal scheitern
Ich versuchte
1586455534096 ; output : false(fail)
49927398716 ; output : true (ok)
984697300577 ; output : false (fail)
-Code
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
int n,num[100],prod[100],remainder,sum,total;
scanf("%s", str);
for(n=0;n<100;n++)
{
if(str[n]==0) break;
num[n] = str[n] - '0';
if(n%2!=0)
{
prod[n]=num[n]*2;
sum=0;
while(prod[n]>=10)
{
remainder=prod[n]%10;
sum=sum+remainder;
prod[n]=prod[n]/10;
}
num[n]=sum;
}
total = total + num[n];
}
if(total%10==0)
printf("true\n");
else
printf("false\n");
return 0;
}
Haben Sie versucht, den Code für eine versagende Beispiel zu debuggen? – MrSmith42