AOJ_127 Pocket Pager Input

問題
解法
テーブルを作る。
数字を読んで変な数字がないか確認。
文字列出力。で解ける。
コード

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char i2a[5][7] = {
"afkpuz",
"bglqv.",
"chmrw?",
"dinsx!",
"ejoty " };
int main(){
	char s[300];
	char hukugou[300];
	int len;
	char c;
	while(scanf("%s", s) != EOF){
		bool f = false;
		len = 0;
		if(strlen(s) % 2 != 0){
			f = true;
		}else{
			int p, q;
			for(int i = 0; i < strlen(s); i+=2){
				p = s[i] - '1';
				q = s[i + 1] - '1';
				if(p > 5 || q > 4 || p == -1 || q == -1){
					f = true;
					break;
				}else{
					hukugou[len] = i2a[q][p];
					len++;
				}
			}
		}
		if(f){
			printf("NA\n");
		}else{
			hukugou[len] = 0;
			printf("%s\n", hukugou);
		}
		scanf("%c", &c);
	}
	return 0;
}