Keitai Message
最初に,文字の表を準備しちゃいました.
#include <stdio.h> #include <string.h> int main(void) { // ファイル出力準備 FILE *pfO; // 出力ファイルポインタ pfO = fopen("a.out","w"); if(pfO==NULL) { printf("ファイルが開けません\n"); return -1; } // テーブル char t1[] = ".,!? "; char t2[] = "abc"; char t3[] = "def"; char t4[] = "ghi"; char t5[] = "jkl"; char t6[] = "mno"; char t7[] = "pqrs"; char t8[] = "tuv"; char t9[] = "wxyz"; // // 入力 // int n; // テストケースの数 scanf("%d", &n); for(int i = 0; i < n; i++) { char *s = new char [1024]; // テストケース int sl; // 文字列の長さ scanf("%s", s); sl = strlen(s); char preC = s[0]; // 1つ前の文字 char k=0; // 同じ文字が連続している回数 for(int j = 1; j < sl; j++) { if(s[j] != '0') { k++; } else { switch(s[j-1]) { case '1': fputc(t1[k%5], pfO); break; case '2': fputc(t2[k%3], pfO); break; case '3': fputc(t3[k%3], pfO); break; case '4': fputc(t4[k%3], pfO); break; case '5': fputc(t5[k%3], pfO); break; case '6': fputc(t6[k%3], pfO); break; case '7': fputc(t7[k%4], pfO); break; case '8': fputc(t8[k%3], pfO); break; case '9': fputc(t9[k%4], pfO); break; } k = -1; } } fputc('\n', pfO); delete [] s; } //ファイルポインタを閉じる fclose(pfO); return 0; }