Главная /
Программирование на языке 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[0])(A, n); break;
case 2: (*pFun[1])(A, n); break;
default: printf("ERROR! Такого алгоритма не определено!");
}
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[2]) (int*, int)
void (*pFun[2]) (int*, int) = {PuzSortInc, PuzSortDec};
void *pFun[2] (int*, int) = {PuzSortInc, PuzSortDec};
Сложность вопроса
65
Сложность курса: Программирование на языке C в Microsoft Visual Studio 2010
62
Оценить вопрос
Комментарии:
Аноним
просто спасибо
09 дек 2019
Аноним
Экзамен сдал на пять с минусом. Спасибо за ответы
31 мар 2017
Аноним
Если бы не эти решения - я бы не осилил c этими тестами интуит.
21 фев 2016
Другие ответы на вопросы из темы программирование интуит.
- # Необходимо написать программу, которая позволит ввести с клавиатуры данные о поездах. Также в программе должен быть предусмотрен поиск по номеру поезда. Какая программа выполняет поставленную задачу?
- # Задана программа, в которой реализовано три функции: Init - функция инициализации структуры, Print - функция вывода структуры на экран, Modify - функция изменения полей структуры: typedef struct { char fio[30]; char phone[20]; int age; } note; note Init(char*, char*, int); void Print(note*); void Modify(note); int main(void) { note n[3], *pn; char *strName[3] = {"Ivanov I.", "Pertov P.", "Sidorov S."}; char *strPhone[3] = {"12-34-56", "78-90-12", "34-56-78"}; int i, age = 25; for (i=0; i<3; i++) { n[i] = Init(strName[i], strPhone[i], age+i); pn = &n[i]; Print(pn); } Modify(n[0]); pn = &n[0]; Print(pn); return 0; } note Init(char* f, char* p, int a) { note n, *pn; pn = &n; strcpy(pn->fio, f); strcpy(pn->phone, p); pn->age = a; return n; } void Print(note *pn) { printf("\nName: %s", pn->fio); printf("\nPhone: %s", pn->phone); printf("\nAge: %d\n", pn->age); } void Modify(note n) { strcpy(n.fio, "Vasiliev V."); strcpy(n.phone, "89-01-23"); n.age = 30; } Какие функции соответсвуют поставленной задаче?
- # Чему будет равно значение переменной d в результате выполнения приведенного фрагмента кода? int d; int a = 10; int b = 15; a >>= 1; b <<= 1; d = a + b;
- # Что произойдет при выполнении программы? int summa(int N, int a[6]); int main() { int i,n; int a[6] = {8, 65, 10, 2, 4, 1}; n = sizeof(a)/sizeof(a[0]); printf("Сумма: %d", summa(n-1, a)); } int summa(int N, int a[6]) { return a[N]+summa(N-1, a); }
- # В результате выполнения какого фрагмента кода значение переменной y будет равно 11?