/*Hola a todos, leyendo el mensaje de este amigo 
me he puesto manos  a la obra en lo que podria ser una solucion. 
El problema es que te dice  si es o no un float
 pero la funcion que te convierte el tipo cadena de caracteres a un float no funciona no se porqué,
 asi que expongo a continuacion el codigo fuente
 y espero que te sirva de ayuda aunque no es una sola funcion predefinida.
 Y tb os invito a descubrir que es lo que falla en la conversion TCadena a float. 
Suerte;)
*/
/*Realizado por LamKros*/
#include <iostream.h>
#include <stdlib.h>
const int MAXCAD = 20;
const char FINCAD = char(0);
const char CERO = '0';
const char NUEVE = '9';
const char PUNTO = '.';
typedef char TCadena[MAXCAD+1]; 
//Comprueba que la cadena de caracteres corresponde a un nº en coma flotante
bool esComaFlotante(TCadena d); 
//Convierte a numero en coma flotante (CONVertir To(2) Coma Flotante)
float Conv2CF(TCadena d); 
//Realiza la potencia de un numero
float Potencia(int num, int indice);
int main()
    {TCadena dato;
    bool fin=false;
    int sal;
    float resultado;
    
    while (!(fin))
    {
    system("cls");
    cout << "Introduce un numero en coma flotante: ";
    cin >> dato;
    if (esComaFlotante(dato))
    {
    cout <<endl <<"Numero en coma flotante"<<endl;
    //resultado = Conv2CF(dato);
    //cout << "El numero es" <<resultado;
    }
    else
    {cout <<endl <<"Numero incorrecto"<<endl;}
    system("PAUSE");     
    cout <<endl<< " Pulsa 1 para continuar. ";
    cin >> sal;
    if(sal!=1)
    {fin = true;}
    }
      return 0;
    }
bool esComaFlotante(TCadena d)
     {bool r1=false,r2=false;
     int i=0;
     while ((d>=CERO)&&(d<=NUEVE)&&(i<MAXCAD))
     {++i;}
     if ((d==PUNTO)&&(d[i+1]!=FINCAD)&&(i>0))
     {r1=true;}
     else
     {r1=false;}
     ++i;
     while ((d>=CERO)&&(d<=NUEVE)&&(i<MAXCAD))
     {++i;}
     if ((i>=MAXCAD)||(d==FINCAD))
     {r2=true;}
     else
     {r2=false;}
     return (r1 && r2);
     }
     
float Conv2CF(TCadena d)
      {
      int i=0,j=0;
      float num=0;
      if (esComaFlotante(d))
      {
      while ((d[j]!=PUNTO)&&(j<MAXCAD))
      {++j;}
      while ((d!=FINCAD)&&(i<MAXCAD))
      {
      num = num + (int(d[j])-int(CERO))* Potencia(10,j); }
      i=i+1;
      j=j-1;
      }
      return num;
      }
float Potencia(int num, int indice)
    {int i;
    float res=1;
    if (indice>=0)
    {
    for(i=0;i<=indice;++i)
    {res = res * num;}
    }
    else
    {
    for(i=0;i>indice;--i)
    {res = res / num;}
    }
    return res;
    }      
      
//Esto es todo, animo;)