「コケいろ-Keitai Message」の編集履歴(バックアップ)一覧はこちら
「コケいろ-Keitai Message」(2010/04/25 (日) 14:20:07) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
// 25分
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
char str[1024+1];
int TestCaseNum; // 文字列の数を記憶
scanf("%d",&TestCaseNum);
for(int i=0 ; i<TestCaseNum ; i++){
scanf("%s",str); // 1行読み込み
int len = strlen(str); // 文字数
int renzoku; // 同じボタンが連続で押された回数
int CharKind = (int)(str[0]-'0'); // 連続で押されている文字
bool InitFlag = true; // 初期化フラグ
for(int j=0 ; j<len ; j++){
if( InitFlag ){
InitFlag = false;
renzoku = 0;
CharKind = (int)(str[j]-'0'); // 連続で押されている文字
}
char buf = str[j];
if( buf!='0' ){ // 確定ボタン以外なら連続数値を増加
renzoku++;
}
else{
if( renzoku!=0 ){
int num; // 結局何番目の文字なのか
switch( CharKind ){
case 2:
case 3:
case 4:
case 5:
case 6:
case 8:
num = (renzoku-1)%3; // 3文字ループボタン
break;
case 7:
case 9:
num = (renzoku-1)%4; // 4文字ループボタン
break;
case 1:
num = (renzoku-1)%5; // 5文字ループボタン
break;
}
char Output[9][8]={
{".,!? "}, // 最後にスペースがある
{"abc"},
{"def"},
{"ghi"},
{"jkl"},
{"mno"},
{"pqrs"},
{"tuv"},
{"wxyz"},
};
printf("%c",Output[CharKind-1][num]); // 1文字出力
}
InitFlag = true;
}
}
puts("");
}
}
表示オプション
横に並べて表示:
変化行の前後のみ表示: