Hello,
I'm trying to make it possible such that when I run from the commadn line the following :
./program 1 2 3 | 3 4 5
it will create two arrays, A and A1 and process them as per the match function (which I did test to work). So I only need help with the Array extractor methods and the main. Awaiting your kind suggestions.
Code:#include <stdio.h> #include <stdlib.h> #include <string.h> void match(int A1[], int A2[]){ int n1 = sizeof(A1); int n2 = sizeof(A2); int i,m,a1k,a2i,l,r,a1m;//global variables int a10=A1[0]; for (i=0; i<n2; i++){//scan all elements of A2 a2i = A2[i];//for efficiency if (a10 == a2i || A1[i]==a2i) printf("%d\t",a10);//special cases: print element else{ //when special case not true r = n1-1; l = 0; if (a2i >= a1k){ if (a1k == a2i) printf("%d\t",a1k); //print the element else{ while(r>=l){//since A1 is sorted m = (l+r)/2; if (a2i == (a1m = A1[m])){ //if element is found printf("%d\t",a1m); //print the element break;} else{ if (a1m > a2i) r = m-1; else l = m+1; } } } } } } } int * arrayExtractor(const char * argv[], char sep[]){ int n,i=1; while (strcmp(argv[i], sep) != 0) {n++;} static int * A; for (i=1; i<n; i++){A[i] = atoi(argv[i]);} return A; } int * arrayExtractor2(const char * argv[], char sep[]){ int i=2; while (argv[i] != sep) i++; static int * A1; for (i=2; argv[i] != '\0'; i++){A1[i] = atoi(argv[i]);} return A1; } int main(int argc, const char * argv[]){ match (arrayExtractor(argv, '|'), arrayExtractor2(argv,'|')); return 0; }



LinkBack URL
About LinkBacks



