PDA

Ver la Versión Completa Con Imagenes : Necesito una ayudita con un programa


Ayudante De Santa
06-11-2015, 22:19:08
Los mejores licores
tito millo
29-04-2010, 19:15:02
Holap que tal bueno, me dicen tito y soy de aca de Ecuador, estoy estudiando sistemas y pues me gustaria que me den una ayudita, lo que pasa es que quiero hacer un programa basado en la teoria de grafos, pero el problema es que no se por donde empezar, entonces quisiera que me den una ayuda.
Bueno ya saben que en este caso la teoria trata mas o menos de encontrar el camino mas facil para llegar a algo bueno yo quiero hacer a la inversa y pues podria ser algo como en un casino que estan mas o menos diseñados para que las personas no se ubiquen bien y asi gasten mas dinero en juegos.
Quiero hacer lo mismo pero usando un super como ejemplo.
Podriamos decir que el usuario ingresa los productos que necesita en el programa y este traza la ruta que debe seguir, la mas larga en la cual hay mas cosas que le van a llamar la atencion al cliente asi este las comprar hasta llegar a lo que realmente busca
Espero que me puedan ayudar

Saludos
Tito Millo

Ayudante De Santa
06-11-2015, 22:19:08
Los mejores licores
☠Xavi Camorra☠
30-04-2010, 08:46:49
#include <stdio.h>
#include <conio.h>


#define MN 100 /* Número máximo de vertices*/
#define infinito 32767

/*Sea*/
int w[MN][MN],q[MN][MN];
unsigned char i,j;
int N;

int min(int a,int b)
{
int r;
if ( a<=b ) r=a ; else r=b;
return(r);
}

void ceros_grafo(int g[MN][MN])
{ unsigned char i,j;

for (i=1;i< N+1;i++ )
for (j=1; j< N+1;j++ )
g[i][j]=0;
}

void camino_min_a( )
{
unsigned char i,k,j;
int qikqkj;

/*Genera nueva matriz de costos q donde nodos inconexos cuestan infinito*/
ceros_grafo(q);
for (i=1;i< N+1 ;i++)
for (j=1; j< N+1;j++ )
if ( (w[i][j]==0) ) q[i][j] = infinito;
else q[i][j]=w[i][j];
/*Busca los costos m¡nimos*/
for (k=1; k< N+1;k++ )
for (i=1 ;i< N+1;i++ )
for (j=1;j< N+1;j++ )
if ( (q[i][k] != infinito) && (q[k][j] != infinito)
) q[i][j] = min(q[i][j],q[i][k] + q[k][j]);

};

void camino_min_sc(int w[MN][MN], int q[MN][MN] )
{ unsigned char i,k,j;
int qikqkj;

/*Genera nueva matriz de costos q donde nodos inconexos cuestan infinito*/
ceros_grafo(q);
for (i=1; i < N+1 ;i++ )
for (j=1; j< N+1;j++ )
if ( (w[i][j]==0) ) q[i][j] = infinito;
else q[i][j]=w[i][j];
/*Busca los costos m¡nimos*/
for (k=1; k< N+1;k++)
for (i=1; i < N+1;i++ )
for (j=1; j< N+1;j++ )
if ( (i!=j) && ((q[i][k] != infinito) && (q[k][j] != infinito))
) q[i][j] = min(q[i][j],q[i][k] + q[k][j]);
};

void muestra_matriz_grafo(int g[MN][MN])
{
unsigned char i,j,Y;

Y = wherey();
for (i=1; i< N+1;i++ )
for (j=1;j < N+1;j++ ) {
gotoxy(5 + j * 6, Y + i);
if ( (g[i][j] != infinito) ) printf(\"%i\",g[i][j])
; else printf(\"ª\");
};
printf(\"\\n\");
}

/* RUTINA PRINCIPAL */
/* ******************************************** */
void main()
{ clrscr();
N=0;
printf(\"Indique:\\n\");
do {
printf(\"Numero de Nodos [1..7]:\");
scanf(\"%i\",&N);
if ( (N < 0) || (N > MN) ) N=0;
} while ( N==0 );

/* Llenado de Matriz de costos w*/

for (i=1;i<N+1; i++ ) {
printf(\"Desde el nodo %i \\n\", i);
for (j=1; j< N+1;j++)
if ( (i!=j) )
{
printf(\"Costo [ %i ÄÄ> %i ]: \",i,j);
scanf(\"%i\",&w[i][j]);
}
else w[i][j]=0;
printf(\"\\n\");
};

/* Calcula los caminos minimos de w y los deja en q*/
clrscr();
printf(\"Matriz de costos original.\\n\");
muestra_matriz_grafo(w);

printf(\"Matriz de costos mínimos.\\n\");
camino_min_a(w,q);
muestra_matriz_grafo(q);

getchar();
clrscr();
printf(\"Matriz de costos original.\\n\");
muestra_matriz_grafo(w);

printf(\"Caminos mínimos sin ciclos.\\n\");
camino_min_sc(w,q);
muestra_matriz_grafo(q);
getch();
}

= no busque siempre que le hagan programas, espero que esto le sirva :-/

tito millo
30-04-2010, 09:30:02
Gracias amigo,bueno yo no keria en realidad el codigo fuente lo que necesitaba era mas o menos una guia de como hacerlo pero gracias con tu codigo ya tengo la guia sificiente muchas gracias

Saludos
Tito Millo

disatoba
25-05-2010, 16:10:27
Hola,

Si aún quieres saber algo más de teoría de grafos y aplicarla te vendría bien este libro: http://agamenon.uniandes.edu.co/~rgarcia/Cursos/DisAlgoritmos/Libros/Springer.Verlag,.Programming.Challenges.(2003).KB.pdf es un libro para programación competitiva te recomiendo mucho los dos capitulos de teoría de grafos.

Saludos

ARICARRARO
14-12-2010, 15:10:16
Hola,

Si aún quieres saber algo más de teoría de grafos y aplicarla te vendría bien este libro: http://agamenon.uniandes.edu.co/~rgarcia/Cursos/DisAlgoritmos/Libros/Springer.Verlag,.Programming.Challenges.(2003).KB.pdf (http://agamenon.uniandes.edu.co/%7Ergarcia/Cursos/DisAlgoritmos/Libros/Springer.Verlag,.Programming.Challenges.%282003%29.KB.pdf) es un libro para programación competitiva te recomiendo mucho los dos capitulos de teoría de grafos.

Saludos
Tu link tiene un error

ve estehttp://acm.cs.buap.mx/downloads/Programming_Challenges.pdf