From 5f68eb65cacd18ea0693ea46fe40619cec3cdabe Mon Sep 17 00:00:00 2001 From: unlockable Date: Wed, 5 Apr 2017 17:26:42 +0900 Subject: [PATCH 1/4] fix bugs and removing files. --- .gitignore | 2 ++ calc | Bin 11920 -> 0 bytes calc.c | 16 +++++++++------- calc.o | Bin 6608 -> 0 bytes operators.c | 4 ++-- operators.h | 2 +- operators.o | Bin 3288 -> 0 bytes 7 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 .gitignore delete mode 100755 calc delete mode 100644 calc.o delete mode 100644 operators.o diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2490a4d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.o +/calc diff --git a/calc b/calc deleted file mode 100755 index 023ec18849df720f42caff96d245271e7596b5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11920 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 diff --git a/calc.c b/calc.c index 85f1466..3e1b51a 100644 --- a/calc.c +++ b/calc.c @@ -5,28 +5,30 @@ int main(){ FILE *fp = NULL; int operand1, operand2; char operator = ' '; - int result, line = 0; + double result; + int line = 0; fp = fopen("read.txt","r"); if(fp!=NULL){ fscanf(fp, "%d", &line); for(int i=0; iPqxN>Kcmg;N#c$xQ-97n@o?rFv(gEV~6RZ+pnc3 zQj@|eJ$~WsX~PStn<)SN57_9acQt)<^A)guAFT(+>ojQnS?WsbJLkrxR=Az;IM_5c zwcK5Iqc}Dda~~X=O1SA8yQIyuO@0Y><}9J;jxIMHM1qb$%Qe|!u@ z$xor&CguO2+$rV%q8yd-CnztK@@g{9?=8E9J@dcpFc ztXQPTctn~$i-Dd(p3mc5k&fnIWKm=uZ*OXQ0Q}z1f{``Nk2Mc=z>;0Unw!^w9u_=_ zkfTs5u;2qLv})?$!ANs6HsS!obEiG@f!TcoLxUX%=P3V>C(Z{uutm#aHrSB><=i;` z;zHFuM%3T=>iUIf66t~MB*O}HGS&)^qD0u%3?pgBsay%a01iz~ppfvP5@++%|0FUOp5pw6~#A1|k@f-%=xcR(Uh!5kT?>=8O9S|XUpomdp?DOyb`&;hikd5cnKEf_nl>I0(G)iN;{Z&v(Mqa-JFdawh8) zGG-+YN2%kLT$Zs)`HWR4I3~!Tc8tBI&^yDH?MCsObBg=SjI1zDXd=z6s%aapWs7!S zw~MZssk(p)C1c28LR-mqE8!7ghP`JE2b`1*d&IOI!Q!zlI)xNNPKT|snfRJzRUFeA zNjz=YBTm)GnTf9!%hi%O02%a3vg4AK8&N4OS(PCXZzkv2nVePf$`zKWTF`|9-HMJj z3~ov>ui_MkDrP>K8#ZhhT}__W;IJ_pGDvWM$xu$@P~|ARiszVlIW{p0%z#YY3}>RN zvQdPHDki+YGMTCYxe*n#M)atxdStbVZQQawI?&x6T@~+%C!>!fyL*$p$<@(V+4U;s z+99)I+Ql3|!_Ez_g(Vv6?TN;QqOpSG8o7~J)wWzS2h$UCTpLouM1E!jg(H-M!3B}Q zdF}0inHCb(5H&`Os|H+pRhl|6!4P%Xf*pWbF>;xZy{?fhnQDokQmiPcEEG#-#bRO> zP=(V6{jiM#18bs7w`aYI>&fxPdOd-<4|Mm&lRfdCWm+DXx`y$6UtxT-jW23x3Ll59 z^cmP8_`@PL{^OChmjVNG8-verFp-KnPrMW~uv>TQs9-Om_TCc2U0SCE=>npwg7D(4 zSAtC34(?F}wS!C<1eti9DL7pR8JweaN>ILr?$HF9cyZL>r(Yp6bU_9$1Fc|2+kN>_ zhb_MN>Un|lye|LwS@?%%;qet;&wuwU{Hj^_FU-QLV?}J*0-R>B5i&)`%B^0VDL6T! zQeZ|t&&u#pa9G(Zv3zkatJ-jKz)_PCdl2@|NTy&EOV9;dfe$En_3*EPq+n~jI_5E6 zEQoQIZo}Oe%Tq`~QGV2nKPPEnk9kq{hlp49Y6g$ZVt?Mp&-3~Di;r*j@&ESmIJc_b z7TPixKkik;;f3NZ1C45=qw^6_1Qyg?^yz9x&q-L-3dt2jM$&dWVtob=Wc4{7!f1;V1 zH^uKEKQZcG@x8>a(f9|+(MFA*Aby+1C&-VX@dt^oX#57^_iH@vZ7fGL{zFN#S2P|! zp0J$O_&&mKY5YZL&VH%!8;E~T@~~CoKO+8^#vdd<-zOd+iK4}?G<$U}{7&ON z^8Y7|-$MM~G`@xSe`);d#0Tlhq~ggE??2C#j4FJWVNv!HG4>V-Iv*t-yQdH&6L+33 z!{wC4;XW+uVI|pS$%wmnFOTO9*I@Ci)8()3)!1w&-)l8UU>N$N2n3?|&UAbq?*-IkZ#@Ot)PPw)OINR{TeZv5RyG z#QfnL>G^vCINc{u?3VoBCi^1-U(s!MfllYp{9Wod>1&IkZo31xdhx$VF9OvbA>M=Z z`0+lW`vi*plls4fz*lrzJdf)2f0p`J>kJ{@f%X1h01kbsI6)NU8f}R0X$wR3uj(UU zU9bIqy7a00Ik}x4t7?CO+AF=P<^L!Zs@1BUV$OhooE9ci?faA=)oT2TejS8*`TK31 z{NWj^+N-?I15R7w!u3^Ze^#K{Lyx~+>}Y+R^0$-*hTjJGO``XYX7&1Sqw{Ao=>0|S F|Nm%fAxQuL diff --git a/operators.c b/operators.c index d51cb3e..d39d0db 100644 --- a/operators.c +++ b/operators.c @@ -10,7 +10,7 @@ int mul(int op1, int op2) { return op1*op2; } -int div(int op1, int op2) { - return op1%op2; +double div(int op1, int op2) { + return (double)op1/op2; } diff --git a/operators.h b/operators.h index bd08f7d..e16bf60 100644 --- a/operators.h +++ b/operators.h @@ -1,4 +1,4 @@ int add(int op1, int op2); int mul(int op1, int op2); -int div(int op1, int op2); +double div(int op1, int op2); int minus(int op1, int op2); diff --git a/operators.o b/operators.o deleted file mode 100644 index 71b996c467c636eea2a5466488a72a5e4c372d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288 zcmbtW-ESL35TCotCvJ?B6p<)M7(^)%_-t3H=?5u>5ZVd|6)5lmO3(JiHnH!l^SKHi zfk+^vs0dLBiB>`i5`RE>$J-Fd`Dn?9HCno3oH$B;W4*W_~+!yR&ot zWc}5bO~U{w23&%HCQ*QeslmJ~re&Ci3~XLG`1N4#=%ClXxp{PRy>I;T?oSG~e)RNu zUqc?edknhs$6o&cnWr%Hm{@&EBynO8G@5NFfa%m~U|2f}bdu-Bw}e`Lr^pWGtrlu$ zVyyvVW8+OPgmGdR6Y3&!@ghIOiwK8!5!M=DwtFowrd9TQ%>FHA3x}A^S_39(%^P6M zsO*Pgc9gs@#!S{4nDMM}Dm|aF(o5-CV{S6@Fo0S=EX$= zGqT1ZvRs`v7jTQ8fK=*I%EB`p7p!z5YhuKTnBz0}GexdSU7)U>k1+G&B^*t79G`~q zS9%7YqUP|B4e&c|;DmnAwX2c$bhI)mCl5c(AJ+4Sy~5!w(?r(gjm_*@v6ww;uh@m` znL@EtC>73UbM3I_xvO>8bAx6TRVS!6R(H>pa;24QuAa?pcSEPTlj{V2=vFaSt{Vov zSBG}f>vbXD@Y`U1buD_Fi+YffS9jEH%-)y!!EqBdnReLQ;aX8n@Yik#>PiKSzABpgJA)Wc$T$`DA z9UTxO+jC?@5d|vkuMO<)L}t8~DAK+$uz$pMQDoA7EwZ!e*g)5C41WLnm;nJRu~QHp zAK(zpLQ9fZeCKtW1rs_XbPFa&;L{`U)ChcL1fCv&AL~azE6geTAkTM}ajDCuf)`cz zKgkhfyI5lUJmazv3{@O8yr^QS?@;%Mcjy7+sk zuIl@iHC*O-UBhLb`x-9u1iSlwJ9H{IhCwtoZHtd{%N#PUH(^o5xM%B6i&up){L4e zK9KZJrc5M7?sIWQ|8D^3K9ZljL-=(TvWicAO)~t*;65pe=)QEnbd21e<)SVqT$<{> zuOOC`|Id7&l27?lH`ep7C9H`M)H(hYQWVkSZ=o$IexKvZeWLi(PxSa5#Ar>KCr*Xj z<@jGnfJYf$jvpeP#J|V|b@pHQpD|x^gN|O1>>%Sx|2xd*bR`_~Z^uY9k?$|zuW^#J ze;NLCUS~(zKl<89zPhhTsdkwEJ@e(D=TEwxJNZsgQYg2XK;K3BhU)R@Oq1e&$M@$^ Jw5y`W{|DoA6BYmf From 7d032043ba04d42b4798cbd50c99936980321e60 Mon Sep 17 00:00:00 2001 From: unlockable Date: Thu, 4 May 2017 02:45:39 -0700 Subject: [PATCH 2/4] Function pointer for Lab9 --- calc.c | 14 +++++++------- operators.c | 6 +++--- operators.h | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/calc.c b/calc.c index 3e1b51a..325de35 100644 --- a/calc.c +++ b/calc.c @@ -5,8 +5,8 @@ int main(){ FILE *fp = NULL; int operand1, operand2; char operator = ' '; - double result; int line = 0; + double (*calculator)(int, int); fp = fopen("read.txt","r"); if(fp!=NULL){ @@ -16,22 +16,22 @@ int main(){ if((fscanf(fp, "%d %c %d",&operand1, &operator, &operand2)) == EOF) break; switch(operator) { case '+': - result = add(operand1, operand2); + calculator = add; break; case '-': - result = minus(operand1, operand2); + calculator = minus; break; case '*': - result = mul(operand1, operand2); + calculator = mul; break; case '/': - result = div(operand1, operand2); + calculator = div; break; } + printf("%d %c %d = %lf\n", - operand1, operator, operand2, result); + operand1, operator, operand2, calculator(operand1, operand2)); } } return 0; } - diff --git a/operators.c b/operators.c index d39d0db..f70ae75 100644 --- a/operators.c +++ b/operators.c @@ -1,12 +1,12 @@ #include "operators.h" -int add(int op1, int op2) { +double add(int op1, int op2) { return op1+op2; } -int minus(int op1, int op2) { +double minus(int op1, int op2) { return op1-op2; } -int mul(int op1, int op2) { +double mul(int op1, int op2) { return op1*op2; } diff --git a/operators.h b/operators.h index e16bf60..c3c84b7 100644 --- a/operators.h +++ b/operators.h @@ -1,4 +1,4 @@ -int add(int op1, int op2); -int mul(int op1, int op2); +double add(int op1, int op2); +double mul(int op1, int op2); double div(int op1, int op2); -int minus(int op1, int op2); +double minus(int op1, int op2); From 8c7d10c30e48c739f1a6881336ef609ddc948eb7 Mon Sep 17 00:00:00 2001 From: unlockable Date: Thu, 25 May 2017 04:30:14 -0700 Subject: [PATCH 3/4] using my_fscanf --- calc.c | 35 ++++++++++++++++++----------------- my_fscanf.c | 43 +++++++++++++++++++++++++++++++++++++++++++ my_fscanf.h | 6 ++++++ 3 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 my_fscanf.c create mode 100644 my_fscanf.h diff --git a/calc.c b/calc.c index 325de35..9e2e9d3 100644 --- a/calc.c +++ b/calc.c @@ -1,36 +1,37 @@ #include #include "operators.h" +#include "my_fscanf.h" -int main(){ - FILE *fp = NULL; +int main() { + FILE *fp = fopen("read.txt", "r"); int operand1, operand2; char operator = ' '; int line = 0; - double (*calculator)(int, int); + double(*calculator)(int, int); - fp = fopen("read.txt","r"); - if(fp!=NULL){ - fscanf(fp, "%d", &line); - - for(int i=0; i +#include +void my_fscanf(FILE *fp, const char *format, ...) { + va_list list; + va_start(list, format); + while (*format) { + if (*format == '%') { + int c; + format++; + switch (*format) { + case 'd': + { + while (isspace(c = getc(fp))) {} + + int* addr = va_arg(list, int*); + *addr = 0; + while (isdigit(c)) { + *addr = *addr * 10 + c - '0'; + c = getc(fp); + } + + while (isspace(c = getc(fp))) {} + + ungetc(c, fp); + break; + } + case 'c': + { + while (isspace(c = getc(fp))) {} + + char* addr = va_arg(list, char*); + *addr = c; + break; + } + } + } + else + format++; + } + va_end(list); +} diff --git a/my_fscanf.h b/my_fscanf.h new file mode 100644 index 0000000..19d4f40 --- /dev/null +++ b/my_fscanf.h @@ -0,0 +1,6 @@ +// file: my_fscanf.h +#ifndef MY_FSCANF_H +#define MY_FSCANF_H +#include +void my_fscanf(FILE *fp, const char *format, ...); +#endif /* !MY_FSCANF_H */ From ac57095a8805d204dd94d4c81ed68b62e997ab0c Mon Sep 17 00:00:00 2001 From: unlockable Date: Tue, 30 May 2017 02:23:25 -0700 Subject: [PATCH 4/4] Improve_my_fscanf --- Makefile | 15 ------------ README.md | 16 ------------- calc.c | 38 ------------------------------ main.c | 20 ++++++++++++++++ my_fscanf.c | 66 +++++++++++++++++++++++++++++++++++++++++++++-------- operators.c | 16 ------------- operators.h | 4 ---- points.txt | 5 ++++ read.txt | 5 ---- 9 files changed, 82 insertions(+), 103 deletions(-) delete mode 100644 Makefile delete mode 100644 README.md delete mode 100644 calc.c create mode 100644 main.c delete mode 100644 operators.c delete mode 100644 operators.h create mode 100644 points.txt delete mode 100644 read.txt diff --git a/Makefile b/Makefile deleted file mode 100644 index 4df6d6b..0000000 --- a/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -SRCS = $(wildcard *.c) -OBJS = $(SRCS:%.c=%.o) -CFLAGS = -g -Wall -TARGET = calc -CC = gcc - -all: $(TARGET) - -$(TARGET): $(OBJS) - $(CC) $(OUTPUT_OPTION) $(CFLAGS) $^ - -clean: - $(RM) $(OBJS) $(TARGET) - - diff --git a/README.md b/README.md deleted file mode 100644 index 68b2d37..0000000 --- a/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Simple Calculator - -This is a buggy application that will be used for Lab5 of 'Introduction to Open Source Software Development.' - - - Fork the project. - - Create a topic branch from master. - - The branch name must be your student id. (e.g. 201624000) - - Make some commits to improve the project. - - Fix the well-knwon bugs. - - Remove object and binary files. - - Add .gitignore file - - Push this branch to your GitHub project. - - Open a Pull Request on GitHub. - - The Pull Request must be submitted to master branch of Classroom-IOSSD/SimpleCalculator! - - Capture the Pull Request and upload it to PLMS. - diff --git a/calc.c b/calc.c deleted file mode 100644 index 9e2e9d3..0000000 --- a/calc.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include "operators.h" -#include "my_fscanf.h" - -int main() { - FILE *fp = fopen("read.txt", "r"); - int operand1, operand2; - char operator = ' '; - int line = 0; - double(*calculator)(int, int); - - fp = fopen("read.txt", "r"); - if (fp != NULL) { - my_fscanf(fp, "%d", &line); - - for (int i = 0; i +#include +#include "my_fscanf.h" +int main() { + FILE* fp = fopen("points.txt", "r"); + char type[10]; + double x, y; + int line; + if (fp != NULL) { + my_fscanf(fp, "%d", &line); + for (int i = 0; i < line; i++) { + my_fscanf(fp, "%s (%f,%f)", type, &x, &y); + if (strcmp(type, "point") == 0) { + printf("X: %f:, Y: %f\n", x, y); + } + } + } + return 0; +} \ No newline at end of file diff --git a/my_fscanf.c b/my_fscanf.c index de30856..7949b0f 100644 --- a/my_fscanf.c +++ b/my_fscanf.c @@ -6,7 +6,7 @@ void my_fscanf(FILE *fp, const char *format, ...) { va_list list; va_start(list, format); while (*format) { - if (*format == '%') { + if (*format == '%') { int c; format++; switch (*format) { @@ -20,24 +20,72 @@ void my_fscanf(FILE *fp, const char *format, ...) { *addr = *addr * 10 + c - '0'; c = getc(fp); } - + while (isspace(c = getc(fp))) {} + format++; ungetc(c, fp); break; } case 'c': - { - while (isspace(c = getc(fp))) {} + { + while (isspace(c = getc(fp))) {} + + char* addr = va_arg(list, char*); + *addr = c; + format++; + break; + } + case 's': + { + char* addr = va_arg(list, char*); + int cnt = 1; + while (isspace(c = getc(fp))) {} + + addr[0] = c; + + while (!isspace(c = getc(fp))) { + addr[cnt] = c; + cnt++; + } + addr[cnt] = 0; //add null char + format++; + ungetc(c, fp); + break; + } + case 'f': + { + double* addr = va_arg(list, double*); + double decimalFraction = 0.1; - char* addr = va_arg(list, char*); - *addr = c; - break; + while (isspace(c = getc(fp))) {} + *addr = 0; + while (isdigit(c)) { + *addr = *addr * 10 + c - '0'; + c = getc(fp); + } + + if (c == '.') { + c = getc(fp); + while (isdigit(c)) { + *addr = *addr + (c - '0') * decimalFraction; + decimalFraction *= 0.1; + c = getc(fp); + } } + format++; + ungetc(c, fp); + break; + } + } + + } + else { + int c = getc(fp); + if (*format == c) + format++; } - else - format++; } va_end(list); } diff --git a/operators.c b/operators.c deleted file mode 100644 index f70ae75..0000000 --- a/operators.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "operators.h" - -double add(int op1, int op2) { - return op1+op2; -} -double minus(int op1, int op2) { - return op1-op2; -} -double mul(int op1, int op2) { - return op1*op2; -} - -double div(int op1, int op2) { - return (double)op1/op2; -} - diff --git a/operators.h b/operators.h deleted file mode 100644 index c3c84b7..0000000 --- a/operators.h +++ /dev/null @@ -1,4 +0,0 @@ -double add(int op1, int op2); -double mul(int op1, int op2); -double div(int op1, int op2); -double minus(int op1, int op2); diff --git a/points.txt b/points.txt new file mode 100644 index 0000000..279a10c --- /dev/null +++ b/points.txt @@ -0,0 +1,5 @@ +4 +point (1.3,2.2) +point (2.5,3.0) +point (3.2,4.4) +point (1.0,5.9) \ No newline at end of file diff --git a/read.txt b/read.txt deleted file mode 100644 index 3e2bf01..0000000 --- a/read.txt +++ /dev/null @@ -1,5 +0,0 @@ -5 -123 + 456 -234 * 234 -143 - 111 -987 / 132