From fdad753456ebc24dfc51f3c26e37e73381dacf5f Mon Sep 17 00:00:00 2001 From: 20051799 <20051799@lab06.edu-al.unipmn.it> Date: Thu, 19 Jan 2023 15:37:50 +0100 Subject: [PATCH] added todays assigment --- 20230119/in1.txt | 10 ++++++ 20230119/in2.txt | 10 ++++++ 20230119/main.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 20230119/out.txt | 1 + 4 files changed, 115 insertions(+) create mode 100644 20230119/in1.txt create mode 100644 20230119/in2.txt create mode 100644 20230119/main.c create mode 100644 20230119/out.txt diff --git a/20230119/in1.txt b/20230119/in1.txt new file mode 100644 index 0000000..5f0fa2d --- /dev/null +++ b/20230119/in1.txt @@ -0,0 +1,10 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +-1 diff --git a/20230119/in2.txt b/20230119/in2.txt new file mode 100644 index 0000000..a915231 --- /dev/null +++ b/20230119/in2.txt @@ -0,0 +1,10 @@ +1 +2 +3 +3 +3 +9 +8 +7 +6 +-1 diff --git a/20230119/main.c b/20230119/main.c new file mode 100644 index 0000000..580a6d3 --- /dev/null +++ b/20230119/main.c @@ -0,0 +1,94 @@ +#include <stdio.h> + +#define ARR_SIZE(arr) (sizeof(arr) / sizeof(*arr)) + +#define MARK -1 + +int write_to_file(char *filename, int arr[]) { + int ret = 0; + + FILE *file; + if ((file = fopen(filename, "w")) == NULL) { + ret = -1; + } else { + int i = 0; + while (arr[i] != MARK && arr[i + 1] != MARK) { + fprintf(file, "%d-", arr[i]); + + ++i; + } + fprintf(file, "%d", arr[i]); + + fclose(file); + } + + return ret; +} + +int read_from_file(char *filename, int arr[], int size) { + int ret; + FILE *file; + if ((file = fopen(filename, "r")) == NULL) { + ret = -1; + } else { + int i = 0; + int end = 0; + int buf; + while (i < size && !end) { + fscanf(file, "%d", &buf); + if (buf == MARK) { + end = 1; + } else { + arr[i] = buf; + ++i; + } + } + if (end) { + arr[i] = MARK; + ret = i; + } else { + arr[0] = MARK; + ret = -1; + } + + fclose(file); + } + + return ret; +} + +void modify(int arr1[], int arr2[]) { + int i = 0; + while (arr1[i] != MARK && arr2[i] != MARK) { + int a = arr1[i]; + int b = arr2[i]; + if (a == b) { + arr1[i] = 0; + } else if (a < b) { + arr1[i] = b; + } else { + ++arr1[i]; + } + ++i; + } +} + +int main(void) { + int ret = 0; + + int arr1[10]; + if (read_from_file("in1.txt", arr1, ARR_SIZE(arr1)) < 0) { + ret = 1; + } else { + int arr2[10]; + + if (read_from_file("in2.txt", arr2, ARR_SIZE(arr2)) < 0) { + ret = 1; + } else { + modify(arr2, arr1); + write_to_file("out.txt", arr2); + } + } + + return ret; +} diff --git a/20230119/out.txt b/20230119/out.txt new file mode 100644 index 0000000..0684616 --- /dev/null +++ b/20230119/out.txt @@ -0,0 +1 @@ +0-0-0-4-5-10-9-8-9 \ No newline at end of file -- GitLab