Untitled
unknown
c_cpp
3 years ago
1.3 kB
5
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...