From d5874f246b68e86779918d15ea117c43abf7e375 Mon Sep 17 00:00:00 2001 From: rwhig-1NS Date: Thu, 25 Sep 2014 16:17:41 -0300 Subject: [PATCH 1/5] added 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..dd07429 --- /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 number 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: Thu, 25 Sep 2014 16:44:15 -0300 Subject: [PATCH 2/5] fixed #2 --- mm.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mm.c b/mm.c index dd07429..088d74d 100644 --- a/mm.c +++ b/mm.c @@ -12,6 +12,19 @@ int numcmp (const void *a, const void *b) { return 0; } +int mean(int* pt,int length) { + + int i = 0; + int sum = 0; + int mean = 0; + for(i = 0; i < length; i++){ + sum = sum + pt[i]; + } + mean = (sum / length); + + return mean; +} + int main(int argc, char *argv[]) { int i, length, *pt; @@ -46,7 +59,12 @@ int main(int argc, char *argv[]) { for (i=0; i Date: Thu, 25 Sep 2014 17:08:16 -0300 Subject: [PATCH 3/5] fixed #3 --- mm.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/mm.c b/mm.c index 088d74d..c640a0c 100644 --- a/mm.c +++ b/mm.c @@ -12,6 +12,7 @@ int numcmp (const void *a, const void *b) { return 0; } +/* mean and median functions */ int mean(int* pt,int length) { int i = 0; @@ -25,9 +26,23 @@ int mean(int* pt,int length) { return mean; } +int median(int* pt,int length){ + int middle, median; + + middle = (length / 2); + median = pt[middle]; + + return median; + +} + +/* -------------------------- */ + int main(int argc, char *argv[]) { int i, length, *pt; + /* my vars */ + int meanVal, medianVal; // Check for proper usage if (argc < 2) { @@ -62,8 +77,11 @@ int main(int argc, char *argv[]) { fprintf(stdout, "\n%s: FIN. \n", argv[0]); - /* call mean() */ - /*mean(pt, length); */ + /* call methods */ + meanVal = mean(pt, length); + medianVal = median(pt, length); + fprintf(stdout, "mean value: %d \n", meanVal); + fprintf(stdout, "median value: %d \n", medianVal); return 0; } From 8af96384cf3e67930202065630c1c8c554f9f1ce Mon Sep 17 00:00:00 2001 From: rwhig-1NS Date: Tue, 30 Sep 2014 18:13:02 -0300 Subject: [PATCH 4/5] fixed #4 --- mm.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/mm.c b/mm.c index c640a0c..1407c22 100644 --- a/mm.c +++ b/mm.c @@ -1,5 +1,6 @@ #include #include +#include #define debug 0 @@ -75,14 +76,25 @@ int main(int argc, char *argv[]) { fprintf(stdout, "%d ", pt[i]); } - fprintf(stdout, "\n%s: FIN. \n", argv[0]); - /* call methods */ - meanVal = mean(pt, length); - medianVal = median(pt, length); - fprintf(stdout, "mean value: %d \n", meanVal); - fprintf(stdout, "median value: %d \n", medianVal); + /* Forking!!! :O */ + + int rc = fork(); + if (rc < 0) { + fprintf(stderr, "fork failed\n"); + exit(1); + } else if (rc == 0) { + medianVal = median(pt, length); + fprintf(stdout, "Median: %d\n", medianVal); + } else { + meanVal = mean(pt, length); + fprintf(stdout, "Mean: %d\n", meanVal); + } + /* That's all, folks */ + fprintf(stdout, "\n%s: FIN. \n", argv[0]); + + return 0; } From 4d2a4aef8cdf8bbf4bef3a70797e9ca278cc515e Mon Sep 17 00:00:00 2001 From: rwhig-1NS Date: Wed, 1 Oct 2014 23:29:54 -0300 Subject: [PATCH 5/5] fixed #5, #6, #7 --- mm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mm.c b/mm.c index 1407c22..5dceecd 100644 --- a/mm.c +++ b/mm.c @@ -43,7 +43,7 @@ int main(int argc, char *argv[]) { int i, length, *pt; /* my vars */ - int meanVal, medianVal; + int meanVal, medianVal, wc; // Check for proper usage if (argc < 2) { @@ -71,11 +71,12 @@ int main(int argc, char *argv[]) { qsort(pt, length, sizeof(int), numcmp); // Print out numbers + /* fprintf(stdout, "%s: Sorted output is: \n", argv[0]); for (i=0; i