Функция в качества аргумента другой функции. Ошибка компиляции - C (СИ)
Формулировка задачи:
Две функции:
Программный код:
Ошибки при компиляции:
pe12_2b.c: In function ‘main’:
pe12_2b.c:14:3: error: incompatible type for argument 1 of ‘show_info’
show_info(get_info, mode);
^
In file included from pe12_2b.c:2:0:
pe12_2a.h:3:6: note: expected ‘double’ but argument is of type ‘double (*)(int)’
void show_info(double flow, int mode);
double get_info(int mode)
{
int distance, flow_of_fuel;
double result;
mode == 0 ? printf("Введите пройденное расстояние в километрах.\n") : printf("Введите пройденное расстояние в милях.\n");
scanf("%d", &distance);
mode == 0 ? printf("Введите количество израсходованного горючего в литрах.\n") : printf("Введите количество израсходованного горючего в галлонах.\n");
scanf("%d", &flow_of_fuel);
return (double)flow_of_fuel*100/distance;;
}
void show_info(double flow, int mode)
{
mode == 0 ? printf("Расход горючего составляет %.2f литров на 100 км.", flow) :
printf("Расход горючего составляет %.2f галлонов на 100 милль.", flow);
}show_info(get_info, mode);
Решение задачи: «Функция в качества аргумента другой функции. Ошибка компиляции»
textual
Листинг программы
int set_mode(int mode); double get_info(int mode); void show_info(double flow, int mode);
Объяснение кода листинга программы
- В коде присутствуют три функции:
set_mode,get_infoиshow_info. - Функция
set_modeпринимает целочисленный аргументmode. - Функция
get_infoпринимает целочисленный аргументmodeи возвращает значение типаdouble. - Функция
show_infoпринимает два аргумента:flowтипаdoubleиmodeтипаint. - В коде присутствует ошибка компиляции.