Buenas.
Dado que veo que el tema de recursividad está gustando bastante propongo crear este hilo donde iré proponiendo diferentes retos a resolver en C sin usar iteración (bucles for, while, do while) ni goto, claro. Se pueden usar tantas funciones como se quieran.
De momento iré sacando los problemas de un pdf que tengo de ejercicios en Haskell y los iré adaptando a C. Pues venga, ¡Vamos al grano y presento los dos primeros retos!
1) Escriba una función
contarNegativos que cuente cuantos números negativos existen en una lista
Ejemplo: dado el array {1, 4, -3, 2, -1, -8, 0, 1} debe devolver 3:
Aquí el código de plantilla:
Código C:
Ver original#include <stdio.h>
/* más codigo si hace falta */
int contarNegativos(int arr[], int n) {
/* Escribir código */
return 0;
}
int main (void) {
int arr[] = {1, 4, -3, 2, -1, -8, 0, 1};
int n = sizeof arr / sizeof *arr;
/* calcular cantidad de negativos */
int cantidad = contarNegativos(arr, n);
/* mostrar cantidad de negativos */
return 0;
}
2) Escriba una función
diag que tenga una lista de caracteres como parámetro y que dé como resultado los caracteres
en una diagonal.
Cadena:
Resultado:
Aquí el código de plantilla:
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* más codigo si hace falta */
char* diag(char* cadena, char* resultado) {
/* Escribir código */
resultado[0] = '\0';
return resultado;
}
int main (void) {
char cadena [] = "abcde";
char* resultado
= malloc(n
* n
+ 1); /* doy mas espacio del necesario */
// a partir de la cadena de caracteres retornar la nueva que tenga los caracteres en diagonal
resultado = diag(cadena, resultado);
//mostrar resultado
return 0;
}
Ya se irá complicando la cosa
Un saludo!