Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  test_Key_serial
Language: C/C++
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int SAIT(int g1[], int g2[]){
     int i;
     for(i=0; i < 4; i++){
          if (g1[i] == g2[i]){
               return 1;
          }
     }
     return 0;
}

int valc(char c){
     return c-48;
}

int check_serial(char *s){

     //check the length
     if (strlen(s) != 19){
          return 0;
     }
     
     
     int i;
     for(i=4; i<20; i=i+5){
          if (i<15 && s[i] != '-'){
               return 0;
          }
          
          //check if it's numbers
          int j;
          for (j=i-4; j<i; j++){
               if (s[j] < 48 || s[j] > 57){
                    return 0;
               }
          }
     }


     
     int first[4] = {valc(s[0]), valc(s[1]), valc(s[2]), valc(s[3])};
     int second[4] = {valc(s[5]), valc(s[6]), valc(s[7]), valc(s[8])};
     int third[4] = {valc(s[10]), valc(s[11]), valc(s[12]), valc(s[13])};
     int fourth[4] = {valc(s[15]), valc(s[16]), valc(s[17]), valc(s[18])};

     int sum_first = first[0]+first[1]+first[2]+first[3];
     int sum_second = second[0]+second[1]+second[2]+second[3];
     int sum_third = third[0]+third[1]+third[2]+third[3];
     int sum_fourth = fourth[0]+fourth[1]+fourth[2]+fourth[3];

     int avg_sums = (sum_first+sum_second+sum_third)/3;

     
     for(i=0; i<4; i++){
          if (fourth[i] < 2 || fourth[i] > 7){
               return 0;
          }
     }
     
     
     if(sum_fourth != avg_sums){
          return 0;
     }

     
     if(sum_first != sum_fourth/3){
          return 0;
     }
     
     
     if(sum_first == sum_third){
          return 0;
     }

     
     if(SAIT(first, fourth) || SAIT(second, third)){
          return 0;
     }

     return 1;

}


int main(int argc, char *argv[]){
     if (argc < 2){
          printf("usage: %s <serial number>\n", argv[0]);
          printf("serial format is XXXX-XXXX-XXXX-XXXX\n");
          return 0;
     }
     char *serial = argv[1];
     if (check_serial(serial) == 1){
          printf("\n##############      Good  Job!      ##############\n############## The serial is valid! ##############\n\n");
     
     }else{
          printf("\n##############   Try  again!   ##############\n############## Invalid serial! ##############\n\n");
     }
}





          
Comments: