From e5b70d26e8d0acc295af7cfc7ecd5ca8862a1204 Mon Sep 17 00:00:00 2001 From: David Kaufmann Date: Fri, 11 Nov 2011 14:55:21 +0100 Subject: [PATCH] add kdevelop-project, move functions below main --- openmp/merge/merge.kdev4 | 3 + openmp/merge/sort.c | 124 +++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 62 deletions(-) create mode 100644 openmp/merge/merge.kdev4 diff --git a/openmp/merge/merge.kdev4 b/openmp/merge/merge.kdev4 new file mode 100644 index 0000000..acc812a --- /dev/null +++ b/openmp/merge/merge.kdev4 @@ -0,0 +1,3 @@ +[Project] +Manager=KDevCustomMakeManager +Name=merge diff --git a/openmp/merge/sort.c b/openmp/merge/sort.c index 2edb8ef..5d7cb99 100644 --- a/openmp/merge/sort.c +++ b/openmp/merge/sort.c @@ -5,69 +5,10 @@ #include #include "numlist.h" -void printlist(char * message, int * ptr) { - printf (message); - while (*ptr != -1) { - printf (" %i", *ptr); - ptr++; - } - printf ("\n"); -} - -int rank(int elem, int * list) { - int pos; - - //usleep(2000);//2ms - pos = 0; - if (elem == -1) { return -1; } - while (*list >= 0) { - /*printf ("elem_list: %i %i\n", elem, *list);*/ - if (elem <= *list) { - return pos; - } - list++; - pos++; - } - return -1; -} - +void printlist(char * message, int * ptr); +int rank(int elem, int * list); /* merge(a,n,b,m,c): merges a of size n and b of size m into c */ -void merge(int ti, int * a, int n, int * b, int m, int * c) { - int sum; - int i; -// usleep (1000);//1ms - /*printf ("sorting a:%i (%i) and b:%i (%i)\n", *a, n, *b, m);*/ - if (m<0) { m=0;} - if (n<0) { n=0;} - sum = n + m; - //printf ("%i modifying %i (%i+%i) (c[%i]/0x%08x -> c[%i]/0x%08x)\n", ti, sum, n, m, 0, (unsigned int) &c, sum-1, ((unsigned int) &c)+sum); - for (i = 0; i < sum; i++) { - //usleep (1000);//1ms - // n+m == 0 - if (*a < 0 && *b < 0) { - printf ("%i Calculation failed somehow...\n", ti); - return; - } - if (*a < 0) { - c[i] = *b; m--; - b++; - } else { - if (*b < 0) { - c[i] = *a; n--; - a++; - } else { - if (*a < *b) { - c[i] = *a; n--; - a++; - } else { - c[i] = *b; m--; - b++; - } - } - } - } - return; -} +void merge(int ti, int * a, int n, int * b, int m, int * c); int main ( int argc, char ** argv) { int n = LISTSIZE; @@ -130,3 +71,62 @@ int main ( int argc, char ** argv) { return 0; } +void printlist(char * message, int * ptr) { + printf (message); + while (*ptr != -1) { + printf (" %i", *ptr); + ptr++; + } + printf ("\n"); +} + +int rank(int elem, int * list) { + int pos; + + pos = 0; + if (elem == -1) { return -1; } + while (*list >= 0) { + /*printf ("elem_list: %i %i\n", elem, *list);*/ + if (elem <= *list) { + return pos; + } + list++; + pos++; + } + return -1; +} + +void merge(int ti, int * a, int n, int * b, int m, int * c) { + int sum; + int i; + /*printf ("sorting a:%i (%i) and b:%i (%i)\n", *a, n, *b, m);*/ + if (m<0) { m=0;} + if (n<0) { n=0;} + sum = n + m; + //printf ("%i modifying %i (%i+%i) (c[%i]/0x%08x -> c[%i]/0x%08x)\n", ti, sum, n, m, 0, (unsigned int) &c, sum-1, ((unsigned int) &c)+sum); + for (i = 0; i < sum; i++) { + // n+m == 0 + if (*a < 0 && *b < 0) { + printf ("%i Calculation failed somehow...\n", ti); + return; + } + if (*a < 0) { + c[i] = *b; m--; + b++; + } else { + if (*b < 0) { + c[i] = *a; n--; + a++; + } else { + if (*a < *b) { + c[i] = *a; n--; + a++; + } else { + c[i] = *b; m--; + b++; + } + } + } + } + return; +} -- 2.43.0