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 de rolan2kn
1
1
rolan2kn, Soy Ingeniero en Ciencias Informáticas, alguna experiencia en...
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 }