Me gustaría que me ayudaras en la realización de un programa en C que separe los dígitos de cadenas

Hola Experto.. Me gustaría que me ayudaras en la realización de un programa en C que separe los dígitos de cadenas y
por ejemplo si la entrada es: "iiuu"77df343for
la salida sea: iiuu: es cadena
                      77 :es un int
                       df: error
                       for: palabra reservada
osea que identifique todo lo que entre..
De antemano Gracias..
Respuesta
1
Bueno lo que necesitas primero es saber que el tipo de dato que te entraran debe ser una cadena de caracteres char* o string y que necesitamos iterar por todas las posiciones e ir preguntando. Ademas hay funciones que te dicen si un carácter es un dígito (isdigit) o si es una tecla (isalpha) y tienes que hacer una que te diga si una cadena es una palabra clave.
Un ejemplo seria:
#include <iostream>
#include <ctype.h>
using namespace std;
...............
int length = inputStr.Length; // inputStr es de tipo string y es la cadena de entrada
string temp, num; // cadena temporal
for(int i = 0; i < length; i++)
{
    char c = inputStr
;
if(!isdigit(c))
{
   if(num != "")
 {
     cout << num <<" es un numero"<
     num = "";
   }
temp += c;
    if(isKeyWord(temp)) // isKeyWord es el metodo que tienes que hacer para saber si es palabra reservada
    {
 cout<<<" es palabra reservada"<
   temp = "";
     } 
}
else if(isdigit)
 {
    temp = "";
    if(temp != "")
      {
cout<<< " es una cadena"<
temp = "";
}
   num += c;
}
}
if(num != "")
cout << num <<" es un numero"<<endl;
if(temp != "")
cout << temp <<" es una cadena"<<endl;

Para la función isKeyWord, lo que necesitas es un arreglo de string que almacene todas las palabras claves y luego haces un ciclo por cada posición preguntando si la palabra de la posición i es igual al parámetro.
bool isKeyWord(string word)
{
    string keywords[50] = {"for", "while", "if", .....}; // haces el arreglo
    int i = 0; // inicializas la variable de ciclo
     while (i < 50 && keywords != word) // haces el ciclo mientras i no este en el final y la palabra no haya aparecido
       ++i; // incrementas
     return (i < 50); // retornas si la variable aparecio o no
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas