Untitled
unknown
c_cpp
2 years ago
1.3 kB
2
Indexable
#include<stdio.h> #include<stdlib.h> #include<string.h> char letter(char *); int main(){ int n; scanf("%d ", &n); char* ms = (char*)calloc(n, sizeof(char)); scanf("%s", ms); char sig[5] = {0}; char conv[] = {0, 's', 0, 'l'}; int m = 0; for(int i=0, d=0, p=0; i<=n; i++){ // k 推buf用, d 判別前面是不是'='和數'='數, p 數點點 if(ms[i] == '.' || i == n){ // 是點點或是符號最後一個 if(d) sig[m++] = conv[d]; // 用'='長度來判斷*和- d = 0, p++; } else{ if(p == 3 || p == 7){ // 斷字 && 空格 m = 0; printf((p == 3) ? "%c" : "%c ", letter(sig)); } d++, p = 0; } } printf("%c\n", letter(sig)); // 輸出最後一個字 return 0; } char letter(char *sig){ // 轉符號成letter char letter[26][5] = {"sl", "lsss", "lsls", "lss", "s", // ABCDE "ssls", "lls", "ssss", "ss", "slll", // FGHIJ "lsl", "slss", "ll", "ls", "lll", // KLMNO "slls", "llsl", "sls", "sss", "l", // PQRST "ssl", "sssl", "sll", "lssl", "lsll", "llss"}; // UVWXYZ for(int i; i<26; i++){ if(strcmp(sig, letter[i]) == 0){ memset(sig, 0, 5); return i+'A'; } } // return 0; <-- 這行不能加 不知道為啥 }
Editor is loading...