Я довольно новичок в C, поэтому мне нужен совет.Есть ли более простой способ написать этот код?
Этот код ищет, если слова являются анаграммами или нет. Вложенные корневые коды содержат то же самое, что и в нижнем регистре, и игнорируют, если входной символ не является буквой. В конце он должен и он показывает, что это слова анаграммы или нет.
Мне было интересно, есть ли более простой способ написать этот код или это в значительной степени это?
int alphabet[26] = {0}, sum = 0;
char first[20], second[20];
int i = 0;
printf("Enter the first word: ");
do
{
first[i] = getchar();
if(isalpha(first[i]))
alphabet[toupper(first[i]) - 'A'] += 1 ;
i++;
}while(first[i - 1] != '\n');
printf("Enter the second word: ");
i = 0;
do
{
second[i] = getchar();
if(isalpha(second[i]) && alphabet[toupper(second[i]) - 'A'] > 0)
{
alphabet[toupper(second[i]) - 'A'] -= 1;
}
i++;
}while(second[i - 1] != '\n');
for(i = 0; i <= 26 - 1; i++)
{
sum += alphabet[i];
}
if (sum == 0)
printf("Anagrams\n");
if (sum != 0)
printf("Not anagrams\n");
Я правку, во втором входе я вынул один из, если условия, то теперь он выглядит так
do
{
second[i] = getchar();
if(isalpha(second[i]))
{
alphabet[toupper(second[i]) - 'A'] -= 1;
}
i++;
Вы должны опубликовать, что [codereview.se]. Но, конечно, это может быть упрощено. – Quentin
Первое слово 'abc', второе слово' abcabc', приведет к неправильному совпадению анаграмм. При обработке второго слова, если число букв на любой букве всегда равно 0, слова не являются анаграммами. – JS1
Для nit-pick: C-программы обычно не [* scripts *] (http://en.wikipedia.org/wiki/Scripting_language). –