con respecto al ultimo codigo he encontrado otros errores que habia sabacdo por alto, al crear las variables dinamicas cad_a y cad_b lo estan haciando sin especificar el tamaño del arreglo lo cual esta mal, en la funcion longitud estas usando return i dentro del for lo cual hace que se termine la funcion al entrar el for por primera vez, y el caracter de terminacion de cadena lleva barra diganal invertida ( \ ) la tienes mas y va a crear un ciclo infinito, quitale las llave al for y pon punto y coma ( ; ) al final de este y has la declaracion de i fuera del for arregla el caracter de terminacion y tendras tu funcion funcionando.
y esta la vas a usar despues de
Código C++:
Ver original//cout << "Introduce una cadena: "; //pide los datos
//cin.getline (cad_a,longitud);
para recorrer solo la cantidad de espacios intruducida en los for,