Есть массив чисел - надо к каждому числу прицепить текст - C (СИ)
Формулировка задачи:
Есть массив чисел - надо к каждому числу прицепить текст и обратиться к получившемуся элементу как к функции
например
шаг 1. mass[3]={1,2,3}
шаг 2 mass[3]={fun1,fun2,fun3}
шаг 3 перебирая элементы в цикле обращаться к массиву функций mass[i], получать от нее число и класть в другой массив
О КАК!
Решение задачи: «Есть массив чисел - надо к каждому числу прицепить текст»
textual
Листинг программы
#include <stdio.h>
#define STEPS (3)
#define DATA_SIZE (5)
double mul9(double n) {
return n * 9.0;
}
double div5(double n ) {
return n / 5.0;
}
double plus32(double n) {
return n + 32.0;
}
typedef double (*func_t)(double);
func_t functions[STEPS] = { mul9, div5, plus32 };
int main(void) {
double cels[DATA_SIZE] = { 10, 20, 30, 40, 50 }, fahr[DATA_SIZE];
int i, j;
for ( i = 0; i < DATA_SIZE; ++i ) {
double n = cels[i];
for ( j = 0; j < STEPS; ++j )
n = functions[j](n);
fahr[i] = n;
}
for ( i = 0; i < DATA_SIZE; ++i )
printf("C %f = F %f\n", cels[i], fahr[i]);
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется преобразование температуры из градусов Цельсия в градусы Фаренгейта.
В функции main создаются два массива: cels (градусы Цельсия) и fahr (градусы Фаренгейта).
Затем в цикле происходит преобразование: каждый элемент массива cels последовательно проходит через три функции-обработчика, которые умножают значение на 9, делят на 5 и прибавляют 32 (что соответствует преобразованию в градусы Фаренгейта). Результат сохраняется в соответствующем элементе массива fahr.
В конце программы выводится результат в формате C <значение в градусах Цельсия> = F <значение в градусах Фаренгейта>.