martes, 6 de noviembre de 2007

Árbol binario en C#

//arbol binario con inserción ordenada en C#
//UNACAR DES-DACI/JAFH 2007
//
using System;
class nodo{
public string dato;
public nodo izq;
public nodo der;
}
class arbolbinario{
static nodo raiz=null;
static void inserta(ref nodo raiz,nodo p){
if(raiz==null) raiz=p;
else
if(String.Compare(p.dato,raiz.dato)<0)
inserta(ref raiz.izq,p);
else
inserta(ref raiz.der,p);
}
static void inorden(nodo raiz){
if(raiz!=null){
inorden(raiz.izq);
Console.Write(raiz.dato+",");
inorden(raiz.der);
}
}
static void insertaDato(string dato){
nodo p=new nodo();
p.dato=dato;
p.izq=null;
p.der=null;
inserta(ref raiz,p);
}
public static void Main(){
insertaDato("f");
insertaDato("c");
insertaDato("j");
insertaDato("a");
insertaDato("d");
insertaDato("g");
insertaDato("r");
inorden(raiz);
Console.WriteLine();
}
}

lunes, 29 de octubre de 2007

comparación

Mis queridos alumnos en esta liga
http://furryland.org/~mikec/bench/
encontraran un ejemplo de comparacion de lenguajes de programación
Tarea:
Repetir el análisis comparativo de los lenguajes
D, C++, C#

Fecha de entrega : el 14 de noviembre

Final experiencia


Estructura de datos Tareas Participa Exp1 Final

ARCOS HIDALGO FREDDY ABEL 20 10 0 7
AREVALO CAMPOS JUAN BRAULIO 0 10 0 1
BERDON RUIZ NAYELI VIANEY 90 90 85 87
CABALLO FONZ DAVID ARÒN 0 10 0 1
CABONEL PEREZ ROSALI GUADALUPE 0 10 0 1
CICLER GOMEZ JOSE DEL CARMEN 70 10 0 22
CRUZ PADILLA MILDRED FABIOLA 0 10 0 1
DEL TORO PAZ VINICIO 30 10 0 10
DEL VALLE MASS ROGELIO GERARDO 0 10 0 1
ESCALANTE PEREZ ALEJANDRA 0 75 60 44
GONGORA LEON MARIO ARTURO 90 10 0 28
LARA CAHUICH DANIEL 0 75 60 44
MARTINEZ CATZIN DIANA BEATRIZ 100 100 85 91
MONTEJO GALLEGOS MIGUEL ANGEL 70 10 0 22
MORON DOMINGUEZ OSCAR IVAN 0 10 0 1
NAAL PALMA JORGE ARMANDO 0 10 0 1
ORTEGA ZALASAR LUIS FERNANDO 80 100 0 34
PACHECO GARCIA ANA MARIA 0 75 0 8
PERALTA AZUARA JAVIER DANIEL 95 100 85 90
RESENDIZ GONZALEZ JOSE LUIS 95 100 85 90
RODRIGUEZ AMBRIZ MANUEL JESUS 70 10 0 22
ZABALA GONZALEZ CLAUDIA JUDITH 85 80 60 70
TEC MENESES DERECK MANUEL 20 10 0 7

viernes, 19 de octubre de 2007

Lista Ligada en archivo

Puede vber un ejemplo de manejo de dos listas ligadas en un archivo en la liga:
http://mx.geocities.com/jfloreshernandez2002/

viernes, 12 de octubre de 2007

Ernesto che Guevara

"He nacido en la Argentina; no es un secreto para nadie. Soy cubano y también soy argentino y, si no se ofenden las ilustrísimas señorías de Latinoamérica, me siento tan patriota de Latinoamérica, de cualquier país de Latinoamérica, como el que más y, en el momento en que fuera necesario, estaría dispuesto a entregar mi vida por la liberación de cualquiera de los países de Latinoamérica, sin pedirle nada a nadie, sin exigir nada, sin explotar a nadie." Ernesto Che Guevara.

jueves, 11 de octubre de 2007

Ejemplo calculadora en polaca inversa

//Ejemplo calculadora en polaca inversa
//agregue el código de lista ligada y complete
//lo que se indica en comentarios
//si usa esta version debera entenderla y explicarla
//JAFH Ago 07
import std.conv;
import std.stdio;
import std.string;
import std.regexp;

char[] numero(inout char[]s){
auto m = std.regexp.search(s, r"[0-9]*");
if(m){
if(m.pre.length==0){
s=m.post();
return m.match(0);
}else return "";
}else return "";
}
char[] operador(inout char[]s){
auto m = std.regexp.search(s, r"[*+]");
if(m){
if(m.pre.length==0){
s=m.post();
return m.match(0);
}else return "";
}else return "";
}
char[] separador(inout char[]s){
auto m = std.regexp.search(s, r"[,]");
if(m){
if(m.pre.length==0){
s=m.post();
return m.match(0);
}else return "";
}else return "";
}
void separaTokens(char[] s){
int i=0;
char[] aux;
while(s.length>0){
while(separador(s)!=""){}
aux=numero(s);
if(aux==""){
aux=operador(s);
//desempila dos datos
//realiza operacion
//el operador esta en aux, con switch lo checan
//empila resultado
}else{
//empila lo que trae aux
}
writefln(aux);
if(i++>20)break; //borrar esta linea, Para que sirve?
}
}
//
void main(){
char[] s="3,4,*,5,6,*,+";
separaTokens(s);
//el resultado es el ultimo elemento de la pila
getch();
}

martes, 9 de octubre de 2007

Separar una expresión en tokens

//Ejemplo expresion regular para separar una expresion en tokens
//JAFH Ago 07
import std.conv;
import std.stdio;
import std.string;
import std.regexp;

char[] numero(inout char[]s){
auto m = std.regexp.search(s, r"[0-9]*");
if(m){
s=m.post();
return m.match(0);
}else return "";
}
char[] operador(inout char[]s){
auto m = std.regexp.search(s, r"[*|+]");
if(m){
s=m.post();
return m.match(0);
}else return "";
}
char[] separador(inout char[]s){
auto m = std.regexp.search(s, r"[,]");
if(m){
s=m.post();
return m.match(0);
}else return "";
}
void separaTokens(char[] s){
int i=0;
char[] aux;
while(s.length>0){
aux=numero(s);
//writefln(aux,".,queda:",s);
if(aux=="")
aux=operador(s);
writefln(aux,",queda:",s);
if(i++>10)break;
}
}
//
void main(){
char[] s="2345*56+99*96";
separaTokens(s);
getch();
}