๐Ÿ’ป Dev & CSSystem & Embedded

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ #1

Problem: Input File: [sample.txt 0.00MB](https://blog.kakaocdn.net/dna/WEEud/btqA6oyqdRE/AAAAAAAAAAAAAAAAAAAAAF6o8u7LK5SB9AIdNSz_-IRJgLPtbZjLxGCM5EIoOvqI/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=AakSu1DOyqICwWZkF6%2F%2FvvgPYME%3D&attach=1&knm=tfile.txt) Execution Result: ์†Œ์Šค Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <stdio.h> #include <string.h> #include <stdlib.h> void main() { FILE *fp; char buf[80]; int n = 0; if ((fp = fopen("sample.s", "r")) == NULL) { fprintf(stderr, "file not found...\n"); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { n += get_token_num(buf); } fclose(fp); printf("Number of token = %d\n", n); } int get_token_num(char *bp) { char *cp; int n = 0; for(cp = strtok(bp, " \t\n"); cp != NULL; ) { n++; cp = strtok(NULL, " \t\n"); } return(n); } Explanation: ...

January 12, 2020 ยท 1 min ยท Sobamemil
๐Ÿ’ป Dev & CSSystem & Embedded

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ #2

Problem: Input File: [sample.txt 0.00MB](https://blog.kakaocdn.net/dna/I5Kf9/btqA7q3zbiX/AAAAAAAAAAAAAAAAAAAAANrvSUHPXY9pb861NzszU1ZSjedb5bh_Z-XW6gY7gY7Q/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=Z3BB1PLUPoQ6gz717fxkZL1UeNg%3D&attach=1&knm=tfile.txt) Execution Result: ์†Œ์Šค Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 #include <stdio.h> #include <string.h> #include <stdlib.h> void get_token_num(char *bp, int *num, int *alpha, int *other) { char *cp; int i, count1, count2; for(cp = strtok(bp, " \t\n"); cp != NULL;){ if('A' <= cp[0] && 'Z' >= cp[0]) count1 = -1; else if('0' <= cp[0] && '9' >= cp[0]) count1 = 0; else{ count1 = 1; count2 = 1; break; } int len = strlen(cp); for(i=0; i<len; i++){ if ( 'A' <= cp[i] && 'Z' >= cp[i]) count2 = -1; else if ( '0' <= cp[i] && '9' >= cp[i]) count2 = 0; else count2 = 1; if(count2 != count1){ count2 = 1; break; } } switch(count2) { case -1 : *alpha += 1; break; case 0 : *num += 1; break; case 1 : *other += 1; break; default : fprintf(stderr,"error...\n"); exit(2); } cp = strtok(NULL," \t\n"); } } int main(){ FILE *fp; char buf[80]; int num = 0, alpha=0, other=0; if((fp = fopen("sample.s", "r")) == NULL){ fprintf(stderr, "file not found...\n"); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL){ get_token_num(buf, &num, &alpha, &other); } fclose(fp); printf("Number = %d\n", num); printf("Alphabet = %d\n", alpha); printf("Other = %d\n", other); return 0; } Explanation: ...

January 12, 2020 ยท 2 min ยท Sobamemil
๐Ÿ’ป Dev & CSSystem & Embedded

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ #3

Problem: Input File: [sample.txt 0.00MB](https://blog.kakaocdn.net/dna/45Fiq/btqA5PcbiZG/AAAAAAAAAAAAAAAAAAAAAKYSkI0QPrzP-9mNerqdA2M0Tul-f5_nfn5HKLp50AXV/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=zgVylyi4wQaArIqnlrxSbRC1hSk%3D&attach=1&knm=tfile.txt) Execution Result: ์†Œ์Šค Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 #include <stdio.h> #include <string.h> #include <stdlib.h> char sym[50][10], inst[50][10], op[50][10]; int symcnt, instcnt, opcnt= 0; void get_token_num(char *bp); void main() { FILE *fp; char buf[80]; int num = 0; int i; if ((fp = fopen("sample.s", "r")) == NULL) { fprintf(stderr, "file not found...\n"); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { get_token_num(buf); } fclose(fp); printf("์‹ฌ๋ณผ 10์นธ์”ฉ ์ถœ๋ ฅ :\n\n"); for(i=0; i<symcnt; i++){ if(num<10){ printf("%s\t", sym[i]); num++; } else if(num==10){ printf("\n"); num=0; i -= 1; } } num = 0; printf("\n๋ช…๋ น์–ด 10์นธ์”ฉ ์ถœ๋ ฅ :\n\n"); for(i=0; i<instcnt; i++){ if(num<10){ printf("%s\t", inst[i]); num++; } else if(num==10){ printf("\n"); num=0; i -= 1; } } printf("\n\nํ”ผ์—ฐ์‚ฐ์ž 10์นธ์”ฉ ์ถœ๋ ฅ :\n\n"); num = 0; for(i=0; i<opcnt; i++){ if(num<10){ printf("%s\t", op[i]); num++; } else if(num==10){ printf("\n"); num=0; i -= 1; } } printf("\n\n"); } void get_token_num(char *bp){ char *cp; char *test; int n = 0; char* result = strtok(bp," \t\n"); while(result!=NULL) { while(1){ if(n<4){ switch (n){ case 0 : n++; break; case 1 : strcpy(sym[symcnt], result); symcnt++; n++; break; case 2 : strcpy(inst[instcnt], result); instcnt++; n++; break; case 3 : strcpy(op[opcnt], result); opcnt++; n++; break; } } else n=0; break; } result = strtok(NULL,"\t\n"); } } Explanation: ...

January 12, 2020 ยท 2 min ยท Sobamemil
๐Ÿ’ป Dev & CSSystem & Embedded

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ #4

Problem: Input File: [numb.txt 0.00MB](https://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D&attach=1&knm=tfile.txt) Execution Result: ์†Œ์Šค Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> void get_token_num(char *bp); void hextodec(char *test, int len); // hex to decimal function void atohex(char *ascii, int len); // ascii to hex function int sum = 0; int cnt = 0; int main() { FILE *fp = NULL; char buf[80]; if((fp = fopen("numb.s", "r"))==NULL) { printf("file not found...\n"); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { get_token_num(buf); } fclose(fp); printf("\nsum = %d\n", sum); return 0; } void get_token_num(char *bp){ int i,len; char test[10]; char* result = strtok(bp," \t\n"); // ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ while(result!=NULL) { // ์ž๋ฅธ token์ด NULL ์ผ๋–„๊นŒ์ง€ loop if(result[0] == 'X'){ // ์ž๋ฅธ token ์˜ ์›์†Œ๊ฐ€ 'X' ์ด๋ฉด hexadecimal for(i=2; i<=strlen(result)-2; i++){ // ์ฒ˜๋ฆฌํ•  ๋ถ€๋ถ„๋งŒ ์ž˜๋ผ๋ƒ„ test[i-2] = result[i]; cnt++; } printf("token : %s\t",result); printf("\t\t"); hextodec(test, cnt); cnt=0; } else if(result[0] == 'C'){ // ์ž๋ฅธ token์˜ ์ฒซ ์›์†Œ๊ฐ€ 'C' ์ด๋ฉด ASCII printf("token : %s\t",result); for(i=2; i<=strlen(result)-2; i++){ // ์ฒ˜๋ฆฌํ•  ๋ถ€๋ถ„๋งŒ ์ž˜๋ผ๋ƒ„ test[i-2] = result[i]; cnt++; } test[cnt] = '\0'; atohex(test, cnt); cnt=0; } else { // ์ž๋ฅธ token์ด ๋ฌธ์ž์—ด ์ƒ์ˆ˜์ด๋ฉด decimal printf("token : %s\t",result); sum += atoi(result); printf("\t\tdec : %d\n", atoi(result)); } result = strtok(NULL," \t\n"); } } void hextodec(char *test, int len){ // 16์ง„์ˆ˜๋กœ ๋œ ๋ฌธ์ž์—ด int decimal = 0; // 10์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ int i; int position = 0; for (i = len - 1; i >= 0; i--) { // ๋ฌธ์ž์—ด์„ ์—ญ์ˆœ์œผ๋กœ ๋ฐ˜๋ณต char ch = test[i]; // ๊ฐ ์ž๋ฆฟ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์–ป์Œ if (ch >= 48 && ch <= 57) { // ๋ฌธ์ž๊ฐ€ 09์ด๋ฉด(ASCII ์ฝ”๋“œ 4857) // ๋ฌธ์ž์—์„œ 0์— ํ•ด๋‹นํ•˜๋Š” ASCII ์ฝ”๋“œ ๊ฐ’์„ ๋นผ๊ณ  // 16์— ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฐ’์„ ๊ณฑํ•จ decimal += (ch - 48) * pow(16, position); } else if (ch >= 65 && ch <= 70) { // ๋ฌธ์ž๊ฐ€ AF์ด๋ฉด(ASCII ์ฝ”๋“œ 6570) // ๋Œ€๋ฌธ์ž๋กœ ๋œ 16์ง„์ˆ˜์˜ ์ฒ˜๋ฆฌ // ๋ฌธ์ž์—์„œ (A์— ํ•ด๋‹นํ•˜๋Š” ASCII ์ฝ”๋“œ ๊ฐ’ - 10)์„ ๋นผ๊ณ  // 16์— ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฐ’์„ ๊ณฑํ•จ decimal += (ch - (65 - 10)) * pow(16, position); } else if (ch >= 97 && ch <= 102) { // ๋ฌธ์ž๊ฐ€ af์ด๋ฉด(ASCII ์ฝ”๋“œ 97102) // ์†Œ๋ฌธ์ž๋กœ ๋œ 16์ง„์ˆ˜์˜ ์ฒ˜๋ฆฌ // ๋ฌธ์ž์—์„œ (a์— ํ•ด๋‹นํ•˜๋Š” ASCII ์ฝ”๋“œ ๊ฐ’ - 10)์„ ๋นผ๊ณ  // 16์— ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฐ’์„ ๊ณฑํ•จ decimal += (ch - (97 - 10)) * pow(16, position); } position++; } printf("dec : %d\n", decimal); sum += decimal; } void atohex(char *ascii, int len){ char outword[10]; int i, tmp_len; for(i = 0; i<len; i++){ sprintf(outword+i*2, "%02X", ascii[i]); } tmp_len = strlen(outword); printf("hex : %s\t", outword); hextodec(outword, tmp_len); } Explanation: ...

December 19, 2019 ยท 4 min ยท Sobamemil
๐Ÿ’ป Dev & CSSystem & Embedded

์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์ ํŠธ #6

Problem: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ : [Command.txt 0.00MB](https://blog.kakaocdn.net/dna/bnbU30/btqBgeimBnY/AAAAAAAAAAAAAAAAAAAAAAPakDbTA4jf0WyG_DmDE76emfyLiazho4x1advtOToN/Command.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1788188399&allow_ip=&allow_referer=&signature=2iAm290NW4CFkRgpHKAQHRqBvxw%3D&attach=1&knm=tfile.txt) Execution Result: Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include<stdio.h> #include<string.h> #include<stdlib.h> void PrintAssm(char* name_buf, int name_size); struct OPTAB{ char name[8]; int len; } Wordtab[] = { {"LDA", 3}, {"STA", 4}, {"ADD", 5}, {"TIX", 2}, {"CMP", 6} }; int main() { char name_buf[8]; int wordtab_size = sizeof(Wordtab)/12; // Wordtab์— ์ •์˜๋œ ๋‹จ์–ด ๊ฐฏ์ˆ˜, 12 = size of char[8] + int FILE* fp; if((fp = fopen("Command.txt", "r"))==NULL) { printf("file not found...\n"); exit(1); } while(fgets(name_buf, sizeof(name_buf), fp) != NULL) { // fgets() ํ•จ์ˆ˜๋Š” scanf๋‚˜ gets()์™€๋Š” ๋‹ฌ๋ฆฌ ๋’ค์— ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ ๋ถ™๋Š”๋‹ค if(name_buf[0] == '\n') // name_buf ๋ฐฐ์—ด ๋งจ ์ฒ˜์Œ์ด ๊ฐœํ–‰๋ฌธ์ž์ด๋ฉด ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์—†์ด ๋ฌด์‹œ continue; if(name_buf[strlen(name_buf) - 1] == '\n') // name_buf ๋ฐฐ์—ด ๋งจ ๋์ด ๊ฐœํ–‰๋ฌธ์ž์ด๋ฉด name_buf[strlen(name_buf) - 1] = '\0'; // naem_buf ๋ฐฐ์—ด ๋งจ ๋์— ๋ถ™์€ ๊ฐœํ–‰๋ฌธ์ž ์ œ๊ฑฐ PrintAssm(name_buf, wordtab_size); } fclose(fp); } void PrintAssm(char* name_buf, int wordtab_size){ static int k=1; // ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ static int loc=0; // ๋‹จ์–ด์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ int i, res=-1; for(i=0; i<wordtab_size; i++){ res = strcmp(name_buf, Wordtab[i].name); // strcmp : ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์œผ๋ฉด 0 ๋ฆฌํ„ด if(res==0){ break; } } if(i==wordtab_size){ printf(" Undefined word\n"); // Wordtab ๋ฐฐ์—ด ์•ˆ์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ๋ช…๋ น์–ด๋ฉด ์ถœ๋ ฅํ•˜๊ณ  ๋‹จ์–ด ๋ฌด์‹œ } else{ if(k < 10) printf(" "); printf("%d, %.2X, %s, %.2d\n", k, loc, Wordtab[i].name, Wordtab[i].len); loc += Wordtab[i].len; // ๋‹จ์–ด์˜ ํ•ด๋‹น๊ธธ์ด๋ฅผ ๋”ํ•ด์„œ ๋‹ค์Œ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์•Œ๋ ค์คŒ k++; } } Explanation: ...

November 21, 2019 ยท 2 min ยท Sobamemil