Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Deivbid en 23 Noviembre 2015, 02:27 am



Título: Ayuda para usar Algoritmo de Warshall
Publicado por: Deivbid en 23 Noviembre 2015, 02:27 am
Muy Buenas a Todos Disculpen Necesito ayuda con este codigo en lenguae C , mi intencion es crear una matriz a la cual, En los espacios que yo quiera , le pueda introducir un numero , esto es una forma de hacer una matriz de adyacencia con los pesos de los nodos/arcos de un grafo con intencion de hacer pasar esa matriz por un algoritmo de washall , EL PROBLEMA: intento llenar la matriz en los puntos donde quiero como ven en el codigo pero lo hace en lugares erroneos .... Que debo Hacer? gracias de antemano , Arriba la programacion :D

Código:

#include <stdio.h>


void Imprimir(int Nvertices,int Matriz[Nvertices][Nvertices]){
   
   int i,j;
   
   for(i=0;i<=Nvertices;i++){
      for(j=0;j<=Nvertices;j++){
         printf("%d\t",Matriz[j]);
         
                         }
                         printf("\n");
                     }
                     printf("\n\n");
      }
      
void PrepaMatriz(int Nvertices,int Madyacencia[Nvertices][Nvertices]){
   
   int i,j;
   for(i=0;i<Nvertices+1;i++){
      for(j=0;j<Nvertices+1;j++){
         Madyacencia[j] = 0;
      }
   }
}
   


int main(){
   
   int i,Nvertices,Fila,Columna,Narcos,peso;
   
   printf("\nBienvenido Deivbid");
   printf("\nCuantos Vertices tiene tu Matriz?: ");
   scanf("%d",&Nvertices);
   
   int Madyacencia[Nvertices+1][Nvertices+1];
   
   
   
   PrepaMatriz(Nvertices,Madyacencia);
   
   Imprimir(Nvertices,Madyacencia);
   
   
   
   
   printf("\nCuantos Arcos Tiene?: ");
   scanf("%d",&Narcos);
                     
      for(i=1;i<=Narcos;i++){
   printf("\nDonde se comunican?(poner F,C): " );
   scanf("%d %d",&Fila,&Columna);
   
   if(Fila>Nvertices || Columna>Nvertices){
      printf("\nError , por ahi no se puede :D");
      scanf("%d %d",&Fila,&Columna);}
   
     printf("\nCual es su peso?: ");
     scanf("%d",&peso);
    
     Madyacencia[Fila][Columna]=peso;
    
    
                     }
            
   Imprimir(Nvertices,Madyacencia);
      
   return(0);
}


Título: Re: Ayuda para usar Algoritmo de Warshall
Publicado por: 0xFer en 23 Noviembre 2015, 02:44 am
Utiliza la etiqueta Geshi para subir tu código, de lo contrario se pierden algunas cosas del código.

Para crear una matriz 4x4 ( una de 4 Vertices) puede usar lo siguiente;

Código
  1. int Madyacencia[4][4];
Código
  1. int NVectores = 4;
  2. int Madyacencia[NVectores][NVectores];

observa que no es necesario agregar el +1.

más simple es todavía inicializar sus valores( o recorrerlos):

Código
  1. int i,j;
  2. for(i = 0; i < NVertices;i++)
  3.    for(j = 0; j < NVertices;j++)
  4.        Madyacencia[i][j] = 0;

también puedes hacerlo con menset; http://c.conclase.net/librerias/?ansifun=memset

lo quieres imprimir?;
Código
  1. int i,j;
  2. for(i = 0; i < NVertices;i++)
  3.    for(j = 0; j < NVertices;j++)
  4.        printf(Madyacencia[i][j]);

también te sirve:

Código
  1. printf(Madyacencia[Fila][Columna]);
Código
  1. Madyacencia[Fila][Columna] = peso;




Título: Re: Ayuda para usar Algoritmo de Warshall
Publicado por: Deivbid en 23 Noviembre 2015, 03:17 am
Vale lo Intentare, Lo que sucede es que la matriz es de tantos vertices haya en un grafo , y me lo dan en un archivo , es decir , nose de cuento sera la matriz por eso debe ser con valores introducidos manualmente , sino los pusira como tu dices , Gracias amigo ya vuelvo a publicar el tema