/* nag_search_int (m01nbc) Example Program. * * Copyright 2008, Numerical Algorithms Group. * * Mark 9, 2009. */ /* Pre-processor includes */ #include #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpin, *fpout; /*Logical scalar and array declarations */ Nag_Boolean validate; /*Integer scalar and array declarations */ Integer exit_status = 0; Integer i, index, item, leniv, m1, m2; Integer *iv = 0; NagError fail; INIT_FAIL(fail); /* Check for command-line IO options */ fpin = nag_example_file_io(argc, argv, "-data", NULL); fpout = nag_example_file_io(argc, argv, "-results", NULL); fprintf(fpout, "%s\n", "nag_search_int (m01nbc) Example Program Results"); fprintf(fpout, "\n"); fscanf(fpin, "%*[^\n] "); fscanf(fpin, "%ld%*[^\n] ", &leniv); if (!(iv = NAG_ALLOC(leniv, Integer))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } /* Read in Reference Vector iv*/ for (i = 0; i < leniv; i++) fscanf(fpin, "%ld ", &iv[i]); fscanf(fpin, "%*[^\n] "); /* Read items sought in the reference vector*/ validate = Nag_TRUE; m1 = 0; m2 = leniv-1; while (fscanf(fpin, "%ld%*[^\n] ", &item) != EOF) { /* * nag_search_int (m01nbc) * Binary search in set of integer numbers */ index = nag_search_int(validate, iv, m1, m2, item, &fail); if (fail.code != NE_NOERROR) { fprintf(fpout, "Error from nag_search_int (m01nbc).\n%s\n", fail.message); exit_status = 1; goto END; } if (validate) { /* Print the reference vector*/ fprintf(fpout, "%s\n", "Reference Vector is:"); for (i = 0; i < leniv; i++) fprintf(fpout, "%5ld%s", iv[i], (i+1)%8?" ":"\n"); fprintf(fpout, "\n"); validate = Nag_FALSE; } fprintf(fpout, "\n"); fprintf(fpout, " Search for item %5ld returned index: %4ld\n", item, index); } END: if (fpin != stdin) fclose(fpin); if (fpout != stdout) fclose(fpout); if (iv) NAG_FREE(iv); return exit_status; }