SHARE
TWEET

Untitled

a guest Apr 21st, 2017 43 in 25 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int upper(char* buf)
  2. {
  3.     int n = strlen(buf);
  4.     for(int i=0;i<n;i++)
  5.     {
  6.         buf[i]=(char)toupper(buf[i]);
  7.         if(buf[i]<'A' || buf[i]>'Z')
  8.         {
  9.             if(buf[i]=='!') return 0;
  10.         }
  11.     }
  12.     return 1;
  13. }
  14.    
  15. int charsort(const void* a, const void* b)
  16. {
  17.     return ((*(char*)a)-(*(char*)b));
  18. }
  19.  
  20. void swap(char* buf, int ind1, int ind2)
  21. {
  22.                                            
  23.     while(ind1 < ind2 )
  24.     {
  25.         buf[ind1] = buf[ind1 + 1];
  26.         ind1++;
  27.     }
  28.    
  29.     buf[ind2] = '\0';                          
  30. }
  31.  
  32. int gen(char **stock, char *buf, int count)
  33. {
  34.     int len = 0;
  35.     char *buf_sav1 = NULL;
  36.  
  37.     len = strlen(buf);
  38.    
  39.     buf_sav1 = strdup(buf);
  40.     if (buf_sav1 == NULL) {fprintf(stderr, "fail5\n"); exit(-1);}
  41.  
  42.     count++;
  43.  
  44.     for(int i = 0 ; i < len ; i++)
  45.     {                                                          
  46.         swap(buf_sav1, i, len);
  47.  
  48.         stock[count] = malloc( strlen(buf_sav1) + 1);
  49.         if (stock[count] == NULL) {fprintf(stderr, "fail4\n"); exit(-1);}
  50.  
  51.         strcpy(stock[count], buf_sav1);
  52.  
  53.         free(buf_sav1);
  54.         buf_sav1 = strdup(buf);
  55.         if (buf_sav1 == NULL) {fprintf(stderr, "fail6\n"); exit(-1);}
  56.  
  57.         count++;
  58.     }
  59.  
  60.     free(buf_sav1);
  61.     return(count);
  62. }
  63.  
  64. int main(void)
  65. {
  66.     char buf[50];
  67.     char **stock = NULL;
  68.     int count = 0;
  69.     int longueur = 0;
  70.  
  71.     printf("gen :\n");
  72.     scanf("%s", buf);
  73.  
  74.     upper(buf);
  75.     qsort(buf, strlen(buf), sizeof(*buf), charsort);
  76.  
  77.     stock = malloc(sizeof(char*) * (strlen(buf) + 1) );
  78.     if (stock == NULL) {fprintf(stderr, "fail1\n"); exit(-1);}
  79.  
  80.     stock[count] = malloc(strlen(buf) + 1);
  81.     if (stock[count] == NULL) {fprintf(stderr, "fail2\n"); exit(-1);}
  82.  
  83.     strcpy(stock[count], buf);
  84.        
  85.     longueur = gen(stock, stock[count], count);
  86.  
  87.     printf("%d\n", longueur);
  88.    
  89.     for (int i = 0 ; i < longueur ; i++)
  90.         printf("T[%d] : %s\n",i,stock[i]);
  91.  
  92.  
  93.     for (int i = 0 ; i < longueur ; i++)
  94.         free(stock[i]);
  95.     free(stock);
  96.  
  97.     return (EXIT_SUCCESS);
  98. }
RAW Paste Data
Top