From b5d385608d3553a2cde2623fdca2b58ca12e527c Mon Sep 17 00:00:00 2001 From: xuwentao Date: Wed, 1 Oct 2014 20:35:59 -0300 Subject: [PATCH 1/5] Changed sort.c to mm.c --- mm.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 mm.c diff --git a/mm.c b/mm.c new file mode 100644 index 0000000..ff1779f --- /dev/null +++ b/mm.c @@ -0,0 +1,52 @@ +#include +#include + +#define debug 0 + +// Comparison function for qsort() +int numcmp (const void *a, const void *b) { + int x = *((int*) a); + int y = *((int*) b); + if (x > y) return 1; + if (x < y) return -1; + return 0; +} + +int main(int argc, char *argv[]) { + + int i, length, *pt; + + // Check for proper usage + if (argc < 2) { + fprintf(stderr, "%s: Aborting, not enough arguments.\n", argv[0]); + return (-1); + } + + // Determine amount of numbers from argc + length = argc - 1; +#if debug + fprintf(stderr, "%s: DEBUG: %d numbers were passed.\n", argv[0], length); +#endif + + // Allocate memory for array of number (and error check) + if ((pt = malloc(length * sizeof(int))) == NULL) { + fprintf(stderr, "%s: Could not allocate memory.\n", argv[0]); + } + + // Read numbers into array + for (i = 0; i < length; i++) { + pt[i] = (int) strtol(argv[i+1], NULL, 10); + } + + // Sort numbers + qsort(pt, length, sizeof(int), numcmp); + + // Print out numbers + fprintf(stdout, "%s: Sorted output is: \n", argv[0]); + for (i=0; i Date: Wed, 1 Oct 2014 20:42:44 -0300 Subject: [PATCH 2/5] Added #1 mean() function --- mm.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mm.c b/mm.c index ff1779f..ed00507 100644 --- a/mm.c +++ b/mm.c @@ -3,6 +3,26 @@ #define debug 0 + + +//Add mean function +float mean (int num[], int length) +{ + //Initial sum = 0 + float sum = 0; + float mean; + + //for loop to add up sum + for (int i = 0; i < length; i++) + { + sum = sum + num[i]; + } + mean = sum / length; + return mean; +} + + + // Comparison function for qsort() int numcmp (const void *a, const void *b) { int x = *((int*) a); From 376816fa46ccdff89603ac9f9854bb79bbc5328e Mon Sep 17 00:00:00 2001 From: xuwentao Date: Wed, 1 Oct 2014 20:45:38 -0300 Subject: [PATCH 3/5] Added #2 median() function --- mm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mm.c b/mm.c index ed00507..ef4253e 100644 --- a/mm.c +++ b/mm.c @@ -23,6 +23,21 @@ float mean (int num[], int length) +//Add median function +float median (int num[], int length) +{ + int medianNum = length / 2; + //Determine the size of array is even or odd + if (length % 2 == 0) + { + medianNum = (num[medianNum - 1] + num[medianNum]) / 2; + return medianNum; + } else + return medianNum; +} + + + // Comparison function for qsort() int numcmp (const void *a, const void *b) { int x = *((int*) a); From 1d68601643defd0eea49c4a6f549e59c3beca251 Mon Sep 17 00:00:00 2001 From: xuwentao Date: Wed, 1 Oct 2014 20:58:18 -0300 Subject: [PATCH 4/5] Added #3, #4 and #5; Made fork(), the child process call median and parent process call mean --- mm.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/mm.c b/mm.c index ef4253e..13277a4 100644 --- a/mm.c +++ b/mm.c @@ -1,5 +1,6 @@ #include #include +#include #define debug 0 @@ -78,10 +79,28 @@ int main(int argc, char *argv[]) { // Print out numbers fprintf(stdout, "%s: Sorted output is: \n", argv[0]); + + + //Add fork function + int rc = fork(); + + if (rc < 0) + { + fprintf(stderr, "Fork failed. \n"); + //Child process + } else if (rc == 0) { for (i=0; i Date: Wed, 1 Oct 2014 21:03:06 -0300 Subject: [PATCH 5/5] Changed format and comments for #4 and #5 to make sure print mean and median, added #6 wait() to make the parent wait until child has finished --- mm.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mm.c b/mm.c index 13277a4..495b15c 100644 --- a/mm.c +++ b/mm.c @@ -1,6 +1,7 @@ #include #include #include +#include #define debug 0 @@ -28,6 +29,7 @@ float mean (int num[], int length) float median (int num[], int length) { int medianNum = length / 2; + //Determine the size of array is even or odd if (length % 2 == 0) { @@ -89,18 +91,20 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Fork failed. \n"); //Child process } else if (rc == 0) { - for (i=0; i