Advertisement
Guest User

Untitled

a guest
Jan 31st, 2015
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #define N (20)
  5.  
  6. typedef struct {
  7. char *str;
  8. char *anagr;
  9. } stringa;
  10.  
  11. int ConfrontaCaratteri(const void *a, const void *b) {
  12.  
  13. return strcmp((char*)a, (char*)b);
  14.  
  15. }
  16.  
  17. int ConfrontaAnagramma(const void *a, const void *b) {
  18.  
  19. stringa s1= *(stringa*)a;
  20. stringa s2= *(stringa*)b;
  21.  
  22. return strcmp(s1.anagr, s2.anagr);
  23. }
  24.  
  25. int ConfrontaStr(const void *a, const void *b) {
  26.  
  27. stringa s1= *(stringa*)a;
  28. stringa s2= *(stringa*)b;
  29.  
  30. return strcmp(s1.str, s2.str);
  31. }
  32.  
  33. int main() {
  34.  
  35. int i, j, n;
  36.  
  37.  
  38. scanf("%d", &n);
  39.  
  40. stringa *S= (stringa *) malloc(n * sizeof(stringa ));
  41.  
  42. for(i=0; i<n; i++) {
  43. S[i].str= (char *) malloc(N * sizeof(char ));
  44. S[i].anagr= (char *) malloc(N * sizeof(char ));
  45. scanf("%s", S[i].str);
  46. strcpy(S[i].anagr, S[i].str);
  47. qsort(S[i].anagr, strlen(S[i].anagr), sizeof(char), ConfrontaCaratteri);
  48. }
  49.  
  50. qsort(S, n, sizeof(stringa), ConfrontaAnagramma);
  51.  
  52. j=0;
  53. for(i=1; i<n; i++) {
  54. if(strcmp(S[i].anagr, S[i-1].anagr)!=0) {
  55. if(i-j>1)
  56. qsort(S+j, i-j, sizeof(stringa), ConfrontaStr);
  57. j=i;
  58. }
  59. }
  60. if(i-j>1)
  61. qsort(S+j, i-j, sizeof(stringa), ConfrontaStr);
  62.  
  63. printf("%s ", S[0].str);
  64. /* Stampa l'array ordinato */
  65. for( i = 1; i < n; i++ ) {
  66. if(strcmp(S[i].anagr, S[i-1].anagr)==0)
  67. printf("%s ", S[i].str);
  68. else {
  69. printf("\n");
  70. printf("%s ", S[i].str);
  71. }
  72. }
  73. printf(" \n");
  74. free(S);
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement