0votos

Programación funcional con callbacks. en C

por josejuan hace 6 años

La del enunciado (para que quede en Solveet).

Algunos lenguajes como C++ no permiten expresiones lambda (funciones como argumentos), pero es habitual en ellos usar callbacks. Se pide programar las funciones "map", "filter", ... mediante callbacks.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h> 
 
int *map(int (*f)(int), int *v, int *size) { 
        int n = -1; 
        while(++n < *size) 
                v[n] = f(v[n]); 
        return v; 
 
int *filter(int (*f)(int), int *v, int *size) { 
        int a = 0, b = 0; 
        while(a < *size) 
                if(f(v[a])) v[b++] = v[a++]; else a++; 
        *size = b; 
        return v; 
 
int main(int argc, char **argv) { 
        int n[] = {1, 9, 2, 8, 3, 7, 4, 6, 5}; 
        int s = 9; 
 
        // funciones "lambda" (serán pasadas como argumento) 
        int print(int n) {printf("%i, ", n); return n;}; 
        int poly(int n){return n * n - 2 * n + 5;}; 
        int par(int n){return n & 1 ? 0 : 1;}; 
 
        map(print, 
          filter(par, 
            map(poly, n 
              , &s), &s), &s); 
 
        return 0; 
/* 
OUTPUT: 4, 68, 8, 40, 20, 
*/ 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.