Проверить, являются ли слова анаграммами - C (СИ)
Формулировка задачи:
Привет всем.
Помогите, пожалуйста, написать программу на языке Си.
Задание:
Пользователь вводит два слова (или две строки). Проверить, являются ли
они анаграммами. Анаграмма — слово состоящее из того же набора символов.
Пример анаграмм:
smartest
mattress
В программе необходимо сосчитать, сколько раз какая-либо буква повторяется в первом слове. Далее необходимо сосчитать, сколько раз та же самая буква повторяется во втором слове. И если количество повторений всех букв совпадает в обоих словах, то слова являются анаграммами.
Решение задачи: «Проверить, являются ли слова анаграммами»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
int main () {
int n = 10;
char a[n + 1];
printf("Введите первое слово, состоящее не более чем из десяти символов: \n");
if (scanf("%10s", a) != 1) {
printf("Ошибка ввода\n");
exit(EXIT_FAILURE);
}
char b[n + 1];
printf("Введите второе слово, состоящее не более чем из десяти символов: \n");
if (scanf("%10s", b) != 1) {
printf("Ошибка ввода\n");
exit(EXIT_FAILURE);
}
printf("Сравним строки: %s и %s\n", a, b);
int l = 26;
int word[l];
for (int i = 0; i < l; i++) {
word[i] = 0;
}
char *s = a;
while (*s != '\0') {
if (isalpha(*s)) {
}
s++;
}
int word2[l];
for (int i = 0; i < l; i++) {
word2[i] = 0;
}
char *t = b;
while (*t != '\0') {
if (isalpha(*t)) {
t++;
}
if(*s == '\0' && *t == '\0') {
printf("Данные строки являются анаграммами!\n");
} else {
printf("Данные строки НЕ являются анаграммами.\n");
}
}
Объяснение кода листинга программы
В этом коде:
- Пользователю предлагается ввести два слова, состоящих не более чем из десяти символов.
- Введенные слова сохраняются в массивах a и b соответственно.
- Далее выполняется проверка на наличие ошибок ввода. Если была допущена ошибка, программа выводит сообщение об ошибке и завершает свое выполнение.
- Затем выполняется сравнение двух строк a и b.
- Для каждого символа в строке a и b создаются массивы word и word2 соответственно.
- Затем выполняется цикл по всем символам в строках a и b. Если символ является буквой, то его количество увеличивается в соответствующем массиве.
- После завершения цикла проверяется, являются ли строки анаграммами. Если оба массива равны, то выводится сообщение о том, что строки являются анаграммами. В противном случае выводится сообщение о том, что строки не являются анаграммами.