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>
- void swap(char* left, char* right)
- {
- char temp = *left;
- *left = *right;
- *right = temp;
- }
- int compare (const void * a, const void * b)
- {
- return ( *(char*)a - *(char*)b );
- }
- void TiskniPermutace(char* inStr)
- {
- int strSize = strlen(inStr);
- qsort(inStr, strSize, sizeof(char), compare);
- int largerPermFound = 1;
- do{
- printf("%s\n", inStr);
- int i;
- for (i = strSize - 2; i >= 0 && inStr[i] >= inStr[i+1]; --i){}
- if (i > -1)
- {
- int j = i+1;
- int k;
- for(k=j;k<strSize && inStr[k];++k)
- {
- if (inStr[k] > inStr[i] && inStr[k] < inStr[j])
- j = k;
- }
- swap(&inStr[i], &inStr[j]);
- qsort(inStr+i+1, strSize-i-1, sizeof(char), compare);
- }
- else
- {
- largerPermFound = 0;
- }
- }while(largerPermFound);
- }
- int main() {
- char *str;
- char ch;
- int a = 0;
- str = (char*)malloc(9 * sizeof(char));
- int counter = 0;
- while((ch = getchar()) != '\n'){
- if((isalpha(ch) != 0) || (isdigit(ch) != 0)) {
- str[a] = ch;
- if(str[0] == '\n'){
- free(str);
- fprintf(stderr,"Error: Chybny vstup!\n");
- return 100;
- }
- ++a;
- }
- else{
- free(str);
- fprintf(stderr,"Error: Chybny vstup!\n");
- return 100;
- }
- counter++;
- }
- str[counter] = '\0';
- TiskniPermutace(str);
- free(str);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement