Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
1.3 kB
0
Indexable
Never
#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; <-- 這行不能加 不知道為啥
}