1. 程式人生 > >Name That Number 命名那個數字(打開文件)

Name That Number 命名那個數字(打開文件)

pen cstring 呼叫 取出 scan ace 相同 ict eof

Description

在威斯康辛州牛大農場經營者之中,都習慣於請會計部門用連續數字給母牛打上烙印。但是,母牛用手機時並沒感到這個系統的便利,它們更喜歡用它們喜歡的名字來呼叫它們的同伴,而不是用像這個的語句"C‘mon, #4734, get along."。

請寫一個程序來幫助可憐的牧牛工將一只母牛的烙印編號翻譯成一個可能的名字。因為母牛們現在都有手機了,使用那標準的按鍵的排布來把將數目翻譯為文字:( 除了 "Q" 和 "Z") 2: A,B,C 5: J,K,L 8: T,U,V 3: D,E,F 6: M,N,O 9: W,X,Y 4: G,H,I 7: P,R,S

可接受的名字都被放在這樣一個叫作"dict.dic" 的文件中,它包含一連串的少於 5,000個可被接受的牛的名字。 (所有的名字都是大寫的且已按字典序排列) 請讀入母牛的編號並返回那些能從編號翻譯出來並且在字典中的名字。

舉例來說,編號 4734 能產生的下列各項名字: GPDG GPDH GPDI GPEG GPEH GPEI GPFG GPFH GPFI GRDG GRDH GRDI GREG GREH GREI GRFG GRFH GRFI GSDG GSDH GSDI GSEG GSEH GSEI GSFG GSFH GSFI HPDG HPDH HPDI HPEG HPEH HPEI HPFG HPFH HPFI HRDG HRDH HRDI HREG HREH HREI HRFG HRFH HRFI HSDG HSDH HSDI HSEG HSEH HSEI HSFG HSFH HSFI IPDG IPDH IPDI IPEG IPEH IPEI IPFG IPFH IPFI IRDG IRDH IRDI IREG IREH IREI IRFG IRFH IRFI ISDG ISDH ISDI ISEG ISEH ISEI ISFG ISFH ISFI 碰巧,81個中只有一個"GREG"是有效的(在字典中)。

寫一個程序來對給出的編號打印出所有的有效名字,如果沒有則輸出NONE。編號可能有12位數字。

Input

單獨的一行包含一個編號(長度可能從1到12)。

Output

以字典順序輸出一個有效名字的不重復列表,一行一個名字。 如果沒有有效名字,輸出‘NONE‘。

Sample Input

4734

Sample Output

GREG


解題思路:有點像我們手機輸入法的九宮格,輸入一個阿拉伯數字就會有對應的英文字母。我們只需要將文件中的英文字符串讀取出來轉換成對應的阿拉伯數字,看看是不是與所輸入的
編號相同,如果相同就是有效的名字。
 1 #include<cstdio>
 2
#include<cstring> 3 using namespace std; 4 char s[14]; 5 char a[]= {"22233344455566670778889990"}; 6 int main() 7 { 8 FILE *fp; 9 char x[14]; 10 int flag,i; 11 int counts=0; 12 scanf("%s",s); 13 fp=fopen("dict.dic","r"); 14 while(fscanf(fp,"%s",x)!=EOF) 15 { 16 flag=0; 17 if(strlen(s)==strlen(x))///長度相同 18 { 19 for(i=0; i<strlen(s); i++) 20 { 21 if(s[i]!=a[x[i]-A]) 22 { 23 flag=1; 24 break; 25 } 26 } 27 if(!flag) 28 { 29 printf("%s\n",x); 30 counts++; 31 } 32 } 33 } 34 if(!counts) 35 { 36 printf("NONE\n"); 37 } 38 return 0; 39 }



Name That Number 命名那個數字(打開文件)