Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. /*-----------------------------------------------------------------------------
  2. * HTBLA-Leonding / Class: 2BHIF
  3. *-----------------------------------------------------------------------------
  4. * Exercise Number: 5
  5. * File: cc_checker.c
  6. * Author(s): Peter Bauer
  7. * Due Date: 15.10.2012
  8. *-----------------------------------------------------------------------------
  9. * Description:
  10. * This program checks the creditcard numbers of users.
  11. * it check's, if they are valid or not.
  12. *-----------------------------------------------------------------------------
  13. */
  14. #include <string.h>
  15. #include <stdio.h>
  16. #include "cc_checker.h"
  17.  
  18. #define TRUE 0
  19. #define FALSE 1
  20. #define CARDID i
  21.  
  22. static const CardPattern *pattern;
  23. static int len;
  24.  
  25. /* ----------------- Prototypes of private functions ------------------------- */
  26. Bool start_is_equal(const char *short_string, const char *long_string);
  27. int length_of_pattern(const char *cc_number, int cardid);
  28. int start_cc_checker(const char *cc_number, int cardid);
  29.  
  30. /* ----------------- Implementation of public functions ---------------------- */
  31. void init_cc_checker(const CardPattern p[], int patterns_count)
  32. {
  33. len = patterns_count;
  34. pattern = p;
  35. }
  36.  
  37. Bool is_pattern(CardName name, const char *cc_number)
  38. {
  39. int len = 0;
  40. int cardid;
  41. int start = 0;
  42.  
  43. for(int i = 0; i < 5; i++)
  44. {
  45. if(pattern[i].name == name)
  46. {
  47. cardid = i;
  48. }
  49. }
  50.  
  51. switch(cardid)
  52. {
  53. case 0:
  54. len = length_of_pattern(cc_number, cardid);
  55. start = start_cc_checker(cc_number, cardid);
  56. break;
  57.  
  58. case 1:
  59. len = length_of_pattern(cc_number, cardid);
  60. start = start_cc_checker(cc_number, cardid);
  61. break;
  62.  
  63. case 2:
  64. len = length_of_pattern(cc_number, cardid);
  65. start = start_cc_checker(cc_number, cardid);
  66. break;
  67.  
  68. case 3:
  69. len = length_of_pattern(cc_number, cardid);
  70. start = start_cc_checker(cc_number, cardid);
  71. break;
  72.  
  73. case 4:
  74. len = length_of_pattern(cc_number, cardid);
  75. start = start_cc_checker(cc_number, cardid);
  76. break;
  77. }
  78.  
  79. if(len == 1 && start == 1)
  80. {
  81. return True;
  82. }
  83. else
  84. {
  85. return False;
  86. }
  87. }
  88.  
  89. Bool is_luhn_valid(const char *cc_number)
  90. {
  91. return (False);
  92. }
  93.  
  94. int start_cc_checker(const char *cc_number, int cardid)
  95. {
  96. int i = 0;
  97. int rf = 0;
  98.  
  99. while(i < POSSIBLE_STARTS_COUNT && pattern[cardid].start[i] != 0)
  100. {
  101. if(strncmp((cc_number), (pattern[cardid].start[i]), (strlen(pattern[cardid].start[i]))) == 1)
  102. {
  103. i = POSSIBLE_STARTS_COUNT;
  104. rf = 1;
  105. }
  106. i++;
  107. }
  108.  
  109. return rf;
  110. }
  111.  
  112. int length_of_pattern(const char *cc_number, int cardid)
  113. {
  114. int len = 0;
  115. int rf = 0;
  116. int j;
  117. for(int i = 0; i < strlen(cc_number); i++)
  118. {
  119. if(cc_number[i] != ' ')
  120. {
  121. len++;
  122. }
  123. }
  124. while(j < POSSIBLE_STARTS_COUNT)
  125. {
  126. if(len == pattern[cardid].length[j]);
  127. {
  128. rf = 1;
  129. }
  130. j++;
  131. }
  132. return rf;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement