Отсортировать буквы всех слов по алфавиту - C (СИ)
Формулировка задачи:
Дан массив строк. Вывести на экран все слова являющиеся анаграммами.
Анаграммами называются слова, состоящие из одинаковых букв, отличающихся лишь порядком следования. Например: автор-товар-отвар-тавро-…; апельсин — спаниель.
Для поиска анаграмм нужно сделать следующее:
1. отсортировать буквы всех слов по алфавиту (сохранив начальный массив).
2. реализовать функцию сравнения строк.
3. отсортировать слова с сортированными буквами по алфавиту. Для этого нужно создать массив индексов и при сортировке переставлять элементы в массиве индексов, не изменяя массив слов.
4. просмотреть массив строк в порядке, указанном в массиве индексов, повторяющиеся слова напечатать в первоначальном виде. Слова-анаграммы печатаются в строчку (таких слов может быть 2 и больше).
5.
Короче у меня встал вопрос с чем сравнивать буквы чтобы их отсортировать?
main() { char str,s,*a[]={"stop","avtor","leto"}; int i,x; for(i=0;i<3;i++) printf("%s",a[i]); for (i=0;i<3;i++) { str=a[i]; x=sizeof(str); for(i=1;i<x;i++)
Решение задачи: «Отсортировать буквы всех слов по алфавиту»
textual
Листинг программы
#include <string.h> #include <stdio.h> int findAnagr(char b[200]){ int i,j,ind,n=0; char a[200],*token; strcpy(a,b); token=strtok(a," "); while(token!=NULL){ n++; ind=0; for(i=0;i<200-strlen(token);i++){ for(j=0;j<strlen(token);j++){ if(token[j]!=a[j+i])break; } if(j==strlen(token))ind++; } if(ind>1){ printf("%d-ое слово Анагр...четотам\n",n); }; token=strtok(NULL," "); } return 0; } int main() { char str[200],s,a[200],*token; char b[200]; memset(a,'\0',200); memset(b,'\0',200); printf("\nВведите строку\n"); gets(a); int n,i,j; while(1) { if(strlen(b)==0){ if((token=strtok(a," ,."))==NULL)break; }else if((token=strtok(NULL," ,."))==NULL)break; sprintf(str,"%s",token); n=strlen(str); for(i=0;i<=n-1;i++) { for(j=i;j<n;j++) { if(str[i]>str[j]) { s=str[i]; str[i]=str[j]; str[j]=s; } } } sprintf(b+strlen(b),"%s ",str); } printf("%s\n",b); findAnagr(b); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д