From 9ec9fbbd3d30b52d34ad5d8d6017c037e62f4f10 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Fri, 24 Nov 2023 19:19:46 +0300 Subject: [PATCH] just push --- Fixed_Project 1.0/main.c | 7 +- Fixed_Project 1.0/out/app1 | Bin 0 -> 16592 bytes try/a.out | Bin 0 -> 16576 bytes try/func.c | 146 ++++++++++++++++++++++++++++++++----- 4 files changed, 129 insertions(+), 24 deletions(-) create mode 100755 Fixed_Project 1.0/out/app1 create mode 100755 try/a.out diff --git a/Fixed_Project 1.0/main.c b/Fixed_Project 1.0/main.c index 99d0d45..53176cc 100644 --- a/Fixed_Project 1.0/main.c +++ b/Fixed_Project 1.0/main.c @@ -5,7 +5,7 @@ #include double a, b, eps, x, *pa = &a, *pb = &b; -char ch, *pch = &ch; +char choice, *ch = &choice; double f(double x); void find_zero(); @@ -19,6 +19,7 @@ double f(double x) // Функция обязана быть линейной void choose_path() { + printf("\nПродолжить поиск корня?\ (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); do @@ -27,8 +28,6 @@ void choose_path() switch (*ch) { case 'C': - // find_zero(); - //printf("Ожидание сигнала Ctrl+C...\n"); return; case 'A': printf("Работа программы завершена.\n"); @@ -99,8 +98,6 @@ void find_zero() exit(0); } - - int main(){ double tmp; printf("Введите интервал [a, b] и точность eps: "); diff --git a/Fixed_Project 1.0/out/app1 b/Fixed_Project 1.0/out/app1 new file mode 100755 index 0000000000000000000000000000000000000000..bd9370fb5973822ccf9d559f1018c95481e69df2 GIT binary patch literal 16592 zcmeHOeQ;FQb-xm<5$0osW5S0M^M>FU8?;D#8B9x?RIx% z3r}MU6b!Opz@ceUH+5|H4|}FmZ6>%ilT}S@EVrqWI&6RE z-g6#rpQTCK=^vfxUd`Kc&+mNPbI-l^?R~3vpQ_umzPzkVNg1bpUlC_bGf0>Pm3MLl zB&=4bDfpbDZdTWUAFnYZ4;uohDHqC%X$9lsK*???kk4Yms5z!tISU4xOBTp`2c|s5Q~JeCeXrSXFDHy`!_LbH(ziLCTi_Nhe_0M-G(Tm)DW*>q+ivQN+RcgfXlvq$xUy|bgeE(a zji$49TQt$GGKuYwsqOJ>Q%f|hQXSch%CyGgDd;9L$)-E+v@=c7_GT6DOk`CmooLTC zD{?}UXSv$2Y2(^jdvWLvx3)O6%&jk3s_cyo^>!?tj&Dz7vhj37eQj&9J>C#)Y^7+n zwG=r3{oZP|83l1Ema9>$%c<9|ip>R<1wBZ^a%DFskw1$TU zU7j{Z!$XH%o;F0oLod2KZG?u0o^^TJ01XfA6dtYD>(9MrLcio(Ta-EXm{{CBN-1Y*^(U~8m%)m*AZdM;%rM|xL%5lsH|tA#>7 zhGf1OSO&iA5!kxzll{=+5K?6;?1qEW>PCixmG$%yn2u+s;o!Ex=1B0#Gx%sf^T=7z z#I&iTe&V?y(sM4~NX>i|A3fhgz~8UJZy%MYoIoXbOa)J$=^ojVU51a~fu}KHx<}Sz zr*@Cj26uOY8#;#%IIEj#oK1(HHz-f}FQEoO%m@ZFHi59->D%BMEo>yx^CpzKyh=A{ zrN9EMq;%~08R)3)Ak1ca1y`Xw9DJy5q&fKETg|~mgOA+|f2%o~J-^X09AvhW*xo>H zA?2o$LU_kiE1H9$!QeCd5Tvf{-h~>(FGC#Z?qMZVSD;Gi z4$eQXhaK%VPu6)FpgU9k{C^@@x;7Qzz+eI!(EQGS42(SIBfXdo8oH>V%KAK}$ay_Z zG(&EH<&SUIQPPT;rry6B$XOunSik&fUw=BPFIp)*USDqG2!5s+%K<&`lMuWs%&#}z zrgXp-)AoFNxhsR=9PYI?{L!!V!2QehIurS$V9g5q6$yF+<)(Q`cmcoS(9EWlPYIua z(Q^|H`OjF6>f5GTF&un&@Z;cuDtEd=_0OS^*BGyc2w8 zIkaRI=tU9S{ROWfdQ?BjjHB+6GCi8cJ$m<7(xY1;@Z6;=7>?&u==pjMnz(<=M11JN zL?ZjAEGD9FBeT4^f3I}|@69(Uf&ROuip7pePzT>5CaCe7Dx(dqff);5isbdj)@>1rOEbi|$k3oJgUc%l~Xd4{@GZ2P_TWHh6Gn z?E)Zy^+0H}9z{=^gAdY53M{5}_6PooJ9CJ9^#(5A>h^ocRL8o>eGg)H;(r&ZC>r81 zZ*sjJGc@07VmEVrj_FTzh3TFGYo_daBPg)o=l>!1lGkW;><`?_8F&W*a!P2=n`X`b zE3o&k()7^#9(SihGow^W87O6-lz~zPN*Vb7k%6+J|1K(Zz4M)1mvh>A71s&pm@|;u zmD^`IZ-5=h?R1V?&T;27G*0CXthTt!ueGY6@@cz;)*6z$=Jb&jZ1%7}sP;LB;b>Q` zTP%-i@T7Ax*SpZ#LUyN|K3Md9Dgxk^^J=au*X^WA9OI9er>&^v z3|Nh5`IgpZ3zy6u=j#^2JdR)}3#X8S-rVjYQ*;o(DQKO5)7;lkIprMBJ?#v@BdYyY zZfCAL*MnGhBBmpd_vdz*XwlEVgxh1zNshNRn{HiDOR?x7J4s#39dKSZo$&;m>opNx z?>wi+ll1l>R6Phss99X-coH!3gjr5KFpIo%QPGcxp6&@ybfTD z(RB+cJ%T*Kc%g~w2;$MR2%SeFX?DGV#Oxw%;{)>$;0Xk@heAOPt~JMvneloF;^QVi zG)Oek)a(g-9y6VA`lS=F@Q?2R`i+5x)e-86^`+=StML&^pbl{lI(VA$j^xBsnQP-K zW9%H#8Pk&>*IP8!U}4=)^9efegU-_=cmvVul|&43LaPG(Lz{pp{yvzT(6M8-V0vr) z6EqRgseb1qb=-Lgae1Qyy9>6Mi?m{(b|SZrMrWbVTvB9aIgRpZjE^1ztc3#z=(Ka( z7b*Pq^D@DdxHia2{(Gy!6cZKvz(VCI!?~YbQY*V@-0#u59oV3&zV{1-y`a^X3xz(= zFz9*0K~tcA{)pEToz*J0##Eh*H4{!cW~0<6x*+Cm^3ozd?w6 z+^llaAo<(4PJK`)ECY4rt;T*Ppv$;^1o?eldtfB1K%WC26$*2FGKfm0lz~zPN*O3+ zpp=192L7*Q0RL#CBJa!bwno3BNBCs=pu(FF{LHS)2z}|J%reA%FYhMiY0p7rwjoO1 z&!c??6_Nk@)k2c^KKgGAioBav$rX7g?E=g3NTAC(rufxZ7Y;{FXI==KslBTWLfaE6 zuNdO)-zG3WgK3xn!B=n~5;yI4sL+0rinM>TVcq`W7hv5#sB2UFUqSOD+&}DDMXoKe z#nk)-mgDzq%}XBG{r?(~_q+WLt9iV`OgA(AGSd{(E~W>W`u+Siz9MWis+r3BmYbR1 zP+Pmwn!mNNqdnVU)zpNRhN`P-Iy77JZP|aZ2XM%Ny9Z>eN^zvY5eFd)qOls zELQjo=xF*hzU5d9oB91xR#z6|T|RsX1S=o_LiG*sb+l{uaDV}e|!t<=O>>vj`edas^j5@Q)2}D`S~&M5Veau`2DX0ZWVbj zOv4y{nt{(9MSmyhm*ZR6cfZ{Od>Y2RGHi^bzv_Xebhajx#4G&K#)O@XZdU*@*^cJs zP?Ng$y1$)mvzzFJ{|q!^Nqc*1vN76f$Fj+E#*TJ$s-|RHsx_XC$3oSkYtY$+gdI(% zqdV+)dp5m8HK(I(aXZ%0*0uvC9?phlwn&vuI3OO|UcY5ceVtu*?>ZaD4Awn#@0$9J zwSaLf#jcC6G_r1svNvqHZ|#~*_I>NuKTy|TH>_E^sSXzYQxjo1_V8N{IM8VdSCDYHCr zqS+Qc)KMh%pS7@KnIs2-gBSO~aV*hpcVyx*g^b7SC*tWO;z=f&a84uM9zy_)nGCnD zPmUCy4{;m2L!T6JS?aZIIVN6>3jrC9idb@nTn^gJ3LThM*^p!5;2C>tld~evstURL^CZa6x-2` zCJfD{jpVU-I+IAY7cn+u>3D0D47iqR&8m=&G=yqsdlD>FGVvxA%Emjv()5OQQqP1? zyoD!pOAOwGGd|4BHWpGxQ_;2roEdYBkP2Z*wPB@|&8 z>q?#I7jV&DSM0|+$49zU-201R6`gnT+WXJ*(eIw#BHsgo(SFElFZ(f}mMAjy+tZn% zUt+H;@yqjsP-$QG(f;@`KNUSoh`l^-2&Mf36^fCnVlVst1Tfk{ioHC)2t5axx3D`G z`eW4SSwQS%|1WelYfAj0C-h0k>DfYfdA<-DW_y4946FU9P)@~Oo_B=G^NzId@BcU1 zel0r;Q$r|1UooscJ4iY6+rJ2maw7iS?>GLQljllyqhpmi(Qo7O+FNWVw2PEHMZP|T zz6_by{sk5Y6+LkwywE~zXD|C1p%*xx;zsO*r}vY*@yotbs64le zzJLADzMbr4{FTL;OjAAsfBQd#y4POz|3Vwsoe-Zp^^ZRL^Ye_R(0SzCQ)K=KbP1KI zxZLM`Irm&;H2nI)3;hUcL65!sUUBeuwEqokY3@q<@?0e6spZ_X45PFwdHieGQWwQu zey`ZO2p~$QA?~Nx3%w4;UV9a0)oMfMyOyRRb^=d^F=5ia>|f`zJrhxP*RKH6xP8B# z*e?)8rW7j`FLmdh5$Vru>`?Bbp9f0&afx5#AXyFIDXME13UD2h-htceZ N?=Tv(eFi>O{TDk|52647 literal 0 HcmV?d00001 diff --git a/try/a.out b/try/a.out new file mode 100755 index 0000000000000000000000000000000000000000..c29759fd364bb46588ad4edd5486f4af3c2c9408 GIT binary patch literal 16576 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 LNz8L8xKQywb4)+0 literal 0 HcmV?d00001 diff --git a/try/func.c b/try/func.c index 0405b0a..4bc72da 100644 --- a/try/func.c +++ b/try/func.c @@ -1,36 +1,144 @@ #include +#include #include #include #include -double f(double x) +double a, b, eps, x, *pa = &a, *pb = &b; + +double f(double x); +void find_zero(); +void ctrlc_handler(int signum); +void choose_path(); + +double f(double x) // Функция обязана быть линейной { - return x * x - 16; + return x + 4; } -void find_zero(double *pa, double *pb, double eps, double *px) +void choose_path() { - *px = (*pa + *pb) / 2; // метод деления отрезка пополам - if (f(*pa) * f(*px) < 0) - *pb = *px; - else - *pa = *px; - printf("Текущее приближение: %lf\n", *px); + char choice, *ch = &choice; + printf("\nПродолжить поиск корня?\ + (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); + do + { + *ch = getchar(); + switch (*ch) + { + case 'C': + return; + case 'A': + printf("Работа программы завершена.\n"); + exit(0); + case 'R': + printf("Введите новые значения границ a и b: "); + scanf("%lf %lf", pa, pb); + if (f(*pa) * f(*pb) > 0) + { + printf("В указанных границах нуля функции не существует.\n"); + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + if (*pa == *pb) + { + if (f(*pa) == 0) + { + printf("\nКорень уравнения: %lf\n", *pa); + printf("Работа программы завершена.\n"); + exit(0); + } + else + { + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + } + find_zero(); + printf("Ожидание сигнала Ctrl+C...\n"); + return; + } + } while (*ch != 'A' || *ch != 'R' || *ch != 'C'); + printf("Ошибка ввода, повторная попытка..."); + choose_path(); } void ctrlc_handler(int signum) { printf("\nПолучен сигнал Ctrl+C\n"); - printf("\nПродолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); + choose_path(); + find_zero(); } -// void choose_path() -// { -// char choice = getchar(); -// if(choice == 'A') -// break; -// else if(choice == 'C') -// find_zero() +void find_zero() +{ + double x; + x = (*pa + *pb) / 2; // метод деления отрезка пополам + while(fabs(*pb - *pa) > eps || f(x) != 0){ + printf("%lf %lf", *pa, *pb); + sleep(2); -// } -// void new_row(double *pa, double *pb); \ No newline at end of file + if (f(*pa) * f(x) < 0) + *pb = x; + else if(f(*pb) * f(x) < 0) + *pb = x; + + printf("Текущее приближение: %lf\n", x); + + if(f(x) <= eps) + { + printf("\nКорень уравнения: %lf\n", x); + printf("Работа программы завершена.\n"); + exit(0); + } + + x = (*pa + *pb) / 2; // метод деления отрезка пополам + } + printf("\nКорень уравнения: %lf\n", x); + printf("Работа программы завершена.\n"); + exit(0); +} + +int main(){ + double tmp; + printf("Введите интервал [a, b] и точность eps: "); + scanf("%lf %lf %lf", pa, pb, &eps); + + if (*pa > *pb) // Если пользователь перепутал границы + { + printf("Границы указаны неверно, запуск задачи с исправленным условием\n"); + tmp = *pa; + *pa = *pb; + *pb = tmp; + } + + if (f(*pa) * f(*pb) > 0) + { + printf("В указанных границах нуля функции не существует.\n"); + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + if (eps < 0) // Если пользователь указал отрицательную точность + { + eps = eps * (-1); + printf("Точность отрицательна, условие приведено в порядок, запуск решения...\n"); + } + + if (*pa == *pb) + { + if (f(*pa) == 0) + { + printf("\nКорень уравнения: %lf\n", *pa); + printf("Работа программы завершена.\n"); + exit(0); + } + else + { + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + } + + find_zero(); + + printf("Ожидание сигнала Ctrl+C...\n"); + signal(SIGINT, ctrlc_handler); + while(1); + return 0; +} \ No newline at end of file