//произвести сортировку массива названий городов // используя функцию strcmp #include <stdlib.h> #include <stdio.h> #include <string.h> #define SIZE 20 char shakerSort(char *[], int); void printing(char *[]); int main () { char *cityNames[] = {"Брест", "Жабинка", "Кобрин", "Каменец", "Береза", "Белоозерск", "Ивацевичи", "Барановичи", "Пружаны", "Ружаны", "Ганцевичи", "Пинск", "Столин", "Иваново", "Антополь", "Дрогичин", "Лунинец", "Микашевичи", "Давид-городок", "\n"};//20 элементов //printf("\n%ld\n",sizeof(cityNames)); shakerSort(cityNames, SIZE); printing(cityNames); } char shakerSort(char *CN[], int size) { char * tmp; int left = 0, right = (size - 2); while (left < right) { for (int i = left; i < right; i++)//слева направо { if (strncmp(CN[i], CN[i + 1], 4) > 0) { tmp = CN[i]; CN[i] = CN[i + 1]; CN[i + 1] = tmp; } } right--; //////////////////////////////////////////////////////////// for (int j = right; j > left; j--) { if (strncmp(CN[j], CN[j - 1], 4) < 0) { tmp = CN[j]; CN[j] = CN[j - 1]; CN[j - 1] = tmp; } } left++; } } void printing(char *CN[]) { int i = 0; while (CN [i] != "\n") { printf("\n%d\t%s\n", i, CN[i]); i++; } }
