int main(){ char in_number[MAX_NUM+1]; int in_base = 0; int out_base = 0; char possible_characters[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; // Accept user input printf("Please enter the desired starting base: "); scanf("%d", &in_base); printf("Please enter the desired ending base: "); scanf("%d", &out_base); printf("Please enter the desired number to be converted: "); scanf("%s", * &in_number); // Validate input if (input_validation(in_base, out_base, in_number, possible_characters) == true) { // If input is error-free, choose the correct conversion method if (out_base == 10) { printf("Converted value: %d",to_base10(in_base, in_number, possible_characters)); } else { from_base10(out_base, in_number, possible_characters); } } else { printf("You have entered invalid input. Please try again."); } }
/* main: process parameters */ int main(int argc, char *argv[]) { FILE *fp; unsigned short int errnum; unsigned short int size_of_vector[3]; char *seq_1, *seq_2; input_validation(argc, argv); /* Program start: read file from argv */ fp = fopen (argv[1], "r"); /* Validate if file exists*/ if (fp == NULL){ /* If not: print error */ errnum = errno; fprintf(stderr, "Error opening file: %s\n", strerror( errnum )); } else{ /* Read important values from file - 2 ints - 2 strings */ fscanf(fp, "%d %d\n", &size_of_vector[0], &size_of_vector[1]); /* Start arrays to store sequences */ seq_1 = (char *) malloc ((size_of_vector[0]) * sizeof(char)); seq_2 = (char *) malloc ((size_of_vector[1]) * sizeof(char)); /* Read arrays */ fscanf(fp,"%s\n%s", seq_1, seq_2); fclose (fp); } //~ printf("%s\n",seq_1); //~ printf("%s\n",seq_2); unsigned short int i=0, j=0; unsigned short int** Matrix = (unsigned short int **) malloc( (size_of_vector[0]+1)*sizeof(unsigned short int)); /* Loop to populate the matrix and give us the longest common subsequence size */ for(i = 0; i < (size_of_vector[0]+1); i++){ Matrix[i] = (unsigned short int *) malloc( (size_of_vector[1]+1)*sizeof(unsigned short int)); for(j = 0; j < (size_of_vector[1]+1); j++){ if(i==0||j==0){ Matrix[i][j]=0; } else if(seq_1[i-1]==seq_2[j-1]){ Matrix[i][j]=Matrix[i-1][j-1]+1; } else{ Matrix[i][j]= fmax(Matrix[i-1][j],Matrix[i][j-1]); } } } /* Debugging code, use to print out full matrix. Comment when not using */ //~ for( i=0; i<size_of_vector[0]+1; i++){ //~ printf("\n"); //~ for( j=0; j<size_of_vector[1]+1; j++){ //~ printf("%4d ",Matrix[i][j]); //~ } //~ } printf("%d\n",Matrix[size_of_vector[0]][size_of_vector[1]]); /* Loop to discover the longest common subsequence */ char *LongestSubsequence = (char *) malloc( ((Matrix[size_of_vector[0]][size_of_vector[1]]))*sizeof(char)); i=size_of_vector[0]+1; j=size_of_vector[1]+1; unsigned short int CurrentNumber=Matrix[i-1][j-1]; while( i>0 && j>0 ){ if(seq_1[i-1]==seq_2[j-1]){ LongestSubsequence[CurrentNumber]=seq_1[i-1]; i--; j--; CurrentNumber--; } else if(Matrix[i-1][j]>Matrix[i][j-1]){ i--; } else{ j--; } } printf("%s\n",LongestSubsequence); return 0; }