Листинг 2.1. Программа подписывания анаграмм
int charcomp(char *х. char *у) ^ return *х - *у. }
#def1ne W0RDMAX 100 int та 1 n (voi cl)
{char word[WORDMAX]. sig[WORDMAX].
while (scanf("%s". word) 1= EOF) { strcpy(sig. word);
qsort(si g , strlen(sig). sizeof(char). cha rcomp). printf("Јs Јs\n". sig. word),}
return 0:}
Цикл while считывает по одной строке в переменную word, пока не доберется до конца файла. Функция strcpy копирует строку в переменную sig, символы которой затем сортируются с помощью стандартной библиотечной функции qsort (аргументы: сортируемый массив, его длина, длина элемента, указатель на функцию сравнения двух элементов). Наконец, printf выводит сигнатуру и слово в файл, завершая строку символом перевода строки.
Для сортировки используется системная программа сортировки, а наннсанная мной программа squash объединяет анаграммы одного класса в одной строке.
Листинг 2.2. Объединение анаграмм одного класса в одной строке
int та 1n(void)
{char word[WORDMAX J, s i g[WORDMAX]. о 1ds i g[WORDMAX3.
int 1inenum=0.
strcpy(oldsig. ""):
while (scanf("%s %s". sig. word) '= EOF) { if (strcmp(oldsig , sig)!=0 && linenum > 0) printf(" \n") . strcpy(oldsig . sig).
11nenum++.
pn nt f (" %s". word) ;
Опубликовал vovan666
April 16 2013 23:35:00 ·
0 Комментариев ·
4807 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.