From 133d1abffa7a0fdd8babfd73c05769f8acff2d53 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Wed, 27 Dec 2023 16:23:28 +0300 Subject: [PATCH] meow --- project/ada_712.tar | Bin 0 -> 71680 bytes test/ada_712.tar | Bin 0 -> 10240 bytes test/other/Vova`s Proj/main.c | 26 ++-- test/other/Vova`s Proj/out/app | Bin 16520 -> 16608 bytes test/other/Vova`s Proj/text.txt | 36 ------ test/ver1.6/Makefile | 18 +-- test/ver1.6/{README => README.md} | 40 ++++-- test/ver1.6/declare.h | 10 +- test/ver1.6/functions.c | 143 +++++++++++++++------- test/ver1.6/main.c | 8 +- test/ver1.6/out/app | Bin 21552 -> 0 bytes test/ver1.6/out/function_zeros_calculator | Bin 21736 -> 25936 bytes 12 files changed, 161 insertions(+), 120 deletions(-) create mode 100644 project/ada_712.tar create mode 100644 test/ada_712.tar rename test/ver1.6/{README => README.md} (51%) delete mode 100755 test/ver1.6/out/app diff --git a/project/ada_712.tar b/project/ada_712.tar new file mode 100644 index 0000000000000000000000000000000000000000..78eed578f29e5ee4e66c94e4b01f91abb3d4a44b GIT binary patch literal 71680 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 literal 0 HcmV?d00001 diff --git a/test/ada_712.tar b/test/ada_712.tar new file mode 100644 index 0000000000000000000000000000000000000000..9df64990f7be3c1f7194a0c22852a1ab3a09f3c5 GIT binary patch literal 10240 zcmeIu0Sy2E0K%a6Pi+o2h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM P7%*VKfB^#r47?2tC;$Kf literal 0 HcmV?d00001 diff --git a/test/other/Vova`s Proj/main.c b/test/other/Vova`s Proj/main.c index 18b5dd7..cdd358c 100644 --- a/test/other/Vova`s Proj/main.c +++ b/test/other/Vova`s Proj/main.c @@ -13,12 +13,13 @@ int linesWritten = 0; void signalHandler(int signal) { - printf("Number of lines written: %d\n", linesWritten); + printf("\b\bNumber of lines written: %d\n", linesWritten); + fflush(stdout); } void writeFile(const char *fileName, int numLines, const char *placeholder) { - int fd = open(fileName, O_CREAT | O_WRONLY | O_TRUNC, 0666); + int fd = open(fileName, O_CREAT | O_WRONLY, 0666); if (fd == -1) { @@ -32,9 +33,13 @@ void writeFile(const char *fileName, int numLines, const char *placeholder) exit(EXIT_FAILURE); } - signal(SIGINT, signalHandler); + if (ftruncate(fd, 0) == -1) + { + printf("Failed to truncate the file\n"); + exit(EXIT_FAILURE); + } - // lseek(fd, 0, SEEK_END); + signal(SIGINT, signalHandler); for (int i = 0; i < numLines; i++) { @@ -75,18 +80,9 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } - char *placeholder = argv[3]; - while (*placeholder) - { - if (!isalnum(*placeholder) && !isspace(*placeholder)) - { - printf("The placeholder must consist of letters and numbers\n"); - exit(EXIT_FAILURE); - } - placeholder++; - } + const char *placeholder = argv[3]; - writeFile(fileName, numLines, argv[3]); + writeFile(fileName, numLines, placeholder); return 0; } \ No newline at end of file diff --git a/test/other/Vova`s Proj/out/app b/test/other/Vova`s Proj/out/app index 6d7c039381b1d67839b6098469a40328404ee698..5096dacef509bb149ae51e8adb5659a7d2eaf3ea 100755 GIT binary patch delta 2877 zcmZ`*eQXp(6rZ_|-k$X6?v=WCTDiRnw3YU*t)->khj8?WfW!oIL=7z;wT;j=_8K&z zM^n*WjwO`|E%z^Q}}MT8g?_(O`(*hbU?#S~Lq-|WtuMdNH{-^}m* z-g`4|W@l%hkB;}z-5&S2LW~kJ1<`8u-17!>mD%kKaPGMnaMl=2LTW&v!6h+^$rO^v zW}l+S!Wu0#`_YD5tyx{zX$#)_RL=Tiu*+JcxzVQ>93g$!kqN_CDY|P{KAg4YL)uzKmx13F zq+8*tRfRRS7P`V{y=&VIQM(61cAHBfcMv&bSP}_3?2ov6Vw<{pW2Cz`)63EWktw(lB%$DiNF53g_HKal;oUM39gOPxn7F zt@nD-`VyvyF;h2n{V3bu6AvLH8J<4Ez6(?oVz+Z)~A7LYBdm0DR$y7M<0yfVmAI-&SG0$%1GCYmMKc?YI z?!tJnNih?-Kf^0PUL+Yl8%c(wNFtoZb~-YcS8lMsX1S9YV`s|9=R6)~WybzHY#H|b zDLIlfl6@4RMEFYoGgnBQ4bI1mg6K)jSiLQ*k|7U9ox;paC0AWx!4qd#(C&u!!%eQ)QMu8ohI8cZ3) zwS&v)oz^=1CgC?;6~sv+77M3Z8Qz%g5P-Mna3+yX;>|I!iV6a zGSw?ail9+e;G5zP#sgPTD^7W?B-^pUY*XMbS7{V#%A097^pyuO;z+sb6~9cuKW}*R z;7l)@5_j68u$W+=mCyKa?nG^pF4wLnWyDbV4xfS?} z%o_|H3O5MPL!!UR9Epxli1pSyHv#ZC*NVfj_J|Hab+@P4T<1jY>5drA1I& z+eF8qqc-Rq3c`(d&^=oFi+1pE!n zv@#2M-pCKLh}qwKPa)AG{j9BCr(?dkMXf|H2eWAF-_bhQqs7@ zQDI9k#%&eLWJ!DeSOneVO#^`dEhT7_54DaeT0qc+2|<|#3j-#j2Ic^NxGeB??tAy9 zq0+ead*|zS&OP_MbMJfe2|AXbla;QllV~HT6Y|EEV>dljGHubtY0I&{d#!s-y0jOZ z)YpF4pi6=hhb~hj#dw8lbvYdPF`edqryxNkXOyF&92JFU=wF??J-W{_g_NPo^Zz1d zc*G1?jf3U!yMH_4c?y33KxeXpOu9w*gMRJ5Bv>EuS$-9vY18~w% z1$pBpdK-9(d=PFfg8rgCFkduD1F&e6AZn_F$)+OslWCW$tE)TqP&CrDud9Esn?#3W zLtrjmUDn^XuiHB`=xroBZ@+ch_O5#GX4q1Ez)y*h{}@-K@%j>(Jb)~(9x3bVDPEZn>vS6wwE&K`BQ9yT+8vY^>IvbS+NuSQlX{f=#o0@Mzl>w=l=P0v1+*%hB%VdiWTNlPA&UiBm9$DhmvMx&Rs%dDzuOsT_AB*;d_}=91Y#eULPXI zXRX9p^OyQ_|JGC(Bb2xQg(&vZS%u<%&i)dyzm!eRTQG(8T=pkXHAE(ar+O_<^{fAC zOWlOerH45uLwU+4Ih-9%X;~z*l}g%?zGDHULh1rr#KerJ;? zVSbD&z)g@tg-FIh77yB)t*UKP8^(& zIdh1Pc%pcAc(+UG>T^zVt)M|j zpjPy$pjnt@Sl-5h%0OG0Wrb)o;D>d3d?izq|#*_~pPx l2HM-=)B?1*8s^)=Sd{jl- diff --git a/test/other/Vova`s Proj/text.txt b/test/other/Vova`s Proj/text.txt index 2cf66c7..e69de29 100644 --- a/test/other/Vova`s Proj/text.txt +++ b/test/other/Vova`s Proj/text.txt @@ -1,36 +0,0 @@ -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia -mia diff --git a/test/ver1.6/Makefile b/test/ver1.6/Makefile index e83b3af..a6184e2 100644 --- a/test/ver1.6/Makefile +++ b/test/ver1.6/Makefile @@ -1,25 +1,19 @@ # Это комментарий, который говорит, что переменная CC указывает компилятор, используемый для сборки CC= gcc #Это еще один комментарий. Он поясняет, что в переменной CFLAGS лежат флаги, которые передаются компилятору -CFLAGS= -c -Wall +CFLAGS= -Wall -pedantic default: build -general: main.o functions.o - $(CC) ./out/main.o ./out/functions.o -o ./out/function_zeros_calculator -lm -main.o: main.c - $(CC) $(CFLAGS) main.c -o ./out/main.o - -functions.o: functions.c - - $(CC) $(CFLAGS) functions.c -o ./out/functions.o clean: - rm -rf ./out/main.o ./out/functions.o + rm ./out/function_zeros_calculator -build: general clean +build: + $(CC) ./main.c ./functions.c $(CFLAGS) -o ./out/function_zeros_calculator -lm run: - ./out/function_zeros_calculator \ No newline at end of file + ./out/function_zeros_calculator + \ No newline at end of file diff --git a/test/ver1.6/README b/test/ver1.6/README.md similarity index 51% rename from test/ver1.6/README rename to test/ver1.6/README.md index 344d4d1..1ef78af 100644 --- a/test/ver1.6/README +++ b/test/ver1.6/README.md @@ -1,35 +1,53 @@ # Function Zeros Calculator ## Описание + Эта программа предназначена для вычисления нулей функции на языке C в среде Linux. -## Установка +## Установка (с помощью репозитория на GitHub) + 1. Склонируйте репозиторий: git clone https://github.com/ada-dmitry/tmp_project.git -2. Перейдите в каталог проекта: cd /Project_1.2 +2. Перейдите в директорию проекта: cd /done_project +3. Следуйте указаниям пункта "Использование" + +## Установка (с помощью архива .tar) + +1. Распакуйте архив в любую удобную вам директорию. +2. С помощью терминала зайдите в распакованную директорию по заданному пути. +3. Следуйте указаниям пункта "Использование" ## Использование -0. Для нормальной работы программы необходимо установить программу GNU PLot - (sudo apt install gnuplot) + +0. Для нормальной работы программы необходимо установить программу GNU PLot и сборщик make + (sudo apt install gnuplot || sudo apt install make) 1. Соберите программу: make -2. Запустите программу: ./out/function_zeros_calculator -3. Введите необходимые параметры для вычисления нуля функции: a - ЛЕВАЯ граница отрезка - b - ПРАВАЯ граница отрезка, eps > 0 - точность вычисления корня(до 10^-6). +2. Запустите программу: make run +3. Строго следуйте указаниям программы, вводя границы отрезка, точность вычисления корня и + выбирая метод вычисления. ## Замечания + 1. Для корректной работы программы, необходимо вводить отрезок, на котором есть лишь один корень - (это можно проверить благодаря графику). + (это можно проверить благодаря графику). 2. После вызова меню выбора действий (Ctrl+C) можно использовать как верхний регистр, так и нижний. 3. Не рекомендуется бесконечно вызывать Ctrl+C без выбора действия, это может повлечь ошибки - вследствие переполнения памяти. - + вследствие переполнения памяти. ## Обработка сигнала SIGINT + Программа обрабатывает сигнал SIGINT, что позволяет давать пользователю выбор действия + при нажатии сочетания клавиш Ctrl+C. +## Обработка сигнала SIGTSTP + + Программа обрабатывает сигнал SIGTSTP, переводящий программу в фоновый режим, + +вновь предоставляя пользователю управлять терминалом, но возвращающий настройки терминала к исходным. + ## Авторы + Антипенко Дмитрий Андреевич [C22-712] - https://github.com/ada-dmitry/ Кузнецов Даниил Евгеньевич [C22-712] Никитин Михаил Андреевич [C22-712] Ускова Екатерина Александровна [C22-712] - diff --git a/test/ver1.6/declare.h b/test/ver1.6/declare.h index bbd4d80..0a7d609 100644 --- a/test/ver1.6/declare.h +++ b/test/ver1.6/declare.h @@ -1,3 +1,5 @@ +#include + extern double a, b, eps, x, *pa, *pb, *px; extern short method, *mth, sig_flag; extern struct termios default_term, modif_term; @@ -20,4 +22,10 @@ double numerical_derivative(double x); void __exit(); void show_grapgh(); void input_diap(); -void change_diap(); \ No newline at end of file +void change_diap(); +// double input_number(char ch); +bool is_digit(char c); +bool is_sign(char c); +bool is_dot(char c); +double read_parse(char ch); +bool is_enter(char c); \ No newline at end of file diff --git a/test/ver1.6/functions.c b/test/ver1.6/functions.c index e29fe53..95f9f6c 100644 --- a/test/ver1.6/functions.c +++ b/test/ver1.6/functions.c @@ -4,6 +4,8 @@ #include #include #include +#include +#include #include "declare.h" @@ -15,7 +17,6 @@ double f(double x) // Функция, заданная пользователе void show_grapgh() { char func[100] = "x+20"; - tcsetattr(0, TCSANOW, &modif_term); // Подключение GNU Plot FILE *gp = popen("gnuplot -persist", "w"); @@ -34,7 +35,6 @@ void show_grapgh() getchar(); sig_flag = 0; fprintf(gp, "exit\n"); - tcsetattr(0, TCSANOW, &default_term); return; } @@ -176,53 +176,29 @@ void __exit() void input_diap() { double tmp; - char input[50]; sig_flag = 1; system("clear"); - printf("\n\nТекущие значения: [%lf : %lf] eps = %lf\n\n\ -Введите левую границу отрезка и нажмите Enter (по умолчанию: %lf): ", + printf("\n\nТекущие значения: [%g] : %g | eps = %g\n\n\ +Введите левую границу отрезка и нажмите Enter (по умолчанию: %g): ", *pa, *pb, eps, *pa); - fgets(input, sizeof(input), stdin); - if (input[0] == '\n') - { - *pa = A; // значение по умолчанию - } - else - { - sscanf(input, "%lf", pa); - } + *pa = read_parse('A'); system("clear"); - printf("\n\nТекущие значения: [%lf : %lf] eps = %lf\n\n\ -Введите правую границу отрезка и нажмите Enter (по умолчанию: %lf): ", + printf("\nТекущие значения: %g : [%g] | eps = %g\n\n\ +Введите правую границу отрезка и нажмите Enter (по умолчанию: %g): ", *pa, *pb, eps, *pb); - fgets(input, sizeof(input), stdin); - if (input[0] == '\n') - { - *pb = B; // значение по умолчанию - } - else - { - sscanf(input, "%lf", pb); - } + *pb = read_parse('B'); system("clear"); - printf("\n\nТекущие значения: [%lf : %lf] eps = %lf\n\n\ -Введите точность вычисления и нажмите Enter (по умолчанию: %lf): ", + printf("\nТекущие значения: %g : %g | eps = [%g]\n\n\ +Введите точность вычисления и нажмите Enter (по умолчанию: %g): ", *pa, *pb, eps, eps); - fgets(input, sizeof(input), stdin); - if (input[0] == '\n') - { - eps = EPS; // значение по умолчанию - } - else - { - sscanf(input, "%lf", &eps); - } + eps = read_parse('E'); + system("clear"); __fpurge(stdin); printf("\nВыберите метод вычисления корня и нажмите Enter:\ @@ -242,7 +218,6 @@ void input_diap() sig_flag = 0; printf("В указанных границах нуля функции не существует.\n"); printf("Поменяйте границы\n"); - // choose_path(); change_diap(); } if (eps < 0) // Если пользователь указал отрицательную точность @@ -273,16 +248,18 @@ void change_diap() // Возврат к обычному выводу tcsetattr(0, TCSANOW, &default_term); - printf("Введите новые значения границ a и b: "); + system("clear"); - scanf("%lf%lf", pa, pb); + printf("Введите новое значение левой границы: "); + *pa = read_parse('A'); + printf("Введите новое значение правой границы: "); + *pb = read_parse('B'); if (f(*pa) * f(*pb) > 0) { printf("\nВ указанных границах нуля функции не существует.\n"); printf("Поменяйте границы\n"); choose_path(); - // change_diap(); } if (*pa == *pb) { @@ -300,4 +277,88 @@ void change_diap() sig_flag = 0; return; -} \ No newline at end of file +} + +bool is_digit(char c) +{ + return (c >= '0' && c <= '9'); +} + +bool is_sign(char c) +{ + return (c == '+' || c == '-'); +} + +bool is_dot(char c) +{ + return (c == '.'); +} + +bool is_enter(char c) +{ + return (c == '\n'); +} + +double read_parse(char ch) +{ + char input[50]; + double number; + + __fpurge(stdin); + + fgets(input, sizeof(input), stdin); + + __fpurge(stdin); + int i = 0; + bool is_valid = true; + bool has_dot = false; + // Проверка первого символа, который может быть знаком или переносом строки + if (is_sign(input[0])) + { + i++; + } + else if (is_enter(input[0])) + { + switch (ch) + { + case 'A': + return A; + case 'B': + return B; + case 'E': + return EPS; + } + } + // Проверка символов, формирующих цифры числа + while (input[i] != '\0') + { + if (is_digit(input[i])) + { + i++; + continue; + } + else if (is_dot(input[i]) && !has_dot) + { + has_dot = true; + i++; + continue; + } + else + { + is_valid = false; + break; + } + } + + if (is_valid) + { + number = atof(input); + return number; + } + else + { + printf("Ошибка: некорректный ввод\nЗавершение выполнения программы...\n"); + __exit(); + } + return 1; +} diff --git a/test/ver1.6/main.c b/test/ver1.6/main.c index 1c4ac1f..6031a38 100644 --- a/test/ver1.6/main.c +++ b/test/ver1.6/main.c @@ -53,22 +53,22 @@ int main() system("clear"); if (*mth == 0) { - printf("Fork\n"); + printf("\nFork\n"); fork_method(); } else if (*mth == 1) { - printf("Chord\n"); + printf("\nChord\n"); chord_method(); } else if (*mth == 2) { - printf("Newton\n"); + printf("\nNewton\n"); newton_method(); } else { - printf("Fork\n"); + printf("\nFork\n"); fork_method(); } diff --git a/test/ver1.6/out/app b/test/ver1.6/out/app deleted file mode 100755 index 84ae7f9ac6032969c4468428afef4ab6f0f4af5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21552 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 diff --git a/test/ver1.6/out/function_zeros_calculator b/test/ver1.6/out/function_zeros_calculator index d7e77cd24c8cf6d5678e065426e7a8c9c4f8bcd1..756d22879edeafc9e31db415680b93c9542052cb 100755 GIT binary patch literal 25936 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 Mg~S+}f(>Q=2RE=ap8x;=