Guest User

Untitled

a guest
Jan 24th, 2018
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cs50.h>
  3.  
  4. int main(void)
  5. {
  6. // valid cc numbers for testing
  7. // Amex - 378282246310005
  8. // MC - 5404000000000001
  9. // Visa - 4242424242424242
  10.  
  11. long long user_input, cc_num_test_1, cc_num_test_2;
  12.  
  13. // prompt for user input
  14. do
  15. {
  16. printf("Please enter your credit card number: ");
  17. user_input = get_long_long();
  18. }
  19. while (user_input < 0);
  20.  
  21.  
  22. int n1, n2, sum_of_n1, sum_of_n2_products;
  23. sum_of_n1 = 0;
  24. sum_of_n2_products = 0;
  25.  
  26. cc_num_test_1 = user_input;
  27. cc_num_test_2 = user_input;
  28.  
  29. // validate checksum
  30. while (cc_num_test_1 > 0)
  31. {
  32. n1 = cc_num_test_1 % 10;
  33. sum_of_n1 += n1;
  34. cc_num_test_1 -= n1;
  35. cc_num_test_1 /= 10;
  36.  
  37. n2 = cc_num_test_1 % 10;
  38.  
  39. if ( (n2 * 2) > 9)
  40. {
  41. int n2_t2 = n2 * 2;
  42. sum_of_n2_products += n2_t2 % 10;
  43. sum_of_n2_products += (n2_t2 - (n2_t2 % 10)) / 10;
  44. }
  45. else{
  46. sum_of_n2_products += (n2 * 2);
  47. }
  48.  
  49. cc_num_test_1 -= n2;
  50. cc_num_test_1 /= 10;
  51. }
  52.  
  53.  
  54. // validate company's identifier
  55. // validate number's length
  56. if ( (sum_of_n1 + sum_of_n2_products) % 10 == 0)
  57. {
  58. bool amex, mc, visa;
  59.  
  60. amex =
  61. (cc_num_test_2 >= 340000000000000 && cc_num_test_2 < 350000000000000) ||
  62. (cc_num_test_2 >= 370000000000000 && cc_num_test_2 < 380000000000000);
  63.  
  64. mc =
  65. (cc_num_test_2 >= 5100000000000000 && cc_num_test_2 < 5600000000000000);
  66.  
  67. visa =
  68. (cc_num_test_2 >= 4000000000000 && cc_num_test_2 < 5000000000000) ||
  69. (cc_num_test_2 >= 4000000000000000 && cc_num_test_2 < 5000000000000000);
  70.  
  71. if (amex)
  72. printf("Success! Valid American Express!\n");
  73. else if (mc)
  74. printf("Success! Valid MasterCard\n");
  75. else if (visa)
  76. printf("Success! Valid Visa\n");
  77. else
  78. printf("ERROR: checksum passed, however card type not found!\n");
  79.  
  80. }
  81. else
  82. {
  83. printf("ERROR: checksum did not pass!\n");
  84. }
  85.  
  86. }
Add Comment
Please, Sign In to add comment