2016-11-25 6 views
-7

何か他のものとの文字に置き換えます。 スプリット手紙に単語と言い、私は運動を得た

は言葉から文字を分離して、アルファブラボーチャーリー・デルタエコーフォックストロットゴルフ付きの文字を置き換えることができますプログラムを書きますHotel India Juliet KiloリマMike 11月オスカーパパQuebecロメオSierra Tango制服Victor Whisky Xray Yankee Zulu(a = Alpha B =ブラボーなど)と*(1 = * 2 = ** 3 = ***など) 。

「Hello 2 you!」という文章を分割したいとします。

私は私のプログラムを返すようにしたい:

Hotel Echo Lima Lima Oscar ** Yankee Oscar Uniform!. 

は、どのように私はこれを行うためのプログラムを書くのですか?

+0

マップを使用する。それ以降はかなり簡単だろう。 – sircodesalot

+2

@sircodesalot「マップ」とはどういう意味ですか? – melpomene

+1

私は彼がルックアップテーブルを意味すると思います。 –

答えて

0

以下のプログラムは、可能な多くの人が取るのうちの1つにすぎない、とあなたのソリューションのためのあなたのアイデアを与える必要があります。

#include <stdio.h> 
#include <memory.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <string.h> 

char * alphaTable[] = { 
"Alpha", 
"Bravo", 
"Charlie", 
"Delta", 
"Echo", 
"Foxtrot", 
"Golf", 
"Hotel", 
"India", 
"Juliet", 
"Kilo", 
"Lima", 
"Mike", 
"November", 
"Oscar", 
"Papa", 
"Quebec", 
"Romeo", 
"Sierra", 
"Tango", 
"Uniform", 
"Victor", 
"Whiskey", 
"Xray", 
"Yankee", 
"Zulu", 
NULL 
}; 

void strtoupper(char *s) 
{ 
    while (*s) 
    { 
    if ((*s >= 'a') && (*s <= 'z')) 
      *s -= ('a'-'A'); 
    s++; 
    } 
} 

char * findMatch(char *table[], char c) 
{ 
    int i; 
    for(i=0; table[i] != NULL; i++) 
    { 
     if (table[i][0] == c) // if first character matches 
     { 
     return table[i]; 
     } 
    } 

    return NULL; 
} 

int printConvertedText(char *input) 
{ 
int i; 

strtoupper(input); // convert all letters to caps 

for (i=0;input[i]!=0;i++) 
{ 
    // take characters from the input string 
    char c = input[i]; 
    // and find matching first letter in the alphaTable 
    char * result = findMatch(alphaTable,c); 
    if(result) 
    { 
     printf(" %s",result); 
    } 
    else // NOT A LETTER 
    { 
     if (isdigit(c)) // number 
     { 
      int num = c-'0'; // a short cut: get a number 
      int j; 

      printf(" "); 

      for(j=0;j<num;j++) // nothing printed for 0! 
      { 
      printf("%s","*");  
      } 
     } 
     else // everything else is printed as is 
     { 
      printf("%c",c);     
     }  
    } 
} 

return 0; 
} 

int main() 
{ 
    size_t bytes_read = 0; 
    size_t nbytes  = 1000; 
    char *my_string; 

    // this works for given string: 
    // char input [] = "Hello 2 you!."; 
    // printConvertedText(input); 

    puts ("Please enter a line of text: "); 
    my_string = (char *) malloc (nbytes + 1); // alocate memory for input 

    bytes_read = getline (&my_string, &nbytes, stdin); // get the input 

    if (bytes_read == -1) 
    { 
    puts ("ERROR!\n"); 
    } 
    else 
    { 
    puts ("You typed:"); 
    puts (my_string); 

    puts ("After conversion:"); 
    printConvertedText(my_string); 

    } 

    return 0; 
} 

//出力:

Please enter a line of text:                                                                      
hello2 you!!.                                                                         
You typed:       
hello2 you!!. 

After conversion:                                                                      
Hotel Echo Lima Lima Oscar ** Yankee Oscar Uniform!!. 

あなたがコードを実行することができますhere

+0

まず、お時間をいただきありがとうございます。どのようなコードを書かなければならないのですか?つまり、私のプログラムで、ユーザーに文章を書き留めてもらいたいということです。 –

+0

@SavvasAnastasiadisプログラムの拡張バージョンでは、ユーザに文章を入力するように求められます。それは役に立ちますか? – sg7

関連する問題