From f26825e77ba2c1d3b7360796dac3ce43e2ba691b Mon Sep 17 00:00:00 2001 From: dm1sh Date: Sun, 13 Jun 2021 04:50:00 +0500 Subject: [PATCH] Fixed some memory errors --- .gitignore | 3 ++- main.c | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index f94dd38..71c7e11 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ a.out main -.vscode \ No newline at end of file +.vscode +vgcore* \ No newline at end of file diff --git a/main.c b/main.c index c1d1895..8f03719 100644 --- a/main.c +++ b/main.c @@ -117,6 +117,12 @@ arr *reverse(arr *a) return res; } +void free_arr(arr *a) +{ + free(a->p); + free(a); +} + /* Business logic */ @@ -200,7 +206,7 @@ arr *compose_interpolation_polynomial(arr *xes, arr *ys) { arr *res = init(xes->size); - arr *jcoef = init(xes->size - 1); + arr *jcoef = init(xes->size); for (int j = 0; j < xes->size; j++) { int minus = !(xes->size % 2); @@ -217,9 +223,11 @@ arr *compose_interpolation_polynomial(arr *xes, arr *ys) } res = add(res, jcoef); + + free_arr(xis); } - free(jcoef); + free_arr(jcoef); return res; } @@ -237,8 +245,8 @@ int main() for (int i = 0; i < n; i++) { - int x, y; - scanf("%d %d", &x, &y); + float x, y; + scanf("%f %f", &x, &y); insert(xes, i, x); insert(ys, i, y); @@ -251,7 +259,13 @@ int main() arr *res = compose_interpolation_polynomial(xes, ys); printf("Resulting polynomial will have such coeficients:\n"); - printa(reverse(res)); + arr *reversed = reverse(res); + printa(reversed); + + free_arr(reversed); + free_arr(res); + free_arr(xes); + free_arr(ys); return 0; } \ No newline at end of file