Título: [Duda] token/strtok /Notacion Polaca Inversa Publicado por: digitalx2 en 22 Septiembre 2013, 22:31 pm necesito seprarar una cadena de caracteres, que enrealidad seran numeros y operadores matematicos
pero no logro asignar lso valores de *prt a una cadena para despues haceres push (meterlos a mi estructura/pila A") el strtok no lo se usar muy bien , soy nuevo en cadenas y se me complica mucho ._ . todo lo que esta comentado es por que no funciona.. osea deja de funcionar el programa... por ejemplo (para los que no conozcan la notacion polaca inversa) mi input es: 5 6 9 + 8 5 * esto quedaria como 5 11 40 siempre el operador matematico se aplicara a los dos ultimos valores entonces necesito separar la cadena inicial para saber si es digito o un operador matematico Código
Título: Re: [Duda] token/strtok /Notacion Polaca Inversa Publicado por: eferion en 23 Septiembre 2013, 19:10 pm mi input es: 5 6 9 + 8 5 * esto quedaria como 5 11 40 O se me ha olvidado sumar o esto debería quedar tal que: 5 15 40 Es importante porque si no puedes ponerte a buscar errores donde no los hay. Más cosillas. Como norma general los índices se tiende a incrementarlos despues de añadir el elemento al vector... no antes. Básicamente porque si se produce un problema mientras añades el elemento al vector al final tienes que acordarte de volver a reducir el valor del puntero... y es preferible perder un dato a recuperar un valor no inicializado. Esto te lo digo por el uso que haces de index. Código El problema que te va a generar esta estructura es que el primer token lo vas a perder... prueba a meter esta secuencia 5 5 +... no funciona. Si quieres convservar el primer token, que imagino que sí, usa un bucle dowhile... Código
Otra cosa más. La función 'isdigit' solamente comprueba un caracter... luego si tienes pensado permitir la entrada de números de dos o más dígitos tendrás que comprobar todo el token para evitar errores. Y para terminar un último fallo: Código
Mola esta función... imagínate una pila con elementos aleatorios... haz un pop y te adivino lo que te va a devolver esta función: siempre 1... bueno, al menos mientras queden elementos en el stack. ese return 1 no debería estar así... la función más bien debería tener una forma tal que: Código
Y para rematar unos consejos: * no pongas varias instrucciones en la misma línea... queda feo, generas código menos legible y que además es más complicado de depurar y no vas a ganar espacio. Una línea, una instrucción... hazme caso que lo vas a agradecer. * Elimina variables sin uso: no aportan nada al código y dificultan su lectura: i, op2, type. Un saludo. |