Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5.  
  6.  
  7. void swap(char* left, char* right)
  8. {
  9.     char temp = *left;
  10.     *left = *right;
  11.     *right = temp;
  12. }
  13. int compare (const void * a, const void * b)
  14. {
  15.   return ( *(char*)a - *(char*)b );
  16. }
  17. void TiskniPermutace(char* inStr)
  18. {
  19.    
  20.     int strSize = strlen(inStr);
  21.     qsort(inStr, strSize, sizeof(char), compare);
  22.  
  23.  
  24.     int largerPermFound = 1;
  25.     do{
  26.        
  27.         printf("%s\n", inStr);
  28.        
  29.         int i;
  30.         for (i = strSize - 2; i >= 0 && inStr[i] >= inStr[i+1]; --i){}
  31.  
  32.        
  33.         if (i > -1)
  34.         {
  35.            
  36.             int j = i+1;
  37.             int k;
  38.             for(k=j;k<strSize && inStr[k];++k)
  39.             {
  40.                 if (inStr[k] > inStr[i] && inStr[k] < inStr[j])
  41.                     j = k;
  42.             }
  43.  
  44.             swap(&inStr[i], &inStr[j]);
  45.             qsort(inStr+i+1, strSize-i-1, sizeof(char), compare);
  46.         }
  47.         else
  48.         {
  49.             largerPermFound = 0;
  50.         }
  51.     }while(largerPermFound);
  52. }
  53.  
  54. int main() {
  55.  
  56.     char *str;
  57.     char ch;
  58.     int a = 0;
  59.     str = (char*)malloc(9 * sizeof(char));
  60.     int counter = 0;
  61.  
  62.     while((ch = getchar()) != '\n'){
  63.         if((isalpha(ch) != 0) || (isdigit(ch) != 0)) {
  64.             str[a] = ch;
  65.             if(str[0] == '\n'){
  66.                 free(str);
  67.                 fprintf(stderr,"Error: Chybny vstup!\n");
  68.                 return 100;
  69.             }
  70.             ++a;
  71.         }
  72.         else{
  73.             free(str);
  74.             fprintf(stderr,"Error: Chybny vstup!\n");
  75.             return 100;
  76.         }
  77.         counter++;
  78.     }
  79.  
  80.  
  81.     str[counter] = '\0';
  82.  
  83.     TiskniPermutace(str);
  84.     free(str);
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement