以下のプログラムは、可能な多くの人が取るのうちの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
出典
2016-11-26 19:32:46
sg7
マップを使用する。それ以降はかなり簡単だろう。 – sircodesalot
@sircodesalot「マップ」とはどういう意味ですか? – melpomene
私は彼がルックアップテーブルを意味すると思います。 –