• This topic is empty.
Viewing 1 post (of 1 total)
  • Author
    Posts
  • #520
    admin
    Keymaster

      Here is the full code:

      
      
      #include <stdio.h>
      #include <cs50.h>
      
      long enterccno (void);//long type as 14-digit credit card will not fit into the memory as int type
      int countdigit (long y);
      int checkifAmex (long y);
      
      int main(void)
      {
          long y = enterccno();
          printf("credit card no. entered is %ld",y);
      
          long cc = countdigit(y);
          printf("entered credit card has this number of digit %ld",cc);
      
          if (cc == 15)
          {
              int z = checkifAmex(cc);
              if (z == 1)
              {
                  printf("This is Amex");
                  return 0;
      
              }
      
          }
      
          //if (cc == 16)
          //{
             //checkifMastercard
          //}
      
          //if (cc == 13 or cc == 16)
          //{
              //checkifVisa
          //}
      
          else
          {
              return 0;
          }
      }
      
      
      long enterccno (void) //It will take void as argument as the function will not initially take any particular long value as input to begin with.
      {
          long x = get_long("enter creditcardno");//get_long function by cs50.h leveraged to accept input of creditcard no. from user.
          return x;//stored x value or entered creditcardno transferred inside the main function when entercccno function called.
      }
      
      int countdigit (long y)
      {
          long x = y;
          int c = 0;
          do
          {
          x = x/10;
          c++;
          }
          while (x > 0);
          return c;
      }
      
      
      int checkifAmex (long y)
      {
          long x = y;
          if (x/10000000000000 == 34)
          {
          return 1;
          }
          else
          {
          return 0;
          }
      }

       

      If I enter as input 340000000000000, this divided by 10000000000000 = 34.

      So, I anticipate checkifAmex function to return 1 and so print “This is Amex”.

      Instead getting this output, which is common to all entered credit card numbers:

       

       

      Help appreciated.


      Reply


       

      https://edstem.org/us/courses/176/discussion/1706118[learn_press_profile]

    Viewing 1 post (of 1 total)
    • You must be logged in to reply to this topic.
    Scroll to Top