Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include<stdlib.h>
- #include<ctype.h>
- int is_anagr(char*a, char* b) {
- int ok = 1;
- if(strlen(a) != strlen(b))
- return 0;
- char* apr1 = calloc(sizeof(char), 'z' - 'a' + 1);
- char* apr2 = calloc(sizeof(char), 'z' - 'a' + 1);
- for (int i = 0; i < strlen(a); ++i)
- {
- apr1[a[i] - 'a']++;
- }
- for (int i = 0; i < strlen(b); ++i)
- {
- apr2[b[i] - 'a']++;
- }
- for (int i = 0; i <= 'z' - 'a'; ++i)
- {
- if(apr1[i] != apr2[i])
- ok = 0;
- }
- return ok;
- }
- int sort_char(char* cuv[], int nr) {
- for (int i = 0; i < nr; i++) {
- printf("%s\n", cuv[i]);
- }
- for (int i = 0; i < nr; ++i)
- {
- for(int j = i+1; j < nr; j++)
- if(strcmp(cuv[j],cuv[i]) < 0) {
- char* aux = cuv[j];
- cuv[j] = cuv[i];
- cuv[i] = aux;
- }
- }
- printf("\n\n");
- for (int i = 0; i < nr; i++) {
- printf("%s\n", cuv[i]);
- }
- for (int i = 0; i < nr - 1; ++i)
- {
- int j = i + 1;
- if (strcmp(cuv[i],cuv[j]) != 0) {
- continue;
- }
- while (j < nr && strcmp(cuv[i],cuv[j]) == 0) {
- j++;
- }
- int q = j - i - 1;
- for(int k = 1; j < nr; j++, k++) {
- cuv[i + k] = cuv[j];
- }
- nr -= q;
- }
- printf("vectorul sortat :\n");
- for (int i = 0; i < nr; ++i)
- {
- printf("%s\n",cuv[i] );
- }
- printf("cacaaaaaaaaaaaaa\n");
- return nr;
- }
- void sepcuv(FILE *f, char delim[], char* cuv[]) {
- char* text = malloc(1000 * sizeof(char));
- int i = 0;
- fgets(text,1000,f);
- char*p;
- p = strtok(text, delim);
- while(p) {
- for (int k = 0; k < strlen(p); ++k)
- {
- p[k] = tolower(p[k]);
- }
- strcpy(cuv[i],p);
- p = strtok(NULL, delim);
- i++;
- }
- int* bifa = calloc(sizeof(int), i);
- i = sort_char(cuv,i);
- for(int j = 0; j < i; j++) {
- if (bifa[j]) {
- continue;
- }
- printf("%s",cuv[j]);
- bifa[j]++;
- for(int k = j + 1; k < i; k++) {
- if(bifa[k] == 0)
- if(is_anagr(cuv[j], cuv[k]))
- {printf("-%s",cuv[k]);bifa[k]++;}
- }
- printf("\n");
- }
- }
- int main ()
- {
- FILE* in = fopen("a.txt","rt");
- char delim[] = " -,.\n";
- char** cuv = malloc(100 * sizeof(char*));
- for (int i = 0; i < 100; ++i)
- {
- cuv[i] = malloc(sizeof(char) * 100);
- }
- sepcuv(in,delim,cuv);
- fclose(in);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement