From 6efd4f57866af0add8e2098279880c4191a8a872 Mon Sep 17 00:00:00 2001 From: AZEN-SGG Date: Sun, 11 May 2025 17:02:30 +0300 Subject: [PATCH] End dist --- 2025.05.02/dist/Krivoruchenko_SK/a01.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a02.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a03.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a04.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a05.c | 4 ++-- 2025.05.02/dist/Krivoruchenko_SK/a06.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a07.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a08.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/a09.c | 2 +- 2025.05.02/dist/Krivoruchenko_SK/init_f.c | 7 ++++--- 2025.05.02/dist/Krivoruchenko_SK/init_f.h | 2 +- 2025.05.02/tests/main_test.sh | 25 +++++++++++++++-------- 2025.05.09/01Ex/init_f.h | 2 ++ 2025.05.09/01Ex/solve.c | 4 ++-- 2025.05.09/01Ex/solve.h | 4 +++- 2025.05.09/02Ex/solve.c | 4 ++-- 2025.05.09/02Ex/solve.h | 4 +++- 2025.05.09/03Ex/main.c | 2 +- 2025.05.09/03Ex/solve.c | 7 ++++--- 2025.05.09/03Ex/solve.h | 4 +++- 20 files changed, 51 insertions(+), 34 deletions(-) diff --git a/2025.05.02/dist/Krivoruchenko_SK/a01.c b/2025.05.02/dist/Krivoruchenko_SK/a01.c index 442f122..9e64206 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a01.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a01.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a02.c b/2025.05.02/dist/Krivoruchenko_SK/a02.c index 0c0d7c0..18b9cfb 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a02.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a02.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) sscanf(argv[1], "%lf", &x_0) == 1 && (sscanf(argv[2], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[3], "%d", &m) == 1) && (m > 0)) && - ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s x_0 eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a03.c b/2025.05.02/dist/Krivoruchenko_SK/a03.c index 0dc3eb4..598e7f0 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a03.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a03.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a04.c b/2025.05.02/dist/Krivoruchenko_SK/a04.c index 3403844..24a13bd 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a04.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a04.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a05.c b/2025.05.02/dist/Krivoruchenko_SK/a05.c index befd203..d77f173 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a05.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a05.c @@ -12,7 +12,7 @@ int main(int argc, char *argv[]) int m, k, cl, it, task = 5; double (*f) (double); - double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6}; //TODO: Rem f7 + double (*f_lst[]) (double) = {f0, f1, f2, f3, f4, f5, f6}; int len_f = sizeof(f_lst) / sizeof(f_lst[0]); if ( @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a06.c b/2025.05.02/dist/Krivoruchenko_SK/a06.c index 11c7d05..ad3bfb0 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a06.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a06.c @@ -25,7 +25,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[4], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[5], "%d", &num_iter) == 1) && num_iter > 0) && - ((sscanf(argv[6], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[6], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s m a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a07.c b/2025.05.02/dist/Krivoruchenko_SK/a07.c index c426a06..11be590 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a07.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a07.c @@ -20,7 +20,7 @@ int main(int argc, char *argv[]) sscanf(argv[1], "%lf", &x_0) == 1 && (sscanf(argv[2], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[3], "%d", &m) == 1) && (m > 0)) && - ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[4], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s x_0 eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a08.c b/2025.05.02/dist/Krivoruchenko_SK/a08.c index 4c307e6..13310fb 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a08.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a08.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/a09.c b/2025.05.02/dist/Krivoruchenko_SK/a09.c index 71b6fa4..b65ad8e 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/a09.c +++ b/2025.05.02/dist/Krivoruchenko_SK/a09.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[]) (a <= b) && (sscanf(argv[3], "%lf", &eps) == 1 && (eps >= 0)) && ((sscanf(argv[4], "%d", &m) == 1) && m > 0) && - ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[5], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s a b eps M k\n", argv[0]); return -1; diff --git a/2025.05.02/dist/Krivoruchenko_SK/init_f.c b/2025.05.02/dist/Krivoruchenko_SK/init_f.c index 8c30b0c..788ccfa 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/init_f.c +++ b/2025.05.02/dist/Krivoruchenko_SK/init_f.c @@ -1,6 +1,7 @@ #include "init_f.h" #include +#include static int cl = 0; @@ -11,9 +12,9 @@ int get_call_count (void) return cl; } -int get_call_function_count (void) +int get_call_function_count (void) { - return cl_f; + return cl; } int get_call_derivative_count (void) @@ -130,4 +131,4 @@ double d6 (double x) else if (x > DBL_EPSILON) return (1.0 / (sqrt(sqrt_x + 1) * sqrt_x)) * 0.25; return 0; -} \ No newline at end of file +} diff --git a/2025.05.02/dist/Krivoruchenko_SK/init_f.h b/2025.05.02/dist/Krivoruchenko_SK/init_f.h index c927c42..10f5c98 100644 --- a/2025.05.02/dist/Krivoruchenko_SK/init_f.h +++ b/2025.05.02/dist/Krivoruchenko_SK/init_f.h @@ -2,7 +2,7 @@ #define INIT_F_H int get_call_count (void); -int get_call_function_count (void) ; +int get_call_function_count (void); int get_call_derivative_count (void); double f0 (double x); diff --git a/2025.05.02/tests/main_test.sh b/2025.05.02/tests/main_test.sh index aac6f9a..a501b07 100755 --- a/2025.05.02/tests/main_test.sh +++ b/2025.05.02/tests/main_test.sh @@ -8,7 +8,8 @@ if [ "$#" -ne 1 ]; then exit 1 fi -prog=$(printf "%02d" "$1") +num=$(printf "%02d" "$1") +prog="a$num.out" mkdir -p tests @@ -18,14 +19,14 @@ if [ -f Makefile ]; then make fi -if [ ! -f a0$prog.out ]; then - echo "Отсутствует исполняемый файл... [a0$prog.out]" +if [ ! -f $prog ]; then + echo "Отсутствует исполняемый файл... [$prog]" echo "Завершение..." exit 2 fi -outlog="$(pwd)/tests/out_a${prog}_$script_name.log" -errlog="$(pwd)/tests/err_a${prog}_$script_name.log" +outlog="$(pwd)/tests/out_a${num}_$script_name.log" +errlog="$(pwd)/tests/err_a${num}_$script_name.log" rm -f "$outlog" "$errlog" @@ -36,15 +37,21 @@ i=2 for (( k = 3 ; k < 7; k++ )); do for (( a = -100 ; a < -40 ; a++ )); do for (( b = -9 ; b < 10 ; b++ )); do - echo "./a0$prog.out "$(echo "$a / 10" | bc -l)" "$(echo "$b / 10" | bc -l)" $eps $iter $k" - echo "$i $(./a$prog.out "$(echo "$a / 10" | bc -l)" "$(echo "$b / 10" | bc -l)" $eps $iter $k)" + x="$(echo "$a / 10" | bc -l)" + y="$(echo "$b / 10" | bc -l)" + cmd="./$prog $poly_deg $x $y $eps $iter $k" + echo "$cmd" + echo "$i $(eval "$cmd")" ((i+=2)) done done for (( a = -9 ; a < 10 ; a++ )); do for (( b = 11 ; b < 100 ; b++ )); do - echo "$i ./a0$prog.out "$(echo "$a / 10" | bc -l)" "$(echo "$b / 10" | bc -l)" $eps $iter $k" - echo "$i $(./a$prog.out "$(echo "$a / 10" | bc -l)" "$(echo "$b / 10" | bc -l)" $eps $iter $k)" + x="$(echo "$a / 10" | bc -l)" + y="$(echo "$b / 10" | bc -l)" + cmd="./$prog $poly_deg $x $y $eps $iter $k" + echo "$cmd" + echo "$i $(eval "$cmd")" ((i+=2)) done done diff --git a/2025.05.09/01Ex/init_f.h b/2025.05.09/01Ex/init_f.h index ee5e8e8..048d4fc 100644 --- a/2025.05.09/01Ex/init_f.h +++ b/2025.05.09/01Ex/init_f.h @@ -1,6 +1,8 @@ #ifndef INIT_F_H #define INIT_F_H +#define NUM_FPE 1e-300 + int get_call_count (void); double f0 (double x); double f1 (double x); diff --git a/2025.05.09/01Ex/solve.c b/2025.05.09/01Ex/solve.c index c167e37..49ebf7b 100644 --- a/2025.05.09/01Ex/solve.c +++ b/2025.05.09/01Ex/solve.c @@ -3,11 +3,11 @@ #include #include -int t1_solve ( +double t1_solve ( double (*f) (double), double x, double h ) { - if (h < DBL_EPSILON) + if (h < NUM_FPE) return DBL_MAX; return (f(x + h) - f(x)) / h; } diff --git a/2025.05.09/01Ex/solve.h b/2025.05.09/01Ex/solve.h index 3d511de..29c0617 100644 --- a/2025.05.09/01Ex/solve.h +++ b/2025.05.09/01Ex/solve.h @@ -1,7 +1,9 @@ #ifndef SOLVE_H #define SOLVE_H -int t1_solve ( +#define NUM_FPE 1e-300 + +double t1_solve ( double (*f) (double), double x, double h ); diff --git a/2025.05.09/02Ex/solve.c b/2025.05.09/02Ex/solve.c index 4f64af7..77fb4cd 100644 --- a/2025.05.09/02Ex/solve.c +++ b/2025.05.09/02Ex/solve.c @@ -3,11 +3,11 @@ #include #include -int t2_solve ( +double t2_solve ( double (*f) (double), double x, double h ) { - if (h < DBL_EPSILON) + if (h < NUM_FPE) return DBL_MAX; return (f(x + h) - f(x - h)) / (2 * h); } diff --git a/2025.05.09/02Ex/solve.h b/2025.05.09/02Ex/solve.h index 441ffb2..7ccf2dc 100644 --- a/2025.05.09/02Ex/solve.h +++ b/2025.05.09/02Ex/solve.h @@ -1,7 +1,9 @@ #ifndef SOLVE_H #define SOLVE_H -int t2_solve ( +#define NUM_FPE 1e-300 + +double t2_solve ( double (*f) (double), double x, double h ); diff --git a/2025.05.09/03Ex/main.c b/2025.05.09/03Ex/main.c index 03f49a1..97f74d3 100644 --- a/2025.05.09/03Ex/main.c +++ b/2025.05.09/03Ex/main.c @@ -19,7 +19,7 @@ int main (int argc, char *argv[]) !((argc == 4) && sscanf(argv[1], "%lf", &x) == 1 && ((sscanf(argv[2], "%lf", &h) == 1) && (h > 0)) && - ((sscanf(argv[3], "%d", &k) == 1) && ((0 <= k) && (k <= len_f)))) + ((sscanf(argv[3], "%d", &k) == 1) && ((0 <= k) && (k < len_f)))) ) { fprintf(stderr, "Usage: %s x h k\n", argv[0]); return -1; diff --git a/2025.05.09/03Ex/solve.c b/2025.05.09/03Ex/solve.c index 5270648..8e5ba6b 100644 --- a/2025.05.09/03Ex/solve.c +++ b/2025.05.09/03Ex/solve.c @@ -3,12 +3,13 @@ #include #include -int t3_solve ( +double t3_solve ( double (*f) (double), double x, double h ) { - if (h < DBL_EPSILON) + double h_2 = h * h; + if (h_2 < NUM_FPE) return DBL_MAX; - return (f(x + h) - 2 * f(x) + f(x - h)) / (h * h); + return (f(x + h) - 2 * f(x) + f(x - h)) / h_2; } diff --git a/2025.05.09/03Ex/solve.h b/2025.05.09/03Ex/solve.h index c36855e..2705cbb 100644 --- a/2025.05.09/03Ex/solve.h +++ b/2025.05.09/03Ex/solve.h @@ -1,7 +1,9 @@ #ifndef SOLVE_H #define SOLVE_H -int t3_solve ( +#define NUM_FPE 1e-300 + +double t3_solve ( double (*f) (double), double x, double h );