Главная / Программирование на языке C в Microsoft Visual Studio 2010 / Требуется написать программу, в которой будет использоваться указатель на функции, которые выполняют сортировку целочисленного массива "методом пузырька": функция PuzSortInc() выполняет сортировку по возрастанию, функция PuzSortDec() - по убыванию. В како

Требуется написать программу, в которой будет использоваться указатель на функции, которые выполняют сортировку целочисленного массива "методом пузырька": функция PuzSortInc() выполняет сортировку по возрастанию, функция PuzSortDec() - по убыванию. В какой программе предусмотрено корректное завершение работы программы, независимо от номера алгоритма, который задаст пользователь?

вопрос

Правильный ответ:

void PuzSortInc (int*, int ); void PuzSortDec (int*, int); int main (void) { int A[] = {56, 34, 2, 0, 1, -21, 6, 8, 7}; int i, n, alg; void (*pFun) (int*, int) = NULL; n = sizeof(A)/sizeof(A[0]); printf("Исходный массив: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); printf("\nВыберите алгоритм сортировки (1 - \"методом пузырька\" по возрастанию,\ 2 - \"методом пузырька\" по убыванию: "); scanf("%d", &alg); switch (alg) { case 1: pFun = PuzSortInc; break; case 2: pFun = PuzSortDec; break; default: printf("ERROR! Такого алгоритма не определено!"); exit(1); } pFun(A,n); printf("\nSorted array: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); return 0; } void PuzSortInc (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] > arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } } void PuzSortDec (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] < arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } }
void PuzSortInc (int*, int ); void PuzSortDec (int*, int); int main (void) { int A[] = {56, 34, 2, 0, 1, -21, 6, 8, 7}; int i, n, alg; void (*pFun) (int*, int) = NULL; n = sizeof(A)/sizeof(A[0]); printf("Исходный массив: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); printf("\nВыберите алгоритм сортировки (1 - \"методом пузырька\" по возрастанию,\ 2 - \"методом пузырька\" по убыванию: "); scanf("%d", &alg); switch (alg) { case 1: pFun = PuzSortInc; break; case 2: pFun = PuzSortDec; break; default: printf("ERROR! Такого алгоритма не определено!"); } pFun(A,n); printf("\nSorted array: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); return 0; } void PuzSortInc (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] > arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } } void PuzSortDec (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] < arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } }
void PuzSortInc (int*, int ); void PuzSortDec (int*, int); int main (void) { int A[] = {56, 34, 2, 0, 1, -21, 6, 8, 7}; int i, n, alg; void (*pFun) (int*, int) = NULL; n = sizeof(A)/sizeof(A[0]); printf("Исходный массив: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); printf("\nВыберите алгоритм сортировки (1 - \"методом пузырька\" по возрастанию,\ 2 - \"методом пузырька\" по убыванию: "); scanf("%d", &alg); switch (alg) { case 1: pFun = PuzSortInc; break; case 2: pFun = PuzSortDec; break; default: printf("ERROR! Такого алгоритма не определено!"); } if (pFun) { pFun(A,n); printf("\nSorted array: "); for (i = 0; i < n; i++) printf(" %3d", A[i]); }; return 0; } void PuzSortInc (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] > arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } } void PuzSortDec (int* arr, int size) { int i, j, buf; for (i = 0; i < size - 1; i++ ) { for (j = 0; j < size - 1; j++) { if (arr[j] < arr[j + 1]) { buf = arr[j]; arr[j] = arr[j+1]; arr[j+1] = buf; } } } }
Сложность вопроса
84
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Экзамен сдал на 5. Ура
28 дек 2019
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.