Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cs50.h>
- #include <math.h>
- void outputCard(int sum, int digit[]);
- int sumCal(int digit[], int howLong);
- int devisionIntCal(long long credit);
- int main() //Main Code;
- {
- long long credit = get_long_long("Credit: "); // Test Code: 378282246310005 // Declares Needed/To-be-Used Data;
- int digit[16], sum = 0;
- int devisionInt = devisionIntCal(credit);
- for(int i = 0; i < devisionInt; i++) //splits ints
- {
- long long division = pow(10, devisionInt - i - 1);
- digit[i] = credit / division % 10;
- }
- sum = sumCal(digit, devisionInt );
- outputCard(sum, digit);
- }
- void outputCard(int sum, int digit[])
- {
- if(sum % 10 == 0){ //Checks Card;
- if(digit[0] == 4){
- printf("Visa \n");
- }
- if(digit[0] * 10 + digit[1] == 37 || digit[0] * 10 + digit[1] == 34){
- printf("AMEX \n");
- }
- if(digit[0] * 10 + digit[1] == 51 || digit[0] * 10 + digit[1] == 52 || digit[0] * 10 + digit[1] == 53 || digit[0] * 10 + digit[1] == 54 || digit[0] * 10 + digit[1] == 55)
- {
- printf("MASTERCARD \n");
- }
- }
- else
- {
- printf("Invalid! \n");
- }
- }
- int sumCal(int digit[], int howLong) //Calculates sum
- {
- int sum;
- for(int i = 0; i < howLong + 1; i = i + 2)
- {
- sum = sum + digit[i];
- }
- for(int i = 1; i < howLong + 1; i = i + 2)
- {
- sum = sum + (digit[i] * 2) / 10 + (digit[i] * 2) % 10;
- }
- return sum;
- }
- int devisionIntCal(long long credit) //checks how long is the card, cause Amex can be 15digit, Visa can Be 13 or 15digits long, or Mastercard 16;
- {
- int i = 16, checker;
- do
- {
- i--;
- long long dev = pow(10, i);
- checker = credit / dev % 10;
- }
- while(checker == 0);
- i++;
- return i;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement