Mr Nobody
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #include <string.h> #include <stdio.h> #define MAX_LENGTH 4 void permutation(const char* src, int len) { char buffer[MAX_LENGTH + 1]; char head; int idx; head = src[0]; for(idx = 1; idx <= len; idx++) buffer[idx] = src[idx]; printf(" %s\n", src); for(idx = 1; idx < len - 1; idx++) { buffer[idx - 1] = buffer[idx]; buffer[idx] = head; printf(" %s\n", buffer); } } void left_shift(char buffer[], int len) { char head; int idx; head = buffer[0]; for(idx = 1; idx < len; idx++) buffer[idx - 1] = buffer[idx]; buffer[len - 1] = head; } void right_shift(char buffer[], int len) { char last; int idx; last = buffer[len - 1]; for(idx = len - 1; idx > 0; idx--) buffer[idx] = buffer[idx - 1]; buffer[0] = last; } int main() { char str[MAX_LENGTH + 1], ptr[MAX_LENGTH + 1]; int idx, len; printf("Enter word for permutation\n" "Max characters in this word %d ", MAX_LENGTH); scanf("%s", str); fflush(stdin); len = strlen(str); printf("\nPermutated words\n\n"); strcpy(ptr, str); permutation(ptr, len); for(idx = 1; idx < len; idx++) { left_shift(ptr, len); permutation(ptr, len); } strcpy(ptr, str); permutation(ptr, len); for(idx = 1; idx < len; idx++) { right_shift(ptr, len); permutation(ptr, len); } return 0; } |