From f0727faab76249aa956012cf060a03ed93e01f26 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 3 Nov 2016 15:42:40 +0100 Subject: findMaxOfFloats --- findMaxOfFloats.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 findMaxOfFloats.c (limited to 'findMaxOfFloats.c') diff --git a/findMaxOfFloats.c b/findMaxOfFloats.c new file mode 100644 index 0000000..afa6d77 --- /dev/null +++ b/findMaxOfFloats.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include +#include +#include + +void main(int argc, char* argv[]) +{ + float *array = NULL; + int arrayLength = 0; + int arrayUsage = 0; + + float max = FLT_MIN; + float current; + + FILE *fp; + + for (int i = 1; i < argc; i++) + { + fp = fopen(argv[i], "r"); + if (fp == NULL) + { + fprintf(stderr, "Could not open `%s´: %s\n", argv[i], strerror(errno)); + exit(EXIT_FAILURE); + } + + for (int res; res = fscanf(fp, "%f\n", ¤t); ) + { + if (res == EOF || res != 1) + break; + + if (arrayUsage >= arrayLength) + { + if (arrayLength <= 1) + arrayLength = 1; + + // fprintf(stderr, "Reallocating array %d → %d\n", arrayLength, arrayLength * 2); + arrayLength *= 2; + array = realloc(array, sizeof(float) * arrayLength); + } + + array[arrayUsage] = current; + arrayUsage++; + } + + if (ferror(fp)) + { + fprintf(stderr, "Error while reading from file `%s´: %s\n", argv[i], strerror(errno)); + exit(EXIT_FAILURE); + } + + fclose(fp); + } + + for (int i = 0; i < arrayUsage; i++) + { + if (array[i] > max) + max = array[i]; + } + + printf("%.2f\n", max); +} -- cgit v1.2.3