From a4eb45cd8236507ccdafe46e4488804697fda6a1 Mon Sep 17 00:00:00 2001 From: nk365yf Date: Sun, 19 Oct 2025 23:48:39 +0200 Subject: [PATCH] try --- a1/prog | Bin 16272 -> 16272 bytes a1/program.c | 83 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 60 insertions(+), 23 deletions(-) diff --git a/a1/prog b/a1/prog index 98ec133a2df112a1c585fb7d2a2ff93397cc9f26..5ad5437c2355a3acaa0f31b14862a900a50b32aa 100755 GIT binary patch delta 3017 zcmZ`*eN0=|6~E6P7(4d-f$6ge#g8;p5E>gN%@QyssR--q+NNw-{#YX<2vA_nAc1EM zHDxw3o^Ty1=xHi<+SIgvw9eG3MYIvqLPmxZ7HLy6RceX0KhjBy9FcB7`-kbWy`A$u z9NH;Y@;%?bd+vGX`rhgIbbQ)pxapdyxM=OSFlF@5+z8qHn&7v9hYLRTH%_(bl(|%y z)Ft@K?pEb&^qX|lpvsdl&hhS?=9SaDa&UqB*pm}fpL-N43{{Xb9ICz_Y`+HE4_4!l zH{y7$_0!j#J9aL-bM6a&^6@suXNTdevDR-xU_C>|-ed`sNw*FDY>aR}hglO3g2~54 zVBN@bPtgnsQv>%)vTzp^`%Sd(gH6*BIAVU;#0-ps&&}I=k0Oj#1LhqVa4=?K9hxpy zF<@oP$oe$-!-@@7k4aqTF5A;j2*Tyq9? zxt@I#nV+KU3>;?cOJ~*BD3^arc6>`VL)P^OnB07O!pN9h{z;IrubvA!0~1P~;#71K zHR6U`Xu^Kh3S-Niy?@^-4 zZm}Lz(z3l1i_X+Ieg-Xn>4kfR(o^Fwm*tclXDZ8T3j{q6R3Au@I_A$PhW{(x>ch}g z7Kq1k^K^j4%&|g`SnsW=ML{y>e}o;^(*G-pstq9j}fuYw-7Na2dJZnDURP+v#>bp5i=%bRWaRG z2rr76@{{$L&s0h%$nxbpc8Hi>&igPQY-;C375*`4MscdVaT}RGC68O!7gs0D6jgLc zU&XV*D?ZCg$K*diujQ1NoN$O!@pHuMfGX14xE7utFUH=&KQjV<7Q=4OVWE~&KJ=%t zoT}7NZf6iGqljw1P!5x+GMp0&G%H7e809DsqZ|cd;?1!@Qo+RUP0&jJlSS+Q)p`}9 zj*b)QJLotOGe*aWn3k9&`5wh`NhJwHqD?g_g7a)QCaY?ad2VZh9(0N)7KkY5#3<;* zDCoqr#Kw{f%BExWDh!?u=j9aHl=`mVUoqB5t?$vVu~27~dg!}Ro78!E5$pK=e`Jik zuHl@Lo!uJHU(y>2*oRxeEC{yRT3qyAf$l-l2YzR3%qN=|<3#Pdsy6@DCd9qG^>x%= zTf)TVe&zkD^cBGrM;`C0ANF?jGzm2$Hul)blfsGNuI}f1r4iwoC&|o?4fc+n>g|?# zdxY+jLn8x&eY%TK(=7}P3N<}+-Lcl;p^*`E(&CH8M}%U0O}7o<2u1b#2`yA~w6V6~ z;h|w+7}KFu1_n>XBn0NR8zXpMFuHX{|0T<#NLP@aN18`URX?yM%biH8*Jb%S(&U%2 zyoU5Mq%Jz#&>=kZ;C1wV7zK9NqFk#xk$n_@g@0l+{91U3Yk(^PKU9l;?c}G8N~H8b zpTJd4(5s;BJFZ_CS{)_E9~l}yn;9@@bZSWax1+1X}cM0l3eOwM^LI+_bblvaL5>O);6Ob|BJLC{t zY2dj8+-L~-^;d-M^P=Xn2-RVp%R*!LaYP>vhY)u*%=>c$vSs`gd5-yT8=r?e%3Q48 zs~VN+AsdC+Jv?^=ez1q%(TSCCF+X!1QhoHf5A_~{o7s7IYtPHJYg*bT4A8W95TBdy zo4r9>Tmyc|F!%Sp)10TTS8CJRxmE3EIK3}C_tC!J894z?H-_8=le&OTmtYpPm&~eG zr#@J33|Ut+?F!U2?YH{0BKu&VX@9Zgdg(`DwkghaLO2q#CY1KWiyH8|GQac{%v0|A(BcDePk>hv(oHiz76f|{#N@4$L<2s)z; o&>nR;^iOx5-pMdyDT72*ux@!RNB0+-D2tCV8vS$Y(KopN0ho&wIRF3v delta 2293 zcmZ`*du&rx7(b`ab#%73bd-)kTNq@6t#{p+d$f(bxr)LTnZ_Y;#7$Y8qp~(J0@;>P zr724~K0rt?7ULfbO;}Tc7=>&i&j6x{@(`0@oY@2-8~dXwc>T_OATIGFx4-Xoe&0FY zx%WFwbR;?w(=~+a%{yjF8i_QLz|pC_ck;9Qbh4pO2R7=>BIcMN8s{u-k4tN=@S01xwr8gMg$l7I{owb=K zWL%uv4)d)I_KkYv86WKxMKN*TGV4!ttcT;);)N*O^%7!nEh9v63{TR3nxuaZ*Q|4D zkKh4{xoPxGyymsIwzH)Zp(l79Ekcj}I|kL6aIO&7?`3jyAZ!wcEUr!#cS=Ew?~~#y zK7v(TK5d4L+^nKE(L^E(>V@v$5+(|<;jmeV2Unmna{g~o9BIORoY60bBb<!X{bR5_zWU1e^b>mXMCw-BBjfxCFvJ z%dtId+K%0NE5hhyWM-rtwp`wX31o_*@HAOiAI_15ZI&otXtzWxM)H+89jB%FEJIJN z7~8`HmSelbz9VWxU7?KN@|ao}DNwjo%esiNg>8}9a?F;n6B9_JRES6K{UwSq>v2p) zZok+qIdDJB4-cl=$}Q1DSUzQG;R2kH!3jd_?1=3l+6QRtt4Sn!u-bDwCXnF#DfWKU z<6#J0cknAAO+s8Zw-7T4vE>=xfDq4}S&T|gl$Gn`2$qx)kD|g3KcYB!icdm=y+dtNCg;K zgH}lr;`Ny(VS!y*ZCF1t4;|-ErOl3staQj2((H2UUdkqGH%FSuiVdyp&F&3hcW6_4 zOSolIn|p3kHY+Ecq4ifGvXAz`@1od>*m_SCcOz~^{1ovf;#$PhW1{#q;^F(E_zT>1 z&zaeYo_S~?%ZyUDDL`={K0A;p1SOt1^a|8@9IMZv-iUT}06%9ra;J;cB-u@skA6Y#YO|9N?hClyR127 zAPKlt;-dS2dU=nPbq*YC-)vmNb7ey+3gQK*^YUCmX+cU?M}}Uni?b@%lLDj)2EA)& z1~}eDZ-9?~U6Tw#N;3`m`9j(W-||gGzr&Bd8gW6)tIeH z%n*2d4w`^!-%45tT|OS;Q$B}Ny`j|jA5oxWI@_jiJ-kq6bNaC!9LXcrMRJVVxu1is zGKX_5dTknxsAW=l8lbMs0sUp2*`vy;hbh#Qx8dashs(X$m#4~+mr45P@&tuwMX9Yl z%r2otE1!LO$!-iBq6hk^&RFz)wet6M){ zhxvgO)B~w17bF5!POYtq0Z0XSuF)-%sCW^^0=!ARFB4D{tOR$k6cRzJ>9Kzm!OBN3 PQUY%;HbUvK;D_`dr') { if (top == -1) { - *err= i + 1; - return false; + *err = i +1; + return 0; } - char last = stack[top--]; + char last = stack[top--]; if ((c == ')' && last != '(') || (c == ']' && last != '[') || - (c == '}' && last != '{')) { - *err - = i + 1; - return false; + (c == '}' && last != '{') || + (c == '>' && last != '<')) { + *err = i+1; + return 0; } } } if (top != -1) { - *err = strlen(s) + 1; - return false; + // Знаходимо позицію незакритої дужки + char lastOpen = stack[top]; + for (int i = 0; s[i] != '\0'; i++) { + if (s[i] == lastOpen) { + *err = i +1; + return 0; + } + } + } + return 1; +} + + +char getExpectedClosing(char open) { + switch (open) { + case '(': return ')'; + case '[': return ']'; + case '{': return '}'; + case '<': return '>'; + default: return '?'; } - return true; } int main() { char input[MAX_SIZE]; - + if (fgets(input, MAX_SIZE, stdin) != NULL) { input[strcspn(input, "\n")] = '\0'; - + printf("Read: %s\n", input); // Додано "Read: " + int err = 0; if (is_valid_brackets(input, &err)) { - printf("True\n"); + printf("All brackets OK\n"); // Змінено з "True" } else { - printf("False at position %d\n", err -); + char stack[MAX_SIZE]; + int top = -1; + for (int i = 0; i < err ; i++) { + char c = input[i]; + if (c == '(' || c == '[' || c == '{' || c == '<') { + stack[++top] = c; + } else if (c == ')' || c == ']' || c == '}' || c == '>') { + top--; + } + } + char c = input[err - 1]; + if (c == ')' || c == ']' || c == '}' || c == '>') { + if (top == -1) { + printf("Unexpected closing bracket %c in %d\n", c, err-1); + } else { + printf("Crossed bracket %c in %d, expected %c\n", c, err-1, getExpectedClosing(stack[top])); + } + } else { + printf("Unclosed bracket %c in %d\n", stack[top], err-1); + } } + } else { + printf("Error reading input\n"); } - + return 0; } -