martes, 9 de octubre de 2007

Ejemplo polaca

/////////////////////////////////////////////////////
//ejemplo de conversión de notación infija a postfija
//f1*f2+f3*f4
//donde fi es un número entero
//deberán completarlo para que soporte cualquier expresión
//Yo tambien los quiero, Saludos
/////////////////////////////////////////////////////
import std.conv;
import std.stdio;
import std.string;
import std.regexp;

char[] multiplica(char[]s){
auto m = std.regexp.search(s, r"[0-9]*[*][0-9]*");
if(m){
m = std.regexp.search(s, r"[*]");
return m.pre~","~m.post~","~m.match(0);
}else return "error";
}
char[] suma(char[] s){
writefln("Cadena de entrada:",s);
auto m = std.regexp.search(s, r"[0-9]*[*][0-9]*[+][0-9]*[*][0-9]*");
if(m){
m = std.regexp.search(s, r"[+]");
return multiplica(m.pre)~","~multiplica(m.post)~","~m.match(0);
}else return "No caso";
}
//
void main(){
char[] s="2345*56+99*96";
writefln(suma(s));
getch();
}

No hay comentarios: