{
int (*i_func[5])(); // вектор указателей на функции,
// возвращающие целые значения
i_func[0]=sloshenie; // заполнение вектора адресамифункций
i_func[1]=vychitanie; // адрес функции – ее имя
i_func[2]=umnoshenie;
i_func[3]=delenie;
i_func[4]=ostatok;
int x, y, z, nom;
printf("\n first argument =");// ввод аргументовфункций
scanf("%d", &x);
printf("\n second argument =");
scanf("%d", &y);
printf("\n");
puts("|---------------|"); // предлагаемое меню
puts("| Operazii |");
puts("|---------------|");
puts("| 1. sloshenie |");
puts("| 2. vychitanie |");
puts("| 3. umnoshenie |");
puts("| 4. delenie |");
puts("| 5. ostatok |");
puts("|---------------|");
printf("\n vyberite nomer operacii:");
scanf("%d", &nom);
if ((nom<1) || (nom>5)) // защита ввода
{
puts("Error!");
return -1; // аварийное завершениепрограммы
}
z=(*i_func[nom-1])(x,y); // обращение к функции поадресу
printf("\n rezultat =%d", z);
return 0;
}
Int sloshenie(int a, int b)
{
return a + b;
}
Int vychitanie(int a, int b)
{
return a - b;
}
Int umnoshenie(int a, int b)
{
return a * b;
}
Int delenie(int a, int b)
{
return a / b;
}
Int ostatok(int a, int b)
{
return a % b;
}
Работа программы:
first argument =5
second argument =2
|---------------|
| Operazii |
|---------------|
| 1. sloshenie |
| 2. vychitanie |
| 3. umnoshenie |
| 4. delenie |
| 5. ostatok |
|---------------|