Главная /
Программирование на языке C в Microsoft Visual Studio 2010 /
В приведенной программе используется указатель на функции, которые выполняют сортировку целочисленного массива "методом пузырька": void PuzSortInc (int*, int ); void PuzSortDec (int*, int); int main (void) { int A[] = {56, 34, 2, 0, 1, -21, 6, 8, 7}; int
В приведенной программе используется указатель на функции, которые выполняют сортировку целочисленного массива "методом пузырька":
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;
<Объявление указателя pFun на функции>
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;
}
}
}
}
Функция PuzSortInc()
выполняет сортировку по возрастанию, функция PuzSortDec()
- по убыванию. Каким образом должен быть объявлен указатель на функции для его использования в приведенной программе?
вопрос
Правильный ответ:
void (*pFun) (int*, int);
void *pFun (int*, int)
void (*pFun) (int*, int) = {PuzSortInc, PuzSortDec};
Сложность вопроса
51
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Комментарии:
Аноним
Экзамен сдал на отлично. спс
13 июл 2019
Аноним
Это очень легкий тест intuit.
11 май 2018
Другие ответы на вопросы из темы программирование интуит.
- # Необходимо написать функцию sum, которая будет вычислять сумму всех элементов массива. В данную функцию должно передаваться два параметра - массив и размер массива. В какой программе функция sum объявлена верно?
- # Какая программа содержит ошибку?
- # В результате выполнения какого фрагмента кода значение переменной t будет кратно 10?
- # Аналогом какой стандартной функции является приведенный фрагмент кода? int i = 0, k = 0; char str1[10] = "Test"; char str2[10] = "Test1"; if (strlen(str1)>(strlen(str2))) k = 1; if (strlen(str1)<(strlen(str2))) k = -1; if (strlen(str1)==(strlen(str2))) while (str1[i]!='\0') { if (str2[i]!=str1[i]) { k = -1; break; } i++; }
- # Какие утверждения являются верными для статически распределяемой памяти?