2015-05-08 3 views
-4

Напишите C программу, чтобы узнать, являются ли 2 приведенные строки анаграммами или нет.Анаграммы двух строк

Ввод состоит из 2-х строк. Предположим, что все символы в строке являются строчные буквы или пробелы, а максимальная длина строки 100.

Пример ввода и вывода 1: Введите первая строка Anitha Введите вторую строку AmphiSoft Anitha и AmphiSoft не анаграммы

Пример ввода и вывода 2: Введите первую строку глаза Введите вторую строку они видят глаза и что они видят анаграммы

Пример ввод и вывод 3: Введите первую строку Общежития Введите вторую строке грязного номер общежития и грязную комнату являются анаграммами

#include <stdio.h> 

int check_anagram(char [], char []); 

int main() 
{ 
    char a[100], b[100]; 
    int flag; 

    printf("Enter first string\n"); 
    gets(a); 

    printf("Enter second string\n"); 
    gets(b); 

    flag = check_anagram(a, b); 

    if (flag == 1) 
     printf("\"%s\" and \"%s\" are anagrams.\n", a, b); 
    else 
     printf("\"%s\" and \"%s\" are not anagrams.\n", a, b); 

    return 0; 
} 

int check_anagram(char a[], char b[]) 
{ 
    int first[26] = {0}, second[26] = {0}, c = 0; 

    while (a[c] != '\0') 
    { 
     first[a[c]-'a']++; 
     c++; 
    } 

    c = 0; 

    while (b[c] != '\0') 
    { 
     second[b[c]-'a']++; 
     c++; 
    } 

    for (c = 0; c < 26; c++) 
    { 
     if (first[c] != second[c]) 
     return 0; 
    } 

    return 1; 
} 

Я пишу код, но он работает только для первого вход/выход, но второй и третий вход не работал.

ответ

0

Код, который вы предоставили, работает. Поскольку вы пишете это работает только для первого ввода, я предполагаю, что проблема была в области цикла, которую вы удалили, чтобы опубликовать вопрос.

Одна из возможных причин для того, чтобы он не работал после первого раза, не очищает a и b перед получением нового ввода.

Надеюсь, я помог,

Смежные вопросы