La propuesta parece interesante, ya veremos como acaba
ejercicio 1:
Código C++:
Ver original#include <stdio.h>
int contarNegativos(int arr[], int n)
{
if ( n > 0 )
return (*arr < 0) + contarNegativos( ++arr, n-1 );
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;
}
ejercicio 2:
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)
{
if (*cadena)
{
int espacio = *resultado + 1;
sprintf( resultado
, "%*c\n%c", espacio
, *cadena
, espacio
); diag( ++cadena, resultado + espacio + 1 );
}
else
*resultado = 0;
return resultado;
}
int main (void) {
char cadena [] = "abcde";
char* resultado
= (char*)calloc(n
* n
+ 1, sizeof(char)); /* 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;
}
La única licencia que me he permitido es cambiar el malloc por calloc en el segundo ejercicio. Escribir de forma recursiva en un buffer sin inicializar no me parece buena idea.