<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Jcongote's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 24 Jul 2008 05:21:40 GMT</pubDate>
    <description>DZone Snippets: Jcongote's Code Snippets</description>
    <item>
      <title>Integer Sqrt</title>
      <link>http://snippets.dzone.com/posts/show/2715</link>
      <description>This code calculate the square root of a integer.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;unsigned int sqrt(unsigned int n){&lt;br /&gt;    unsigned int a;&lt;br /&gt;    for (a=0;n&gt;=(2*a)+1;n-=(2*a++)+1);&lt;br /&gt;    return a;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 26 Sep 2006 02:05:15 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2715</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Function Vector</title>
      <link>http://snippets.dzone.com/posts/show/2706</link>
      <description>This Code create a vector of functions.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;typedef struct _clase{&lt;br /&gt;        int a;&lt;br /&gt;        void(*func[3])(struct _clase*);&lt;br /&gt;} clase;&lt;br /&gt;&lt;br /&gt;void clase_func1 (struct _clase *p){&lt;br /&gt;            printf("Funcion 1: %i\n",p-&gt;a);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void clase_func2 (struct _clase *p){&lt;br /&gt;            printf("Funcion 2: %i\n",p-&gt;a);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void clase_func3 (struct _clase *p){&lt;br /&gt;            printf("Funcion 3: %i\n",p-&gt;a);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void holaMundo(){&lt;br /&gt;     printf("Hola Mundo!\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;typedef void(*func) (void);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;  func val;&lt;br /&gt;  clase c;&lt;br /&gt;  &lt;br /&gt;  c.func[1]=&amp;clase_func1;&lt;br /&gt;  c.func[2]=&amp;clase_func2;&lt;br /&gt;  c.func[0]=&amp;clase_func3;&lt;br /&gt;      &lt;br /&gt;  val=&amp;holaMundo;&lt;br /&gt;  val();&lt;br /&gt;  c.a=1;&lt;br /&gt;  c.func[0](&amp;c);&lt;br /&gt;  c.a=2;&lt;br /&gt;  c.func[1](&amp;c);&lt;br /&gt;  c.a=3;&lt;br /&gt;  c.func[2](&amp;c);&lt;br /&gt;  system("PAUSE");	&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 24 Sep 2006 06:47:51 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2706</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>PERT CPM</title>
      <link>http://snippets.dzone.com/posts/show/2672</link>
      <description>Implementacion en java de un modelo PERT_CPM&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStreamReader;&lt;br /&gt;import java.util.StringTokenizer;&lt;br /&gt;&lt;br /&gt;public class Proyecto {&lt;br /&gt;&lt;br /&gt;	/**&lt;br /&gt;	 * @param args&lt;br /&gt;	 */&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		String texto = null;&lt;br /&gt;		int n = 0, t = 0;&lt;br /&gt;		Tarea tareas[] = null, inicio = null, fin = null;&lt;br /&gt;&lt;br /&gt;		try {&lt;br /&gt;			BufferedReader in = new BufferedReader(new InputStreamReader(&lt;br /&gt;					System.in));&lt;br /&gt;			texto = in.readLine();&lt;br /&gt;			n = Integer.parseInt(texto);&lt;br /&gt;&lt;br /&gt;			tareas = new Tarea[n];&lt;br /&gt;			inicio = new TareaInicio();&lt;br /&gt;			fin = new TareaFinal();&lt;br /&gt;			inicio.setNombre("Inicio");&lt;br /&gt;			inicio.setTiempo(0);&lt;br /&gt;			fin.setNombre("Fin");&lt;br /&gt;			fin.setTiempo(0);&lt;br /&gt;&lt;br /&gt;			for (int i = 0; i &lt; n; i++) {&lt;br /&gt;				texto = in.readLine();&lt;br /&gt;				tareas[i] = new Tarea();&lt;br /&gt;				StringTokenizer st = new StringTokenizer(texto, ",");&lt;br /&gt;				String nombre, tipo, tiempo;&lt;br /&gt;				nombre = st.nextToken();&lt;br /&gt;				tipo = st.nextToken();&lt;br /&gt;				tareas[i].setNombre(nombre);&lt;br /&gt;				if (tipo.equals("F")) {&lt;br /&gt;					tiempo = st.nextToken();&lt;br /&gt;					tareas[i].setTiempo(Integer.parseInt(tiempo));&lt;br /&gt;				} else if (tipo.equals("A") || tipo.equals("P")) {&lt;br /&gt;					tareas[i].setTiempo(0);&lt;br /&gt;				}&lt;br /&gt;			}&lt;br /&gt;			texto = in.readLine();&lt;br /&gt;			t = Integer.parseInt(texto);&lt;br /&gt;			for (int i = 0; i &lt; t; i++) {&lt;br /&gt;				String org, des;&lt;br /&gt;				Tarea torg = null, tdes = null;&lt;br /&gt;				texto = in.readLine();&lt;br /&gt;				StringTokenizer st = new StringTokenizer(texto, ",");&lt;br /&gt;				org = st.nextToken();&lt;br /&gt;				des = st.nextToken();&lt;br /&gt;				if (org.equals(inicio.getNombre())) {&lt;br /&gt;					torg = inicio;&lt;br /&gt;				} else {&lt;br /&gt;					for (int j = 0; j &lt; n; j++) {&lt;br /&gt;						if (org.equals(tareas[j].getNombre())) {&lt;br /&gt;							torg = tareas[j];&lt;br /&gt;							break;&lt;br /&gt;						}&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;&lt;br /&gt;				if (des.equals(fin.getNombre())) {&lt;br /&gt;					tdes = fin;&lt;br /&gt;				} else {&lt;br /&gt;					for (int j = 0; j &lt; n; j++) {&lt;br /&gt;						if (des.equals(tareas[j].getNombre())) {&lt;br /&gt;							tdes = tareas[j];&lt;br /&gt;							break;&lt;br /&gt;						}&lt;br /&gt;					}&lt;br /&gt;				}&lt;br /&gt;				if (torg == null || tdes == null) {&lt;br /&gt;									}&lt;br /&gt;				torg.addConcecuente(tdes);&lt;br /&gt;				tdes.addAntecedente(torg);&lt;br /&gt;			}&lt;br /&gt;		} catch (IOException e) {&lt;br /&gt;			System.out.println("Error en entrada de datos");&lt;br /&gt;		}&lt;br /&gt;		fin.terminacionRapida();&lt;br /&gt;		inicio.inicioTardio();&lt;br /&gt;		System.out.print("Ruta Critica: Inicio, ");&lt;br /&gt;		for (int i = 0; i &lt; n; i++) {&lt;br /&gt;			if (tareas[i].isCritico()) {&lt;br /&gt;				System.out.print(tareas[i].getNombre() + ", ");&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		System.out.print(" Fin\n");&lt;br /&gt;		System.out.println("Tiempo: " + fin.inicioTardio());&lt;br /&gt;		System.out.println(inicio.getNombre() + " holgura: "&lt;br /&gt;				+ inicio.getHolgura());&lt;br /&gt;		for (int i = 0; i &lt; n; i++) {&lt;br /&gt;			System.out.println(tareas[i].getNombre() + " holgura: "&lt;br /&gt;					+ tareas[i].getHolgura());&lt;br /&gt;		}&lt;br /&gt;		System.out.println(fin.getNombre() + " holgura: " + fin.getHolgura());&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;////////////////////////&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;&lt;br /&gt;public class Tarea {&lt;br /&gt;	private String nombre;&lt;br /&gt;	private int tiempo;&lt;br /&gt;	private int holgura;&lt;br /&gt;	private ArrayList antecedentes;&lt;br /&gt;	private ArrayList consecuentes;&lt;br /&gt;	&lt;br /&gt;	private int iniciomasrapido;&lt;br /&gt;	private int terminacionmasrapida;&lt;br /&gt;	private int iniciomastarde;&lt;br /&gt;	private int terminaciontarde;&lt;br /&gt;&lt;br /&gt;	Tarea(){&lt;br /&gt;		this.antecedentes = new ArrayList();&lt;br /&gt;		this.consecuentes = new ArrayList();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	void setNombre(String nombre){&lt;br /&gt;		this.nombre=nombre;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	void setTiempo(int tiempo){&lt;br /&gt;		this.tiempo=tiempo;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public String getNombre() {&lt;br /&gt;		return nombre;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public int getTiempo() {&lt;br /&gt;		return tiempo;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public int terminacionRapida(){&lt;br /&gt;		this.iniciomasrapido=0;&lt;br /&gt;		for (int i = 0; i &lt; antecedentes.size(); i++) {			&lt;br /&gt;			if(((Tarea)antecedentes.get(i)).terminacionRapida()&gt;this.iniciomasrapido){&lt;br /&gt;				this.iniciomasrapido=((Tarea)antecedentes.get(i)).terminacionRapida();				&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		this.terminacionmasrapida=this.iniciomasrapido+this.tiempo;&lt;br /&gt;		return (this.terminacionmasrapida);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public int inicioTardio(){&lt;br /&gt;		this.terminaciontarde=999999;&lt;br /&gt;		for (int i = 0; i &lt; consecuentes.size(); i++) {&lt;br /&gt;			if(((Tarea)consecuentes.get(i)).inicioTardio()&lt;this.terminaciontarde){&lt;br /&gt;				this.terminaciontarde=((Tarea)consecuentes.get(i)).inicioTardio();				&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		this.iniciomastarde=this.terminaciontarde-this.tiempo;&lt;br /&gt;		return (this.iniciomastarde);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	int getHolgura(){&lt;br /&gt;		this.holgura=this.iniciomastarde-this.iniciomasrapido;&lt;br /&gt;		return this.holgura;&lt;br /&gt;	}	&lt;br /&gt;	&lt;br /&gt;	@SuppressWarnings("unchecked")&lt;br /&gt;	public void addAntecedente(Tarea t){&lt;br /&gt;		this.antecedentes.add(t);&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	@SuppressWarnings("unchecked")&lt;br /&gt;	public void addConcecuente(Tarea t){&lt;br /&gt;		this.consecuentes.add(t);		&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	boolean isCritico(){&lt;br /&gt;		return (this.getHolgura()==0);		&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/////////////////////////&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class TareaFinal extends Tarea {&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;	public int inicioTardio(){&lt;br /&gt;		return this.terminacionRapida();		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public int getHolgura(){&lt;br /&gt;		return 0;		&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;///////////////////&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class TareaInicio extends Tarea {&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	public int terminacionRapida(){&lt;br /&gt;		return 0;&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public int getHolgura(){&lt;br /&gt;		return 0;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 21:25:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2672</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Ejemplo de matrices en C</title>
      <link>http://snippets.dzone.com/posts/show/2671</link>
      <description>Se crea un matrix dinamica en c, y luego se muestra, el tamano de muestra siempre es de 10x10&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;void mostrar(int **a){&lt;br /&gt;	 int i,j;&lt;br /&gt;	for (i=0;i&lt;10;i++){&lt;br /&gt;		for (j=0;j&lt;10;j++){&lt;br /&gt;		printf("%i",a[i][j]);&lt;br /&gt;		}&lt;br /&gt;		printf("\n");&lt;br /&gt;	}	&lt;br /&gt;	 &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;	int i,j,**a;&lt;br /&gt;	a=(int**)malloc(10*sizeof(int*));&lt;br /&gt;&lt;br /&gt;	for (i=0;i&lt;10;i++){&lt;br /&gt;		a[i]=(int*)malloc(10*sizeof(int));&lt;br /&gt;		for (j=0;j&lt;10;j++){&lt;br /&gt;			a[i][j]=i;	&lt;br /&gt;		}&lt;br /&gt;	}	&lt;br /&gt;	mostrar(a);&lt;br /&gt;	getchar();&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 21:13:25 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2671</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Go game</title>
      <link>http://snippets.dzone.com/posts/show/2670</link>
      <description>Algun juego que alguna ves realice... llamado go, pero que ya no recuerdo.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;time.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int menu(){&lt;br /&gt;&lt;br /&gt;    int select=0;&lt;br /&gt;    do{&lt;br /&gt;        printf("Menu:\n");&lt;br /&gt;        printf("1. Score\n");&lt;br /&gt;        printf("2. Jugar\n");&lt;br /&gt;        printf("3. Salir\n");&lt;br /&gt;        printf("Entre la opcion:\n");&lt;br /&gt;        scanf("%i",&amp;select);&lt;br /&gt;    }while(!(select&gt;0 &amp;&amp; select&lt;4));&lt;br /&gt;  &lt;br /&gt;    return select;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mostrar_score(int puntaje){&lt;br /&gt;     //Si puntaje &lt;0 entonces no agrega jugador&lt;br /&gt;     //Sino puede agregarlo&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void jugada_maquina(int **tablero, int f, int c){&lt;br /&gt;	 int i,j;&lt;br /&gt;	 do{&lt;br /&gt;	 	 i=rand()%f;&lt;br /&gt;	 	 j=rand()%c;&lt;br /&gt;	 } while (!tablero[i][j]==0);&lt;br /&gt;	 tablero[i][j]=2;	 &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void mostrar_tablero(int **tablero,int f, int c){&lt;br /&gt;	 int i,j;&lt;br /&gt;	 for (i=0;i&lt;f;i++){&lt;br /&gt;	 	 for (j=0;j&lt;c;j++){&lt;br /&gt;&lt;br /&gt;		 	 switch(tablero[i][j]){&lt;br /&gt;		   	 			 case 0: printf("*");break;&lt;br /&gt;			 			 case 1: printf("X");break;&lt;br /&gt;						 case 2: printf("O");break;			 					   &lt;br /&gt;		     }&lt;br /&gt;	     }	&lt;br /&gt;		 printf("\n");&lt;br /&gt;     }	 	 &lt;br /&gt;}&lt;br /&gt;         &lt;br /&gt;&lt;br /&gt;int evaluar(int **tablero,int f,int c){&lt;br /&gt;	int i,j;&lt;br /&gt;	int cambio=0;&lt;br /&gt;	int tablas=1;&lt;br /&gt;   	int gana=0;&lt;br /&gt;	do{&lt;br /&gt;	   cambio=0;&lt;br /&gt;		for (i=0;i&lt;f;i++){&lt;br /&gt;			for (j=0;j&lt;c;j++){&lt;br /&gt;				if(tablero[i][j]==3){&lt;br /&gt;					if (i-1&gt;0)&lt;br /&gt;					   if (tablero[i-1][j]==1)&lt;br /&gt;					   	  tablero[i-1][j]=3,cambio=1;&lt;br /&gt;					if (i+1&lt;f)&lt;br /&gt;					   if (tablero[i+1][j]==1)&lt;br /&gt;					   	  tablero[i+1][j]=3,cambio=1;&lt;br /&gt;					if (j-1&gt;0)&lt;br /&gt;					   if (tablero[i][j-1]==1)&lt;br /&gt;					   	  tablero[i][j-1]=3,cambio=1;&lt;br /&gt;					if (i+1&lt;c)&lt;br /&gt;					   if (tablero[i][j+1]==1)&lt;br /&gt;					   	  tablero[i][j+1]=3,cambio=1;											 &lt;br /&gt;			    } else if (tablero[i][j]==1){&lt;br /&gt;					if (i-1&gt;0)&lt;br /&gt;					   if (tablero[i-1][j]==0)&lt;br /&gt;					   	  tablero[i][j]=3,cambio=1;&lt;br /&gt;					if (i+1&lt;f)&lt;br /&gt;					   if (tablero[i+1][j]==0)&lt;br /&gt;					   	  tablero[i][j]=3,cambio=1;&lt;br /&gt;					if (j-1&gt;0)&lt;br /&gt;					   if (tablero[i][j-1]==0)&lt;br /&gt;					   	  tablero[i][j]=3,cambio=1;&lt;br /&gt;					if (i+1&lt;c)&lt;br /&gt;					   if (tablero[i][j+1]==0)&lt;br /&gt;					   	  tablero[i][j]=3,cambio=1;				  	   &lt;br /&gt;			    }&lt;br /&gt;			}	&lt;br /&gt;		}&lt;br /&gt;	}while(cambio);&lt;br /&gt;&lt;br /&gt;		for (i=0;i&lt;f;i++){&lt;br /&gt;			for (j=0;j&lt;c;j++){&lt;br /&gt;				if (tablero[i][j]==1)&lt;br /&gt;				   gana=1;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	   for (i=0;i&lt;f;i++){&lt;br /&gt;		  for (j=0;j&lt;c;j++){&lt;br /&gt;			if(tablero[i][j]==3)&lt;br /&gt;			  tablero[i][j]=1;&lt;br /&gt;		  }&lt;br /&gt;	   }		   			 &lt;br /&gt;&lt;br /&gt;		if (gana==1){&lt;br /&gt;		   return 2;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;   	gana=0;	&lt;br /&gt;	do{&lt;br /&gt;	   cambio=0;&lt;br /&gt;		for (i=0;i&lt;f;i++){&lt;br /&gt;			for (j=0;j&lt;c;j++){&lt;br /&gt;				if(tablero[i][j]==4){&lt;br /&gt;					if (i-1&gt;0)&lt;br /&gt;					   if (tablero[i-1][j]==2)&lt;br /&gt;					   	  tablero[i-1][j]=4,cambio=1;&lt;br /&gt;					if (i+1&lt;f)&lt;br /&gt;					   if (tablero[i+1][j]==2)&lt;br /&gt;					   	  tablero[i+1][j]=4,cambio=1;&lt;br /&gt;					if (j-1&gt;0)&lt;br /&gt;					   if (tablero[i][j-1]==2)&lt;br /&gt;					   	  tablero[i][j-1]=4,cambio=1;&lt;br /&gt;					if (i+1&lt;c)&lt;br /&gt;					   if (tablero[i][j+1]==2)&lt;br /&gt;					   	  tablero[i][j+1]=4,cambio=1;											 &lt;br /&gt;			    } else if (tablero[i][j]==2){&lt;br /&gt;					if (i-1&gt;0)&lt;br /&gt;					   if (tablero[i-1][j]==0)&lt;br /&gt;					   	  tablero[i][j]=4,cambio=1;&lt;br /&gt;					if (i+1&lt;f)&lt;br /&gt;					   if (tablero[i+1][j]==0)&lt;br /&gt;					   	  tablero[i][j]=4,cambio=1;&lt;br /&gt;					if (j-1&gt;0)&lt;br /&gt;					   if (tablero[i][j-1]==0)&lt;br /&gt;					   	  tablero[i][j]=4,cambio=1;&lt;br /&gt;					if (i+1&lt;c)&lt;br /&gt;					   if (tablero[i][j+1]==0)&lt;br /&gt;					   	  tablero[i][j]=4,cambio=1;				  	   &lt;br /&gt;			    }&lt;br /&gt;			}	&lt;br /&gt;		}&lt;br /&gt;	}while(cambio);	&lt;br /&gt;&lt;br /&gt;		for (i=0;i&lt;f;i++){&lt;br /&gt;			for (j=0;j&lt;c;j++){&lt;br /&gt;				if (tablero[i][j]==2)&lt;br /&gt;				   gana=1;&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;	   for (i=0;i&lt;f;i++){&lt;br /&gt;		  for (j=0;j&lt;c;j++){&lt;br /&gt;			if(tablero[i][j]==4)&lt;br /&gt;			  tablero[i][j]=2;&lt;br /&gt;		  }&lt;br /&gt;	   }		   			 &lt;br /&gt;		if (gana==1){&lt;br /&gt;		   return 1;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;   for (i=0;i&lt;f;i++){&lt;br /&gt;	  for (j=0;j&lt;c;j++){&lt;br /&gt;		if(tablero[i][j]==0)&lt;br /&gt;		  tablas=0;&lt;br /&gt;        }&lt;br /&gt;	}		   	&lt;br /&gt;	&lt;br /&gt;	if (tablas==1)&lt;br /&gt;	   return 4;		 &lt;br /&gt;&lt;br /&gt;	return 0;	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int jugar(){&lt;br /&gt;    int i,j,f,c;&lt;br /&gt;    int **tablero;&lt;br /&gt;    int puntaje=0;&lt;br /&gt;    &lt;br /&gt;    printf ("Entre el numero de filas y columnas del tablero:\n");&lt;br /&gt;    scanf("%i%i",&amp;f,&amp;c);&lt;br /&gt;&lt;br /&gt;    tablero = (int**)malloc(f*sizeof(int*));&lt;br /&gt;    for (i=0;i&lt;f;i++){&lt;br /&gt;        tablero[i]= (int*)malloc(c*sizeof(int)); &lt;br /&gt;        for (j=0;j&lt;c;j++){&lt;br /&gt;			tablero[i][j]=0;	&lt;br /&gt;		 }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    do{&lt;br /&gt;        int ni,nj;&lt;br /&gt;       &lt;br /&gt;        mostrar_tablero(tablero,f,c);&lt;br /&gt;        do{&lt;br /&gt;           printf("Entre el numero de la coordenada:\n");&lt;br /&gt;           scanf("%i%i",&amp;ni,&amp;nj);&lt;br /&gt;           if (ni==0 &amp;&amp; nj==0){&lt;br /&gt;              printf("Desea Salir (s/n)\n");&lt;br /&gt;              if(getch()=='s'){&lt;br /&gt;			      for (i=0;i&lt;f;i++){&lt;br /&gt;			          free(tablero[i]);&lt;br /&gt;			      }&lt;br /&gt;				  free(tablero);&lt;br /&gt;                  return -1;&lt;br /&gt;			  } else continue;&lt;br /&gt;           }    &lt;br /&gt;           ni--;nj--;&lt;br /&gt;		   if(!(ni&gt;=0 &amp;&amp; ni&lt;f &amp;&amp; nj&gt;=0 &amp;&amp; nj&lt;c)){&lt;br /&gt;		   		   printf("La coordenana esta fuera de los limites\n");&lt;br /&gt;		   		   continue;&lt;br /&gt;		   }&lt;br /&gt;		   if (tablero[ni][nj]!=0){&lt;br /&gt;		   	  		printf("La coordenada colocada esta ocupada\n");	   &lt;br /&gt;		   	  		continue;&lt;br /&gt;		   }&lt;br /&gt;		   break;&lt;br /&gt;        }while (1);&lt;br /&gt;        &lt;br /&gt;        tablero[ni][nj]=1;&lt;br /&gt;        if(evaluar(tablero,f,c)==0){&lt;br /&gt;		        jugada_maquina(tablero,f,c);&lt;br /&gt;        }else {&lt;br /&gt;	    //gano el humano&lt;br /&gt;	    }        &lt;br /&gt;        puntaje=evaluar(tablero,f,c);&lt;br /&gt;        printf("puntaje: %i\n",puntaje);&lt;br /&gt;    }while(puntaje==0);&lt;br /&gt;    &lt;br /&gt;    for (i=0;i&lt;f;i++){&lt;br /&gt;        free(tablero[i]);&lt;br /&gt;    }&lt;br /&gt;    free(tablero);&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;    int salir=0;&lt;br /&gt;    do{&lt;br /&gt;&lt;br /&gt;        switch (menu()){&lt;br /&gt;               case 1: &lt;br /&gt;                    mostrar_score(-1);&lt;br /&gt;                    break;&lt;br /&gt;               case 2:&lt;br /&gt;                    mostrar_score(jugar());&lt;br /&gt;                    break;&lt;br /&gt;               case 3:&lt;br /&gt;                    salir=1;    &lt;br /&gt;                    break;&lt;br /&gt;        }&lt;br /&gt;    }while(!salir);&lt;br /&gt;&lt;br /&gt;    printf("Gracias por utilizar el programa");&lt;br /&gt;    &lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 21:11:11 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2670</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Llamar una funcion por medio de su direccion de memoria</title>
      <link>http://snippets.dzone.com/posts/show/2669</link>
      <description>Este fue el codigo implementado para llamar a una funcion que esta en la posicion 0 de memoria, muy util en sistemas embedidos.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;typedef void (*funcptr)();&lt;br /&gt;&lt;br /&gt;(*(funcptr) 0)();&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;    &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 21:09:40 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2669</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Calendario de tareas Repetitivas</title>
      <link>http://snippets.dzone.com/posts/show/2668</link>
      <description>Otro programa de calendario que muestra las tareas repetitivas semanalmente durante un tiempo determinado&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;fstream&gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;char nmeses[12][11]={ "Enero",&lt;br /&gt;	 				"Febrero",&lt;br /&gt;					"Marzo",&lt;br /&gt;					"Abril",&lt;br /&gt;					"Mayo",&lt;br /&gt;					"Junio",&lt;br /&gt;					"Julio",&lt;br /&gt;					"Agosto",&lt;br /&gt;					"Septiembre",&lt;br /&gt;					"Octubre",&lt;br /&gt;					"Noviembre",&lt;br /&gt;					"Diciembre"};&lt;br /&gt;&lt;br /&gt;char ndias[7][10]={ "Domingo",&lt;br /&gt;	 				"Lunes",&lt;br /&gt;	 				"Martes",&lt;br /&gt;					 "Miercoles",&lt;br /&gt;					 "Jueves",&lt;br /&gt;					 "Viernes",&lt;br /&gt;					 "Sabado",&lt;br /&gt;					 };&lt;br /&gt;					&lt;br /&gt;int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt;	int i,j,k,l;&lt;br /&gt;	int cont=6;&lt;br /&gt;	&lt;br /&gt;	int clases[9][200][2];&lt;br /&gt;	int contc[9]={0,0,0,0,0,0,0,0,0};&lt;br /&gt;	int semana[9][4]={ {2,2,3,-1},&lt;br /&gt;					   {2,2,4,-1},&lt;br /&gt;					   {3,5,5,-1},&lt;br /&gt;					   {3,5,5,-1},&lt;br /&gt;					   {1,4,4,-1},&lt;br /&gt;					   {4,4,5,-1},&lt;br /&gt;					   {2,4,5,-1},&lt;br /&gt;					   {1,1,3,3},&lt;br /&gt;					   {1,1,3,3}};&lt;br /&gt;	ofstream arc("clases.txt");&lt;br /&gt;		&lt;br /&gt;	for (i=0;i&lt;12;i++){&lt;br /&gt;		for (j=1;j&lt;=meses[i];j++,cont++){			&lt;br /&gt;			if (! ((i==0 &amp;&amp; j&gt;0 &amp;&amp; j&lt;24) || (i==2 &amp;&amp; j&gt;=21 &amp;&amp; j&lt;28))){&lt;br /&gt;			for (k=0;k&lt;9;k++){&lt;br /&gt;				for (l=0;l&lt;4 &amp;&amp; semana[k][l]!=-1;l++){&lt;br /&gt;					if (cont%7==semana[k][l]){&lt;br /&gt;					   clases[k][contc[k]][0]=i;&lt;br /&gt;					   clases[k][contc[k]][1]=j;&lt;br /&gt;					   contc[k]++;	&lt;br /&gt;		   			}&lt;br /&gt;				}&lt;br /&gt;			} &lt;br /&gt;			}&lt;br /&gt;		}	&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	for (i=0;i&lt;contc[4];i++){&lt;br /&gt;&lt;br /&gt;			arc&lt;&lt;i+1&lt;&lt;",7A, "&lt;&lt;clases[4][i][1]&lt;&lt;"/"&lt;&lt;clases[4][i][0]+1&lt;&lt;"/2005"&lt;&lt;endl;&lt;br /&gt;			arc&lt;&lt;i+1&lt;&lt;",7B, "&lt;&lt;clases[5][i][1]&lt;&lt;"/"&lt;&lt;clases[5][i][0]+1&lt;&lt;"/2005"&lt;&lt;endl;&lt;br /&gt;			arc&lt;&lt;i+1&lt;&lt;",7C, "&lt;&lt;clases[6][i][1]&lt;&lt;"/"&lt;&lt;clases[6][i][0]+1&lt;&lt;"/2005"&lt;&lt;endl&lt;&lt;endl;									&lt;br /&gt;	}&lt;br /&gt;	arc.close();&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 21:06:31 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2668</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>ParBegin en C++ .net</title>
      <link>http://snippets.dzone.com/posts/show/2667</link>
      <description>Codigo para crear la funcion ParBegin cuyo objetivo es obtener como parametros cualquier cantidad de funciones y ejecutarlas de forma paralela, cada una de ellas en un hilo independiente.&lt;br /&gt;&lt;br /&gt;El objetivo de esta implementacion es realizar el mismo codigo en C++ manejado esto conlleva a algunas restricciones como la imposibilidad de usar ParBegin(...) debido a que segun el documento de Migration_guide de Microsoft dentro de Visual Studio .NET 2003, la utilizacion de los 3 puntos para implementar argumentos variables dentro de una funcion genera inmediatamente que esta funcion sea no manejada y presentan la solucion dentro del mismo documento, documentacion sobre esto tambien se encuentra en el documento managedextensionsspec.doc en la pagina 35.&lt;br /&gt;&lt;br /&gt;El uso de punteros dentro de C++ manejado no es posible, por lo tanto para pasar como argumento de una funcion, otra funcion, lo que se debe hacer es generar un delegate, pero con estoy hay un peque&#241;o impedimento, y es que las funciones deben hacer parte de una clase, osea que no se pueden crear delegates a funciones sino a metodos.&lt;br /&gt;&lt;br /&gt;Con las 2 caracteristicas anteriores en mente mostramos el codigo para de ParBegin para Visual C++ Manejado&lt;br /&gt;&lt;br /&gt;Este codigo pertenece a John Edgar Congote y puede ser modificado, copiado, distribuido, ejecutado, visualizado o manipulado por cualquier medio sin previa autorizacion del autor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;#include "stdafx.h"&lt;br /&gt;&lt;br /&gt;#using &lt;mscorlib.dll&gt;&lt;br /&gt;&lt;br /&gt;using namespace System;&lt;br /&gt;using namespace System::Threading;&lt;br /&gt;&lt;br /&gt;public __gc class MiHilo{&lt;br /&gt;public:&lt;br /&gt;	MiHilo(){&lt;br /&gt;	&lt;br /&gt;	};&lt;br /&gt;&lt;br /&gt;	~MiHilo(){&lt;br /&gt;	&lt;br /&gt;	};&lt;br /&gt;&lt;br /&gt;	static void funcionHilo(){&lt;br /&gt;		Console::WriteLine(S"Este es un hilo....");&lt;br /&gt;		Thread::Sleep(1000);	//Bloquea el hilo durante 1 segundo.&lt;br /&gt;		Console::WriteLine(S"Saliendo del hilo...");&lt;br /&gt;	}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void ParBegin([ParamArray] ThreadStart * args[]){&lt;br /&gt;	int cont;&lt;br /&gt;	for (cont=0;cont&lt;args-&gt;Length;cont++){		&lt;br /&gt;		Thread *oThread = new Thread(args[cont]);&lt;br /&gt;		oThread-&gt;Start();&lt;br /&gt;	}	&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int _tmain(void)&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;	/*&lt;br /&gt;	&lt;br /&gt;	Los argumentos que se pasan a la funcion es el arreglo de delegados&lt;br /&gt;	que los hilos van a ejecutar.&lt;br /&gt;&lt;br /&gt;	Hay que recordar que ThreadStart es un delegate definido en .NET&lt;br /&gt;&lt;br /&gt;	*/&lt;br /&gt;	&lt;br /&gt;	ThreadStart * args[] = {new ThreadStart(0,&amp;MiHilo::funcionHilo),new ThreadStart(0,&amp;MiHilo::funcionHilo),new ThreadStart(0,&amp;MiHilo::funcionHilo)};&lt;br /&gt;&lt;br /&gt;	Console::WriteLine(S"Entrando a ParBegin");&lt;br /&gt;	ParBegin(args);&lt;br /&gt;	Console::WriteLine(S"Saliendo de ParBegin");&lt;br /&gt;	Thread::Sleep(2000); //Durmiendo 2 Segundos&lt;br /&gt;	Console::WriteLine(S"Finalizando Programa");&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 20:59:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2667</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Ejemplo en C de un motor de scripting o maquina virtual</title>
      <link>http://snippets.dzone.com/posts/show/2666</link>
      <description>El codigo es una implementacion de un lenguaje de scripting sin lenguaje, por lo tanto queda limitado a la interpretacion de codigos por lo que se parece mas a una maquina virtual&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;typedef struct _operation{&lt;br /&gt;        unsigned int op;&lt;br /&gt;        int arg1;&lt;br /&gt;        int arg2;&lt;br /&gt;        int arg3;&lt;br /&gt;} operation;&lt;br /&gt;&lt;br /&gt;typedef struct _scriptEngine{&lt;br /&gt;        int var[255];&lt;br /&gt;        int ip;&lt;br /&gt;        int halt;&lt;br /&gt;        operation code[255];        &lt;br /&gt;} scriptEngine;&lt;br /&gt;&lt;br /&gt;void operation_run(const operation *p, scriptEngine *s){&lt;br /&gt;     switch (p-&gt;op){&lt;br /&gt;            case 0: //add&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = s-&gt;var[p-&gt;arg2]+s-&gt;var[p-&gt;arg3];&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando suma\n");&lt;br /&gt;                 break;&lt;br /&gt;            case 1: //sup&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = s-&gt;var[p-&gt;arg2]-s-&gt;var[p-&gt;arg3];&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando resta\n");&lt;br /&gt;                 break;&lt;br /&gt;            case 3: //mul&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = s-&gt;var[p-&gt;arg2]*s-&gt;var[p-&gt;arg3];&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando multiplicacion\n");                 &lt;br /&gt;                 break;&lt;br /&gt;            case 4: //div&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = s-&gt;var[p-&gt;arg2]/s-&gt;var[p-&gt;arg3];&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando division\n");                 &lt;br /&gt;                 break;&lt;br /&gt;            case 5: //mod&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = s-&gt;var[p-&gt;arg2]%s-&gt;var[p-&gt;arg3];&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando modulo\n");                 &lt;br /&gt;                 break;&lt;br /&gt;            case 6: //set&lt;br /&gt;                 s-&gt;var[p-&gt;arg1] = p-&gt;arg2;&lt;br /&gt;                 s-&gt;ip++;&lt;br /&gt;                 printf("Realizando asignacion\n");                 &lt;br /&gt;                 break;&lt;br /&gt;            case 7: //halt&lt;br /&gt;                 s-&gt;halt=1;&lt;br /&gt;                 break;&lt;br /&gt;            case 8: //jump&lt;br /&gt;                 s-&gt;ip=s-&gt;var[p-&gt;arg1];&lt;br /&gt;                 break;                 &lt;br /&gt;            default:&lt;br /&gt;                 break;            &lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;scriptEngine* scriptEngine_new(){&lt;br /&gt;              scriptEngine *new_script;&lt;br /&gt;              new_script = (scriptEngine*) malloc(sizeof(scriptEngine));&lt;br /&gt;              new_script-&gt;ip=0;&lt;br /&gt;              new_script-&gt;halt=0;              &lt;br /&gt;              return new_script;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void scriptEngine_delete(scriptEngine *script){&lt;br /&gt;     free(script);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void scriptEngine_run(scriptEngine *script){&lt;br /&gt;    &lt;br /&gt;     int j;&lt;br /&gt;     &lt;br /&gt;     while(script-&gt;halt==0){&lt;br /&gt;         printf("Inicio de operacion\n");&lt;br /&gt;         operation_run(&amp;(script-&gt;code[script-&gt;ip]),script);&lt;br /&gt;         printf("Estado de la maquina:\n");&lt;br /&gt;         for (j=0;j&lt;5;j++){&lt;br /&gt;             printf("Posicion de la memoria %i: %i\n",j,script-&gt;var[j]);&lt;br /&gt;         }         &lt;br /&gt;     }     &lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;void scriptEngine_create_example(scriptEngine *script, int example){&lt;br /&gt;     switch (example){&lt;br /&gt;            case 0:&lt;br /&gt;                     script-&gt;code[0].op=6; //set&lt;br /&gt;                     script-&gt;code[0].arg1=0;&lt;br /&gt;                     script-&gt;code[0].arg2=10;&lt;br /&gt;                     &lt;br /&gt;                     script-&gt;code[1].op=6; //set&lt;br /&gt;                     script-&gt;code[1].arg1=1;&lt;br /&gt;                     script-&gt;code[1].arg2=20;&lt;br /&gt;                     &lt;br /&gt;                     script-&gt;code[2].op=0; //set&lt;br /&gt;                     script-&gt;code[2].arg1=2;&lt;br /&gt;                     script-&gt;code[2].arg2=0;     &lt;br /&gt;                     script-&gt;code[2].arg3=1;    &lt;br /&gt;                     &lt;br /&gt;                     script-&gt;code[3].op=7;&lt;br /&gt;                     break;&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char **argv){&lt;br /&gt;    &lt;br /&gt;    scriptEngine* script;&lt;br /&gt;    script = scriptEngine_new();&lt;br /&gt;    scriptEngine_create_example(script,0);&lt;br /&gt;    scriptEngine_run(script);&lt;br /&gt;    scriptEngine_delete(script);&lt;br /&gt;    &lt;br /&gt;    system("PAUSE");&lt;br /&gt;    return 0;    &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 20:52:09 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2666</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
    <item>
      <title>Argumentos variables en C</title>
      <link>http://snippets.dzone.com/posts/show/2665</link>
      <description>Este ejemplo muestra la utilizacion de argumentos variables en una funcion en el lenguaje c&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// vararg.cpp: define el punto de entrada de la aplicaci&#243;n de consola.&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;#include &lt;stdarg.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int&lt;br /&gt;add_em_up (int count,...)&lt;br /&gt;{&lt;br /&gt;  va_list ap;&lt;br /&gt;  int i, sum;&lt;br /&gt;&lt;br /&gt;  va_start (ap, count);         /* Initialize the argument list. */&lt;br /&gt;&lt;br /&gt;  sum = 0;&lt;br /&gt;  for (i = 0; i &lt; count; i++)&lt;br /&gt;    sum += va_arg (ap, int);    /* Get the next argument value. */&lt;br /&gt;&lt;br /&gt;  va_end (ap);                  /* Clean up. */&lt;br /&gt;  return sum;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int&lt;br /&gt;main (void)&lt;br /&gt;{&lt;br /&gt;  /* This call prints 16. */&lt;br /&gt;  printf ("%d\n", add_em_up (3, 5, 5, 6));&lt;br /&gt;&lt;br /&gt;  /* This call prints 55. */&lt;br /&gt;  printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 22 Sep 2006 20:41:50 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2665</guid>
      <author>jcongote (John Edgar Congote Calle)</author>
    </item>
  </channel>
</rss>
