fork download
  1. /*This is by Technical Bangla from University of Dhaka*/
  2. #include <stdio.h>
  3. unsigned char str[81];
  4. int main()
  5. {
  6. int i,count,sum,check_index,valid,trailingspace_count,trailingspace_index,leadingspace_count,c=-0,ret=EOF;
  7. while(c!=EOF)
  8. {
  9. ret=scanf("%[^\n]s",str);
  10. if(ret==EOF) break;
  11. c=getchar();
  12. if((c=='\n'||c==' ')&&str[0]==0) {printf(" is incorrect.\n");c=0;}
  13. else
  14. {
  15. for(i=trailingspace_count=trailingspace_index=check_index=count=sum=0,valid=1;str[i];i++)
  16. {
  17. if(str[i]=='0'||str[i]=='1'||str[i]=='2'||str[i]=='3'||str[i]=='4'||str[i]=='5'||str[i]=='6'||str[i]=='7'||str[i]=='8'||str[i]=='9'||str[i]=='X')
  18. {
  19. if(count<9&&str[i]!='X')
  20. {
  21. count++;
  22. sum+=(str[i]-'0')*count;
  23. }
  24. else count++;
  25. if(count==10)
  26. {
  27. check_index=i;
  28. if(str[check_index]=='X') str[check_index]=10+'0';
  29. }
  30. }
  31. else if(str[i]<97&&(str[i]!=' '&&str[i]!='\t'&&str[i]!='-')) valid=0;
  32. if(str[i]==' '||str[i]=='\t')
  33. {
  34. if(trailingspace_count==0) trailingspace_index=i;
  35. trailingspace_count++;
  36. }
  37. else trailingspace_count=0;
  38. }
  39. if(trailingspace_count) str[trailingspace_index]=0;
  40. for(leadingspace_count=0;str[leadingspace_count]==' '||str[leadingspace_count]=='\t';leadingspace_count++);
  41. if(sum%11==(str[check_index]-'0')&&count==10&&valid)
  42. {
  43. if(str[check_index]==10+'0') str[check_index]='X';
  44. for(i=leadingspace_count;str[i];i++) printf("%c",str[i]);
  45. printf(" is correct.\n");
  46. }
  47. else
  48. {
  49. if(str[check_index]==10+'0') str[check_index]='X';
  50. for(i=leadingspace_count;str[i];i++) printf("%c",str[i]);
  51. printf(" is incorrect.\n");
  52. }
  53. for(i=0;str[i];i++) str[i]=0;
  54. }
  55. }
  56. return 0;
  57. }
  58.  
Success #stdin #stdout 0s 3344KB
stdin
0-8104-5687-7
0-8104-5687-7432
This   just    for test.
0-1000-99999
0-123-4567-89
0-123-4567-890
1-111-111-111
0-89237-010-6
0-89237-010-6 TEST
XX-0000000000-XX
XX000000XXX0000XXXXX
1234567890
0823025713
013152447X
013152447x

082302571
08230257130
2803025713
07632200X1
 0823025713
0823025713
   0823025713
0823025713   
      0823025713      
082 3025713
0823025      713
--08-2----302--5713------
082302_5713
013152447X bla
013-A-152447X
0-1-3-1-5-2-4-4-7-X- -
01315
2447X
01-10
01-434435
01 0111 
0131524     47X
0_1_31524_47X
0131524 	47X
013152447X
0123456789X
stdout
0-8104-5687-7 is correct.
0-8104-5687-7432 is incorrect.
This   just    for test. is incorrect.
0-1000-99999 is incorrect.
0-123-4567-89 is correct.
0-123-4567-890 is incorrect.
1-111-111-111 is correct.
0-89237-010-6 is correct.
0-89237-010-6 TEST is incorrect.
XX-0000000000-XX is incorrect.
XX000000XXX0000XXXXX is incorrect.
1234567890 is incorrect.
0823025713 is correct.
013152447X is correct.
013152447x is incorrect.
 is incorrect.
082302571 is incorrect.
08230257130 is incorrect.
2803025713 is incorrect.
07632200X1 is incorrect.
0823025713 is correct.
0823025713 is correct.
0823025713 is correct.
0823025713 is correct.
0823025713 is correct.
082 3025713 is correct.
0823025      713 is correct.
--08-2----302--5713------ is correct.
082302_5713 is incorrect.
013152447X bla is correct.
013-A-152447X is incorrect.
0-1-3-1-5-2-4-4-7-X- - is correct.
01315 is incorrect.
2447X is incorrect.
01-10 is incorrect.
01-434435 is incorrect.
01 0111 is incorrect.
0131524     47X is correct.
0_1_31524_47X is incorrect.
0131524 	47X is correct.
013152447X is correct.
0123456789X is incorrect.